把订单规则变成可复用报价函数|学员任务书

课前保留判断:课前预习;课后复验:课后复习。

从自己的昨日项目继续

起点:本人 D02 的单笔与批量规则、状态检查。领取 student/W01-D03 当日增量,查看文件再合并,禁止覆盖本人已完成代码。教师只给合同、分段小例、TODO和检查工具;完整实现不在学生包。

商城任务与知识用途

本日完成:src/order_rules.py、src/promotions.py、回归检查与优惠试算。def/参数/return/None、位置与关键字/默认参数/*args/**kwargs、作用域/副作用、可变默认参数、类型提示、模块包/import、函数对象/lambda/高阶函数/闭包、assert 都用于这一任务;使用位置及小例见 课堂课件。测试代码属于提供的检查工具,不要求在机制首讲前独立重写测试框架。

分段待办

  1. 用本人 D02 的正常、中间坏记录、非法取消保存基线;只复制记录,不复制教师实现。
  2. 先提取 calculate_line_total_yuan、pay_order、cancel_order,运行现有 checks/regression_checks.py;每次只替换一个重复职责。
  3. 在同一项目补 src/init.py 空文件和 src/promotions.py TODO。模块导入不读取键盘、不启动菜单。
  4. 实现 make_threshold_discount 与 quote;quote 调用原金额函数,strategy作为关键字参数,满减不改商品与历史订单。
  5. 校验门槛、减额、优惠后金额;不得出现负金额或优惠后涨价。以Decimal全程计算。
  6. 用None默认参数修复备注串线,比较“省略参数”和“明确共享列表”。
  7. 独立改变活动门槛与减额;用lambda只做方案排序,并用正常/边界/失败证明行为。

运行和核对

从自己的项目根目录、当前选中Python解释器运行:

python checks/regression_checks.py
python checks/check_promotions.py
场景预期
129.00×2,无优惠258.00
满200减20,原价258.00238.00
原价199.99 / 200.00199.99 / 180.00
满300减30与满200减20交替调用配置互不污染
减额大于门槛明确拒绝
连续省略notes调用备注列表独立
数量0、未知商品、非法取消继承D02拒绝且无半更新

个人变化与交付

先在不看参考实现的情况下预测结果,再运行;记录输入、预期、实际、修复及原样本回归。提交代码、固定Git提交、一次故障定位、一次AI差异审查和同伴复现记录。只交全绿截图或生成代码而不能解释,不构成通过。

核心:完成本日分段待办和验收表。进阶:自行换一条同规模业务输入或故障。挑战:减少重复或改进说明,但仍须守住当前合同;不靠提前引入框架、数据库或消息队列替代基础练习。全部必做在课堂实践时段完成,课后复习只整理已做结果。

下一日:D04 将规则用于模型构造、价格快照和JSON恢复。