为订单工具增加可追查的交付入口|学员任务书
从自己的昨日项目继续
起点:本人规则、模型、价格快照与累计订单数据。领取 student/W01-D05 当日增量,查看文件再合并,禁止覆盖本人已完成代码。教师只给合同、分段小例、TODO和检查工具;完整实现不在学生包。
商城任务与知识用途
本日完成:可运行CLI、异常分类与装饰器、pytest测试、同伴复现记录。已有while/import入口复用、装饰器/@/wraps/参数转发、自定义异常/传播/raise from、logging、pytest/assert/raises/tmp_path、CLI职责与交付 都用于这一任务;使用位置及小例见 课堂课件。测试代码属于提供的检查工具,不要求在机制首讲前独立重写测试框架。
分段待办
- 不领取重写后的规则答案。将D05增量文件合并到本人项目,保留D03 order_rules.py及D04 models.py;缺少前日产物先补核心检查。
- 在报价入口实现audit_call:参数、返回值与异常保持,日志只记录必要事件;用wraps保留名称。
- 实现OrderInputError与SnapshotError,保留原因链;错误输入由CLI说明,程序缺陷不能伪装成成功。
- 接入src/order_delivery.py菜单,复用已完成规则与模型;继续保留累计项目原创建、查询、支付、取消入口。
- 安装或复用pytest==9.1.1。编写正常、数量、状态、快照、装饰器五组测试;每个测试说明保护哪条风险。
- 故意删包装return或先改状态后校验,确认对应测试变红;修复后跑全量。
- 同伴从README在自己的干净副本运行,不让作者代操作;记录卡点并在课内修复。
运行和核对
从自己的项目根目录、当前选中Python解释器运行:
python -m src.order_delivery
python -m pytest tests -q| 场景 | 预期 |
|---|---|
| 报价2 / 报价0 | 258.00 / 明确拒绝,下一次仍可报价 |
| 装饰前后 | 相同返回值、原函数名和异常语义 |
| 模拟支付后取消 | 拒绝且仍PAID |
| 损坏快照 | SnapshotError含cause,原文件不变 |
| 被包装函数TypeError | 程序缺陷继续暴露 |
| 保存、退出、新进程恢复 | 快照字段与金额一致 |
| 同伴复现 | README步骤足够且记录真实缺口 |
个人变化与交付
先在不看参考实现的情况下预测结果,再运行;记录输入、预期、实际、修复及原样本回归。提交代码、固定Git提交、一次故障定位、一次AI差异审查和同伴复现记录。只交全绿截图或生成代码而不能解释,不构成通过。
核心:完成本日分段待办和验收表。进阶:自行换一条同规模业务输入或故障。挑战:减少重复或改进说明,但仍须守住当前合同;不靠提前引入框架、数据库或消息队列替代基础练习。全部必做在课堂实践时段完成,课后复习只整理已做结果。
下一日:W02 从相同金额、状态、快照合同迁移数据库和Web接口;本周无真实支付或生产数据。
累计菜单还需7创建、8按ID查询、9保存全部订单、10恢复全部订单。新增两笔后保存,另次运行恢复并按ID查到相同状态/金额;坏文件恢复失败时当前订单列表保持不变。