v0.10.1 — 可靠提交与结果重查
leetcode-local-cli 0.10.1 将提交过程改为有明确总预算和结构化结果的可靠流程,并新增已有提交的单次重查命令。CLI 同时完成应用层分离,为后续功能保持清晰依赖方向。
提交可靠性
lc submit取得 Submission ID 后默认等待 30 秒,可通过--wait-timeout设置大于 0 的有限总秒数。- 判题查询使用单调时钟总预算,请求超时和休眠都不会越过预算。
- 初始提交 POST 永不自动重试,避免网络状态不明时产生重复提交。
- 判题 GET 只对网络超时、网络错误、429 和 5xx 做有限重试,并遵守合法的
Retry-After。 - Accepted 返回退出码 0;其他判题、等待超时和查询失败返回 1,同时保留 Submission ID。
结果重查
- 新增
lc check <Submission ID>,只查询一次已有提交,不重新发送代码,也不持续占用终端。 - 已完成判题时展示状态、运行时间、内存和用例数量;仍在判题时提示稍后重试。
- Accepted 返回 0;Pending、非 Accepted 和查询失败返回 1;非法 ID 返回 2。
- 兼容 LeetCode 中文站当前同时返回原始
memory与展示字段status_memory的响应结构。
架构与维护
- CLI 形成
cli.py → commands/ → use_cases/ → core modules的单向依赖。 cli.py只负责应用创建和命令注册,命令层负责终端适配,用例层负责业务编排。- 提交检查、终态、超时、Pending 和查询失败使用不可变结构化结果,不再传播裸字典或
None。 - 维护文档按用户说明、项目状态、架构、产品边界、安全和技术决策拆分职责并完成轻量化。
- CLI 错误输出测试先移除 ANSI 样式再验证公开文本,保证本地与三平台 CI 行为一致。
验证
- Windows 通过 Ruff、Pyright、333 passed/13 skipped 的完整测试、wheel/sdist 构建及两种产物的隔离安装 smoke test。
- 在维护者明确授权下,随机选择 10 道免费 Easy 题完成真实提交,10 次均为 Accepted;随后对全部 Submission ID 执行
lc check,退出码均为 0。 - 真实验收没有输出 Cookie,测试结束后恢复了原有空
solution.py。
兼容性说明
- 当前仍只正式支持 LeetCode 中文站、Python3、单默认工作区和单个
solution.py。 - Session 继续以明文 JSON 保存在默认工作区,不得提交、同步或上传。