"""独立命令模拟提交、审批和恢复；所有身份与订单均为教学数据。"""
import argparse
import json
from pathlib import Path
from runtime_store import RuntimeStore


def main():
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("command", choices=["submit", "approve", "reject", "advance", "status", "events"])
    parser.add_argument("task_id")
    parser.add_argument("--data-dir", type=Path, default=Path(".runtime-demo"))
    parser.add_argument("--amount-minor", type=int, default=29900)
    parser.add_argument("--decision-id", default="decision-1")
    parser.add_argument("--after", type=int, default=0)
    parser.add_argument("--lose-response", action="store_true")
    args = parser.parse_args()
    store = RuntimeStore(args.data_dir)
    if args.command == "submit":
        result = store.submit(args.task_id, args.amount_minor)
    elif args.command in {"approve", "reject"}:
        # 用固定命令映射布尔值，避免 bool("false") 被解释成 True。
        result = store.decide(args.task_id, args.command == "approve", args.decision_id)
    elif args.command == "advance":
        result = store.advance(args.task_id, lose_response=args.lose_response)
    elif args.command == "events":
        result = store.events(args.task_id, args.after)
    else:
        result = store.get(args.task_id)
    print(json.dumps(result, ensure_ascii=False, indent=2))


if __name__ == "__main__":
    main()
