Files
mileage-bonus/.claude_plans/tingly-mixing-wave.md
kkfluous 573f8397a6 chore: 添加输入输出文件 + .claude记忆和计划
输入文件:
- 租赁任务考核_2026年{1,2,3}月.xlsx (考核源数据)
- {1,2}月.xlsx (客户盈亏表)
- 车辆里程考核与奖金发放规则(V.1.2).docx

输出文件:
- 里程任务考核_{1,2,3}月核算.xlsx (月度核算结果)
- 里程任务考核_Q1汇总.xlsx (含车辆台账)
- 3月客户盈亏表(待填写).xlsx (模版)

.claude_memory: 项目记忆(规则/偏好/架构/测试车辆)
.claude_plans: 历次计划文件

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 14:09:24 +08:00

1.9 KiB
Raw Blame History

两项修复:结转不依赖考核记录 + 补发查对应月盈亏

Context

两个bug需要修复

  1. 1月有结转但2月无考核记录 → 结转丢失当前只遍历G[2]有记录的车)
  2. 3月补发1月的奖金 → 应查1月盈亏当前查的是3月盈亏

修改1结转不依赖考核记录

规则

  • 1月多跑够结转2月即使没考核记录也发放结转奖金完整月
  • 无考核记录时:考核里程=满月目标如3000km实际里程=0视为消耗了一个月目标
  • 无客户关联(因无考核记录)→ 不查盈亏,正常发放

修改 calc_engine.py

calc_feb() 中,遍历完 G[2].items() 后,额外遍历 G[1] 中有结转但不在 G[2] 中的key

for k, g1 in G1.items():
    if k not in G2 and g1['可结转'] >= 1:
        # 创建虚拟的2月group考核里程=满月目标,实际=0
        # 发放结转奖金(完整月)
        # 结转剩余月数 -= 1传递给3月

calc_mar() 同理:遍历 G[2] 中有结转但不在 G[3] 中的key。

修改 excel_writer.py

  • build_payment_records无客户关联的结转loss_status设为'否'(正常发放)

修改2补发查对应月盈亏

规则

发放类型 查哪月盈亏
当月达标/累计补发/结转 当月
补发1月 1月
补发2月 2月

修改 main.py

  • 将所有月份的 loss_data 都传入 build_payment_records(不只当月的)

修改 excel_writer.py

  • build_payment_records 接收 all_loss_data={1:..., 2:..., 3:...}
  • 根据发放类型确定查哪个月的盈亏表
  • 奖金发放记录表新增列"盈亏查询月",标明查的是哪个月的盈亏

验证

  • 找一辆1月有结转但2月无记录的车确认2月正常发放结转
  • 找一辆3月补发1月的车确认查的是1月盈亏而非3月
  • 金额总数合理