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

52 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 两项修复:结转不依赖考核记录 + 补发查对应月盈亏
## 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月
- 金额总数合理