# 月度结薪完整流程(含坑点回顾) > 5 月跑通后请回流到本文档,把新经验记录下来。 ## 完整步骤 ### 0. 前置检查 ```bash # 确认本月账务目录存在 ls ~/Downloads/大梦N月账务处理/ # 必须有: # 考勤表/ ← 各种考勤资料 # 大梦可能实验室_N月营收分析_*.xlsx ← 营收分析(用户预先生成) # 大梦_可能实验室_西湖店__店内订单明细*.xlsx # 大梦_可能实验室_滨江店__店内订单明细*.xlsx # 大梦可能实验室(西湖店)_全渠道订单明细_*.xlsx # 大梦可能实验室(滨江店)_全渠道订单明细_*.xlsx # 大梦_可能实验室_西湖店_菜品库_*.xlsx # 大梦_可能实验室_滨江店_菜品库_*.xlsx ``` ### 1. 在 V2 表追加 N 月空行 + 应用店色 确定 N 月起始行号(紧跟 N-1 月最后一行 + 1 空行分隔)。 ```bash # 例: 5 月起始 row 27(4 月结束 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-39(13人,西湖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%)。