Files

209 lines
8.5 KiB
Markdown
Raw Permalink 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.
# 月度结薪完整流程(含坑点回顾)
> 5 月跑通后请回流到本文档,把新经验记录下来。
## 完整步骤
### 0. 前置检查
```bash
# 确认本月账务目录存在
ls ~/Downloads/大梦N月账务处理/
# 必须有:
# 考勤表/ ← 各种考勤资料
# 大梦可能实验室_N月营收分析_*.xlsx ← 营收分析(用户预先生成)
# 大梦_可能实验室_西湖店__店内订单明细*.xlsx
# 大梦_可能实验室_滨江店__店内订单明细*.xlsx
# 大梦可能实验室(西湖店)_全渠道订单明细_*.xlsx
# 大梦可能实验室(滨江店)_全渠道订单明细_*.xlsx
# 大梦_可能实验室_西湖店_菜品库_*.xlsx
# 大梦_可能实验室_滨江店_菜品库_*.xlsx
```
### 1. 在 V2 表追加 N 月空行 + 应用店色
确定 N 月起始行号(紧跟 N-1 月最后一行 + 1 空行分隔)。
```bash
# 例: 5 月起始 row 274 月结束 row 25, row 26 留空)
# 西湖 6 人 (rows 27-32) 浅绿
mcporter call tencent-docs sheet.set_cell_style --args \
'{"file_id":"VLSAvSvqvYzU","sheet_id":"BB08J2","start_row":27,"end_row":32,"start_col":0,"end_col":42,"bg_color":"FFE2EFDA"}'
# 滨江 6 人 (rows 33-38) 浅蓝
mcporter call tencent-docs sheet.set_cell_style --args \
'{"file_id":"VLSAvSvqvYzU","sheet_id":"BB08J2","start_row":33,"end_row":38,"start_col":0,"end_col":42,"bg_color":"FFDDEBF7"}'
```
### 2. 写入固定字段(每月不变)
为 12 名员工写入:月份、姓名、归属、部门、班次、岗位、兼任、状态、4 个标准(基本/KPI/管理/行为)。
可批量 set_range_value 一次发完。
### 3. 处理考勤资料
详见 `attendance_rules.md`
针对 N 月:
- 读取所有图片用 Read tool 看清字
- 读取 xlsx 用 openpyxl
- 读取 xls 用 xlrd(首次需 `python3 -m pip install xlrd`
- 读取腾讯文档夜班考勤(`file_id=IEqftKNqdqKa`)用 `get_content`
整理出每人的:出勤天数、加班小时数、备注(休息日期 + 年假说明 + 加班存/换钱)。
### 4. 写入考勤到 V2
set_range_value 写 cols 22 (出勤)、23 (法假)、24 (加班)、42 (备注)。
### 5. 写入营收数据
```bash
python3 ~/.claude/skills/dameng-salary/compute_cross.py "~/Downloads/大梦N月账务处理"
```
把脚本输出的 12 人 (部门业绩, 班次业绩, 部门×班次业绩) 写入 V2 cols 19/20/21。
记得应用特殊规则:
- 滨江厨房团队(刘/叶/尹):班次 = 0,部门×班次 = 0
- 中班(尹志艳):班次 = 0,部门×班次 = 0
### 6. 套用计薪公式
详见 `formulas.md`。对每个员工:
```python
basic = base * att / 26.08
ot_pay = 0 if banked else (oth / 9) * base / 26.08
kpi_res = kpi_std * 1.0 # 默认 1×
mgmt_res = mgmt_std * 1.0 if mgmt_std > 0 else 0
conduct_res = conduct_std # 全额合格
commission = dept_rev * COMMISSION_RATE.get(name, 0)
holiday = base / 26.08 * lh_days * 2
total = basic + ot_pay + kpi_res + mgmt_res + conduct_res + commission + holiday
remaining = total - (523.53 if name in ENROLLED else 0)
```
写入 V2 cols 2 (汇总)、3 (剩余)、26-37 (各计算项)、39/40 (社保,仅 4 人)。
### 7. 生成工资单 HTML
```bash
# 首次本月运行:建立生成器目录
mkdir -p "~/Downloads/大梦N月账务处理/工资单生成器"
cp ~/.claude/skills/dameng-salary/fetch_salary.py "~/Downloads/大梦N月账务处理/工资单生成器/fetch_data.py"
cp ~/.claude/skills/dameng-salary/slip_template.html "~/Downloads/大梦N月账务处理/工资单生成器/salary_slips.html"
# 拉数据
cd "~/Downloads/大梦N月账务处理/工资单生成器" && python3 fetch_data.py 2026NN
# 打开
open "~/Downloads/大梦N月账务处理/工资单生成器/salary_slips.html"
```
### 8. 按需迭代
用户可能要求:
- 改某人考勤(重算工资)
- 调员工部门
- 改 KPI 倍数
- 改提成费率
- 加新员工
每次修改后重新跑公式 → 重新 fetch_data → 用户刷新页面。
### 9. 用户验收 + 导出 PNG
用户在页面右上角点 `EXPORT ALL` 批量导出,或单卡片 `DOWNLOAD PNG`
---
## 已知坑点
### 行号偏移
腾讯文档 `set_range_value` 偶发 +1 行偏移。**写完务必读回校验**。
之前发生过:4 月写入时尹志艳被宋群喜覆盖。修复办法:append 到末尾再重排顺序。
### 出勤口径
"出勤天数"的口径:
- xlsx 文件用「实际出勤天数」= 当月到岗天数(不含调休/年假)
- 夜班手写考勤的「出勤」列:含年假,约等于 30 - 真休
- 用户最终口径(5 月起请遵循):**出勤 = 实际工作天数 + 年假天数(按工作日计薪)**
- **若不确定,问用户**
### 加班 "存 vs 换钱"
- 备注里看清楚
- "存"则 加班工资 = 0
- "换钱"或无注则正常发
### 朱秋风部门变动
4 月起 朱秋风 从「前厅」改到「精酿」部门,但岗位仍是「前厅运营」。新月份继承。
### 节假日补贴 vs 法定假期换薪
- V2 有两列:法定假期换薪 (col 34) 和 节假日出勤补贴 (col 36)
- **只用 col 36**col 34 保持 0
- 工资单 HTML 现在只读 col 36
### 滨江店是否有提成
3 月全员 0,4 月仍 0。**何时开始有,由用户决定**。
### "保洁阿姨" 不写入 V2
她是兼职,5 月起若仍出现在考勤图片,只采集数据不写表。
---
## 营收分析引擎(5月新增 build_analysis.py
当月若**没有**预生成的「N月营收分析xlsx」,用 skill 自带引擎从原始订单直接生成:
```bash
python3 ~/.claude/skills/dameng-salary/build_analysis.py "~/Downloads/大梦N月账务处理" 2026-NN
```
产出:`大梦可能实验室_N月营收分析_西湖店vs滨江店.xlsx`(13 sheets) + `_analysis_summary.json`(供工资写表)。
summary.json 里 `employees` 即 12 人 (部门业绩/班次业绩/部门×班次业绩) 三元组,直接写 V2 cols 19/20/21。
引擎已内置:菜品归口、团购→部门拆分、代金券剔除、部门×班次比例校正、滨江厨房/中班置0。
**强烈建议**:跑完用 workflow 做 5 路独立复核(部门POS/班次/团购/交叉/环比)——5 月就靠它抓出 2 个真 bug。
数据治理坑点(引擎已修,每月仍需注意):
- 🔴 **幽灵汇总行**POS「订单明细」末尾 `订单来源/订单号/营业日期 全='--'` 行,金额=全部真实行之和→订单级字段翻倍2x。必须 `if str(订单号).strip()=='--': continue`
- 🔴 **dish级 vs 订单级**:部门收入用「菜品明细」逐菜累加;订单级列被联台重复,勿用。
- 🟡 **酒头/畅饮票=精酿**(非调酒)。
- **分类名会变**:西湖 4月`brunch`→5月`brunch轻食简餐`,用 `startswith` 容错。
- **新团购套餐每月扫一遍**(5月新增「咖啡任选7次卡」→咖啡)。
- **约6%营收是"无菜品库"SKU** 靠关键词兜底,错归风险源。
详见 `analysis_playbook.md`
---
## 5 月跑通经验(已回填 · v1.1,覆盖更早的草稿口径)
**行号**5月 = rows 27-3913人,西湖27-33/滨江34-39),row 26 空行分隔。6月起始 = row 41。
**人员变动**
- 新增 **舒尧轩(昵称小胖)**,西湖调酒晚班/调酒师,底薪5600/KPI1000/行为500/管理0;无社保、暂无提成。
-**13 人**(西湖7+滨江6)。重排规则:西湖在前、滨江在后;舒尧轩紧跟胡舒(同调酒晚班)。
**出勤口径(用户确认,覆盖4月)**
- **年假计入出勤**(带薪)。出勤 = 当月天数 − 正常休息(不含年假)。各考勤表写明的出勤数为准。
- 何简28(3天年假计入)、郭思儒27、秦天29、胡舒27、舒尧轩27 等。
**法定假期(用户确认)**:五一 **2 天**,**全员**法定假期天数=2、全给双倍 → 节假补贴 = 底薪/26.08 × 4。
**加班**:胡舒4h存、舒尧轩1.5h存 → 不发;其余"换钱"或未注明照发。蔡逸丰"3+9换钱(五一白班)"=12h换钱。
**工资单两条新展示规则**slip_template.html 已内置,自动生效):
- 未交社保者基本工资下注明"已含社保 ¥1,745.78"。
- 出品提成行仅对有提成者显示,其余隐藏。
**考勤来源(5月实例)**:厨师考勤表.jpg(秦天/刘润祥/叶磊/尹志艳/何简)、小王考勤表.jpg(王瑛胤)、西湖店白班考勤表.jpg(宋群喜/郭思儒/保洁)、李想5月.xlsx、秋风5月.xlsx、腾讯夜班文档(胡舒/蔡逸丰/小胖=舒尧轩)。
**5月节假日**:五一2天(不是1天)。
**营收/出品分析**:本月新增完整分析能力,详见 `analysis_playbook.md`。5月双店POS四部门合计 西湖229,059/滨江156,326(+6.6%/+8.0%)。