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>
This commit is contained in:
kkfluous
2026-04-07 14:09:24 +08:00
parent da487c41d4
commit 573f8397a6
32 changed files with 3491 additions and 0 deletions

6
.claude_memory/MEMORY.md Normal file
View File

@@ -0,0 +1,6 @@
- [用户角色](user_role.md) — 负责车辆租赁里程考核绩效核算,非技术背景,重视可读性
- [输出风格偏好](feedback_style.md) — 对账单风格,人话说明,部门前缀,交替行色
- [工作流程偏好](feedback_workflow.md) — 边讨论边改用具体case验证高频重新生成
- [里程考核规则](project_rules.md) — 完整计算规则:达标/结转/补发/累计/亏损筛选
- [项目架构](project_architecture.md) — 3文件架构18 sheets数据流
- [关键测试车辆](reference_vehicles.md) — 7辆典型车用于验证各类边界场景

View File

@@ -0,0 +1,17 @@
---
name: 输出风格偏好
description: 用户对Excel输出、代码风格、沟通方式的偏好
type: feedback
---
Excel输出要对账单风格不要技术化的判断链。每辆车的发放原因用一句话+关键数字说清楚。
**Why:** 输出给业务员和管理层看,他们不懂技术术语。
**How to apply:**
- 发放说明列用人话:如"1月多跑9578≥3000结转(完整月奖金)"
- 不要用"cum_qualified"、"floor(excess/target)"等技术词
- 每个数字要有来源可追溯
- 业务员sheet用部门前缀命名如"二部-刘念念"
- 车辆追踪表多人用独立行+合并单元格,不挤在一个单元格
- 交替行底色(白/浅蓝)区分不同车辆

View File

@@ -0,0 +1,16 @@
---
name: 工作流程偏好
description: 用户对开发流程、沟通方式的偏好
type: feedback
---
用户喜欢边讨论边改通过具体数据case推动规则确认。不喜欢一次性大规划后再实现。
**Why:** 规则有很多边界情况,只有看到实际数据才能确认逻辑对不对。
**How to apply:**
- 每次改完立即生成Excel让用户验证
- 用具体车辆如粤AGP5797、粤AGP5769举例说明
- 修改后立即"重新生成"是高频操作,保持脚本可随时运行
- 用git tag标记版本V1.0.0 → V3.2.0),方便回退
- 用户说"重新生成"就直接 rm + python3 main.py不需要确认

View File

@@ -0,0 +1,37 @@
---
name: 项目架构和文件结构
description: 代码架构、输入输出文件、Excel sheet结构
type: project
---
## 代码架构V3.2.0
- `calc_engine.py` - 计算引擎:规则/读取/分组/结转/补发/累计/亏损读取
- `excel_writer.py` - Excel输出所有sheet生成函数
- `main.py` - 入口按月循环生成独立Excel文件
- `generate_q1_summary.py` - 旧版单文件脚本(已被拆分,保留)
## 输入文件
- `租赁任务考核_2026年{1,2,3}月.xlsx` - 月度考核源数据
- `{1,2}月.xlsx` - 客户盈亏表3月待补充
- `里程任务考核_Q1汇总.xlsx` - 全量492辆车辆台账来源
## 输出文件
每月一个独立Excel18 sheets
1. 考核奖励规则
2. 里程明细X月
3. X月计算过程
4. 车辆考核追踪全量492辆多人拆行+合并单元格+交替色)
5. X月奖金发放记录逐条明细+亏损筛选)
6. X月汇总从发放记录生成考核应发→亏损筛选→最终发放
7-18. 业务员sheets × 12对账单风格+发放说明)
## 数据流
```
源数据 → 里程明细(逐条达标) → 计算过程(分组+判断链)
→ 车辆考核追踪(考核维度) → 奖金发放记录(+亏损筛选)
→ 月汇总(从发放记录SUM) → 业务员sheets
```
**Why:** 从单文件重构为模块化,支持按月独立核算和多维度展示。
**How to apply:** 新功能加在对应模块中。计算逻辑改calc_engine展示改excel_writer流程改main。

View File

@@ -0,0 +1,53 @@
---
name: 里程考核绩效核算规则
description: 车辆里程考核的完整计算规则,经过多次讨论确认
type: project
---
## 核心规则V1.2规则文档 + 讨论确认)
### 达标判断
- 每条考核记录独立判断达标(不合并同车同人多条记录)
- 达标条件:实际行驶里程 ≥ 应考核里程
### 奖金计算
- 奖金 = 考核天数/当月天数 × 月奖励金额(始终按天折算)
- 不存在"超过整月目标就发全月"的特殊情况
### 结转(多跑)
- floor(多跑里程/月度目标里程) ≥ 1 → 结转,发完整月奖金
- 结转占用当月名额,不叠加当月奖励
- 结转不依赖目标月的考核记录(无记录也发,视为消耗一个月目标)
- 无客户关联的结转不查盈亏,正常发放
### 补发
- 累计全部达标后才补发严格版cum_actual ≥ cum_target for ALL months
- 不是"覆盖到哪补到哪"的progressive模式
- 亏损月被拦截的奖金永久不发,不补发
### 累计补发当月
- 当月未达标 + 无结转 + 累计全部达标 → 按天折算发当月奖金
### 亏损筛选
- 按客户维度:客户亏损 → 该客户下所有车不发
- 补发X月 → 查X月盈亏表不是当月的
- 未匹配亏损表 → 不发放,标注待人工确认
- 无亏损表的月份 → 全部不发放
### 多人共用车辆
- 同车不同销售独立核算
- 累计按(车牌号+销售经理)维度,换人后累计重新开始
- 单车奖金池12期跨销售共享
### 考核奖励规则表
| 考核目标 | 月度目标里程 | 奖励金额 |
|---------|-----------|---------|
| 交投40辆4.5T普货 | 3000km | 150元 |
| 交投190辆4.5T冷链车 | 3000km | 150元 |
| 羚牛136辆4.5T冷链车 | 5000km | 260元 |
| 恒运50辆4.5T普货 | 5000km | 260元 |
| 羚牛100辆18T | 6000km | 1000元 |
**Why:** 规则文档V1.2为基础,多条规则在讨论中逐步确认和修正。
**How to apply:** 修改计算逻辑前,先对照此规则表确认一致性。

View File

@@ -0,0 +1,15 @@
---
name: 关键测试车辆
description: 讨论中反复用到的典型车辆案例,用于验证逻辑正确性
type: reference
---
| 车牌 | 场景 | 用途 |
|------|------|------|
| 粤AGP5797 | 1月达标多跑4134(不够结转5000)2月未达标累计达标 | 验证"累计补发当月" |
| 粤AGP5769 | 1月仅1天(84/161未达标)2月未达标3月大爆发13663 | 验证跨月补发1月+2月+当月 |
| 粤AGR7791 | 1月跑12578多跑9578够结转3个月 | 验证多跑结转 |
| 粤AGP5636 | 同人同月2条记录(达标+未达标) | 验证不合并逻辑 |
| 粤AGE4080 | 同人同月2条记录合并后里程误导 | 验证逐条显示✓/✗ |
| 粤A03350F | 同车多人(刘念念+董剑煜) | 验证多人拆行+合并单元格 |
| 粤AGE8412 | 换销售经理(刘念念→董剑煜) | 验证按(车牌+人)累计 |

View File

@@ -0,0 +1,7 @@
---
name: 用户角色
description: 用户负责车辆租赁业务的里程考核绩效核算,非技术背景,重视可读性和可追溯性
type: user
---
用户负责氢能车辆租赁业务的里程考核和绩效奖金核算工作。非技术背景对Excel输出的可读性要求很高——需要"旁人打开就能看懂"。偏好对账单风格的展示不喜欢技术化的判断链。与多个业务部门一部到六部的12名销售经理对接。