117 Commits

Author SHA1 Message Date
e8c5e79486 feat: 每日同步聚水潭标签并刷新种菜金额 2026-11-05 17:07:58 +08:00
867ff805a4 feat: 增加进销存未映射仓库视图 2026-11-02 11:44:00 +08:00
69873f869a feat: 进销存未映射仓库自动创建提醒任务 2026-11-02 11:13:51 +08:00
fa989e3f49 feat: 增加人工费用数据保存功能 (#770) 2026-10-29 20:54:09 +08:00
1c42428df4 feat: 人工费用支持表格导入 (#758)
新增人工费用 Excel/CSV 导入,自动匹配录入列并重算公式。
2026-10-29 13:23:52 +08:00
e00d7cf871 feature/qiuxiang-jst-ssdd-seller-remark (#725)
> 开工时标题使用 `WIP: <任务名称>` 并先填写“任务占用与边界”。Codex 完成独立合并前自审后补齐其余内容并移除 `WIP:`。

## 任务占用与边界

- 任务名称:
- 实际开发者:
- 任务来源/团队分工:
- 目标结果:
- 预计修改路径:
- 将写入的公共契约(路由、Controller 方法、Repository、表/视图、`source_key`、`scope`、权限名、菜单键或共享组件):
- 仅复用、明确不修改的公共契约:
- 数据源、表/视图和字段:
- 上游 `source_key` / `scope`:
- 权限名、菜单键或共享组件:
- 明确不修改的范围:

## 开工碰撞检查

- [ ] Codex 已执行 `scripts/codex-task-preflight.ps1`
- [ ] 已检查最新 `main` 和所有远程任务分支
- [ ] 已搜索主线既有页面、接口、Repository 和数据查询
- [ ] 已把“将写入”和“仅复用、不修改”的公共契约分开;仅复用项不作为单独阻断条件
- [ ] 未发现实际写入重叠;或已在下方写明相关分支、具体重叠项和协调结论

相关分支、重叠项与协调结论:

## 实际改动

- 完成内容:
- Codex 实际修改的文件:
- 新增或变更的公共契约:
- 与原计划的差异:

## 验证证据

- 正常流程:
- 空数据/错误输入/无权限场景:
- 受影响旧功能:
- 自动测试及结果:
- 实际页面、接口或只读业务查询结果:

## 风险检查

- [ ] 不涉及金额、权限、审批、数据库迁移、生产配置或数据修复
- [ ] 如涉及上述高风险内容,已在下方写明影响、回滚和所需授权
- [ ] 未提交 `.env`、密码、Token、私钥、真实财务数据、生产日志或构建产物
- [ ] 前端改动符合 `DESIGN.md`;无前端改动则写“不适用”

高风险影响、回滚和授权状态:

## 合并前复查

- [ ] 已重新拉取远程引用并用实际修改范围再次运行碰撞检查
- [ ] PR 不再是 `WIP:`,所有测试结果已经补齐
- [ ] Codex 已重新读取原始需求和验收标准,并逐文件审核 `origin/main...任务分支` 的完整 diff
- [ ] Codex 自审确认无越界修改、重复实现、敏感内容、未处理冲突和未验证结果
- [ ] 合并顺序不会覆盖其他未合并任务
- [ ] 已授权当前任务的 Codex 执行 Squash merge、验证 `main` 并清理任务分支
- [ ] 如涉及生产迁移、数据修复、删除、覆盖配置或部署,已另行取得对应高风险授权

Reviewed-on: #725
2026-10-28 13:48:37 +08:00
6f453c5419 feat: 系统化待办备注合并到完成情况 2026-10-28 13:19:28 +08:00
48b433be4d feat: 系统化待办按今日同步并优化 Excel 导入
操作记录默认从今日显示,并增强 Excel 同步的类型保护和同名分组匹配。
2026-10-28 09:37:21 +08:00
7954777212 fix: 合并系统化待办重复内容分组
统一系统化待办的换行编号与标点归一化,并补充回归测试。
2026-10-27 20:02:50 +08:00
1cb04adc7b feat: 店铺台账接入每日余额、预留标准与预警
完成店铺台账每日余额来源、日期筛选、预留标准和连续3天预警。
Co-authored-by: 92451 <924518135@qq.com>
Co-committed-by: 92451 <924518135@qq.com>
2026-10-27 18:13:00 +08:00
04948081b8 fix: 修正系统化待办浏览器上传识别 (#691)
## 问题与修复

浏览器上传的 Excel 落在 PHP 临时路径时没有 .xlsx 后缀,原逻辑只检查临时路径,导致合法工作簿被误判为非 Excel。

本修复增加原始上传文件名参数,优先按用户选择的文件名识别扩展名;命令行导入仍按实际文件路径识别。

## 验证

- 待办专项测试:17 tests,303 assertions
- 新增真实上传路径回归测试:临时文件无扩展名、原始文件名为 .xlsx 时可正常同步
- 新增数据同时写入操作记录

## 影响与发布

- 不新增数据库迁移
- 修复前请求未写入任何待办数据
- 合并后热修复发布,再重新导入新版工作簿

Reviewed-on: #691
2026-10-27 15:54:38 +08:00
9f67e2a308 feat: 增加系统化待办操作记录并修正 Excel 同步匹配 (#690)
## 任务占用与边界

- 任务名称:系统化待办操作记录与 Excel 同步修正
- 实际开发者:Codex
- 任务来源:负责人要求对照新版工作簿同步待办,并提供类似科目映射表的操作记录
- 目标结果:新增、修改、删除、Excel 导入均可追溯;修正工作簿编号前缀导致的重复匹配风险
- 预计修改路径:系统化待办导入器、页面、控制器、路由、操作记录表迁移及专项测试
- 将写入的公共契约:新增 business_systemization_todo_audit_logs、操作记录查询及 CSV 导出路由
- 仅复用、不修改的公共契约:现有待办表、附件表、分页和筛选结构
- 数据源、表/视图和字段:新版 10.19 工作梳理 Excel;待办表现有字段
- 上游 source_key / scope:不涉及上游
- 权限名、菜单键或共享组件:复用现有 business.page:other,systemization-todos
- 明确不修改的范围:不删除工作簿外事项,不覆盖完成截图

## 实际改动

- 新增操作记录:类型、内容、待办事项、负责人、责任人、日期、状态、完成情况、备注、排序、截图数量
- 支持按操作类型和关键词筛选,支持导出 CSV,保留最近 500 条
- 手工新增、编辑、删除、类型/内容批量修改、Excel 导入均写入操作记录
- Excel 同步会去除类型、内容和待办事项前的文字序号,并按无编号分组匹配,避免重复新增
- 保留工作簿外事项和已有截图

## 验证证据

- 待办专项测试:16 tests,299 assertions
- 覆盖:手工新增/修改/删除、操作记录查询、CSV 导出、Excel 新增/修改/保留截图、编号前缀匹配、干跑不落日志
- 页面 Blade 在测试中正常渲染
- 本次发布后将在线上实际导入新版工作簿并核验操作记录

## 风险检查

- [x] 涉及数据库迁移:仅新增 systemization todo audit logs 表,不影响既有业务表
- [x] 迁移已由任务内核对并随正式发布执行
- [x] 未提交 .env、密码、Token、私钥、真实财务数据、生产日志或构建产物
- [x] 前端改动符合 DESIGN.md,复用 VIP 黑金设计令牌

## 合并前复查

- [x] 已基于最新 main 开发
- [x] 已运行目标专项测试并通过
- [x] 已逐文件核对实际 diff
- [x] 允许任务 Codex 完成 Squash merge、验证 main、清理分支并部署

Reviewed-on: #690
2026-10-27 15:45:11 +08:00
05726c6751 完善系统化待办筛选与展示 (#664) 2026-10-26 22:56:32 +08:00
d3a77ba941 合并线上绩效物化分支并保留商品成本仓库修复 (#647) 2026-10-26 20:35:56 +08:00
6499934c47 fix: 税务类型优先展示 Excel 台账
Excel 有税务类型时始终展示,缺失时回退上游资料。
2026-10-26 17:58:27 +08:00
a7252c176c 完善系统化待办文字展示、拆分与指定序位新增 (#618) 2026-10-26 17:37:06 +08:00
d0979879e7 fix: 精简店铺销量汇总卡片
店铺报表仅保留正常存续店铺数、上月销量、当月销量三个汇总框。
2026-10-26 16:44:05 +08:00
e2e77d6d20 fix: 统一工商类型核定与个人独资口径
工商类型仅保留核定、个人独资企业,其他统一显示斜杠。
2026-10-26 16:40:16 +08:00
dfc3dcd0d0 fix: 默认隐藏无数据的报表月份列
报表初始只显示有数据的月份列,空列可在筛选字段中手动打开。
2026-10-26 16:32:29 +08:00
450a9e42f9 feat: 完善经营报表汇总与基础资料状态标签
经营报表保留原表头并补齐本表汇总;基础资料只增加表内分色标签。
2026-10-26 16:13:27 +08:00
b25ae15a4b 新增公司税务类型与工商类型字段 (#597)
公司基础信息和主体维度报表增加税务类型、工商类型字段,并复用 fin_companies 已完成核对的数据。
2026-10-26 15:04:42 +08:00
3ae7bf7dc8 修复店铺状态显示为中文 (#593)
店铺基础信息状态列统一显示正常、关闭中、已关闭。
2026-10-26 14:30:01 +08:00
acafcf1abb 修正安装费汇总:保留独立安装明细页并按客服审核时间归集 (#589) 2026-10-26 14:13:18 +08:00
e85a2e90ef 新增经营报表汇总卡片 (#588)
新增六类经营报表汇总卡片,复用共享镜像筛选和排序,并完成真实数据口径、桌面及移动端验证。
2026-10-26 13:52:10 +08:00
d2e20bd441 将安装费金额并入业绩明细 (#587) 2026-10-26 13:47:02 +08:00
d18aa82678 修正店铺负责人关联并增加每日存档 (#584) 2026-10-26 12:01:25 +08:00
f88d849c15 同步最新系统化待办工作簿 (#583) 2026-10-26 11:44:03 +08:00
0bf1ae67af 导入订单售后与商品推广月度明细 (#578)
新增 2026-06 月度订单售后及商品推广导入能力
2026-10-26 11:09:22 +08:00
03acb8b1a0 fix: 提现管理按店铺报表取存续主体
提现管理主体跟随店铺维度报表最新存续期间。

PR #559
Co-authored-by: 92451 <924518135@qq.com>
Co-committed-by: 92451 <924518135@qq.com>
2026-10-25 20:36:57 +08:00
0b69f30714 feat: 补录财务账单店铺余额并标记来源
聚水潭缺失店铺按财务账单补录;页面和导出标记数据来源。

PR #552
Co-authored-by: 92451 <924518135@qq.com>
Co-committed-by: 92451 <924518135@qq.com>
2026-10-25 17:06:19 +08:00
3cff23c595 新增财务系统化待办与完成截图
新增财务系统化待办与完成截图
2026-10-25 16:23:08 +08:00
46b9acae2e feat: 提现管理增加提现金额专用导入模板 (#528)
Co-authored-by: 92451 <924518135@qq.com>
Co-committed-by: 92451 <924518135@qq.com>
2026-10-24 21:10:46 +08:00
89bd1703c7 feat: 提现管理连续3天余额预警并生成待办 (#519)
## 完成内容
- 提现管理展示所选余额日及前两天余额。
- 连续3个自然日余额一致且均严格高于预留标准时显示预警。
- 余额导入成功后自动生成或更新待处理事项,同一店铺不重复创建。
- 导出文件同步包含三天余额和预警状态。

## 验证
- 新增预警测试:3 项通过,30 个断言。
- 提现管理导入导出测试:12 项通过,96 个断言。
- 管理页面回归:1 项通过,56 个断言。
- 余额仓库测试:11 项通过,46 个断言。
- 本地页面已验证:39 家店铺触发预警,待办事项生成 39 条。

## 风险
- 无数据库结构迁移。
- 不改上游数据;仅在成功导入余额后读取共享镜像并写入待办。

Reviewed-on: #519
Co-authored-by: 92451 <924518135@qq.com>
Co-committed-by: 92451 <924518135@qq.com>
2026-10-24 19:50:40 +08:00
e15b6b9901 商品成本:按历史唯一规格映射平台数字SKU (#482)
平台数字 SKU 仅按唯一历史内部编码自动映射;多候选保持待核验。
2026-10-24 10:18:21 +08:00
1ad248dda6 商品价格:自动生成月加权平均单价并输出对账简报 (#476) 2026-10-23 16:21:15 +08:00
2fa66ef1d1 进销存:保留供应商汇总中的相同明细行 (#475) 2026-10-23 15:55:06 +08:00
1991b7d319 进销存:增加供应商汇总表月度增量导入 (#474) 2026-10-23 15:47:39 +08:00
c9ecf033d5 进销存:入库明细支持页面导入 (#473) 2026-10-23 15:02:03 +08:00
1f4f6f48d4 优化财务资源:减少重复扫描、隔离重型任务、约束系统日志 (#390) 2026-10-19 14:56:54 +08:00
409da4cae8 feat: 提现管理余额日期改为下拉选择 2026-10-18 12:09:42 +08:00
da794c3ddb feat: 提现管理支持按余额日期筛选并长期保留每日余额 2026-10-18 11:52:02 +08:00
37c11f4e8e fix: 提现管理店铺余额保留最近5天 (#349)
Co-authored-by: 92451 <924518135@qq.com>
Co-committed-by: 92451 <924518135@qq.com>
2026-10-16 19:00:49 +08:00
fd4b155979 feat(快递资料): 归档合同管理与到期提醒 (#336) 2026-10-15 10:22:35 +08:00
8ba7ac8327 feat(快递入驻/快递资料): 生成二维码时必填快递资料并对齐到快递资料;去掉「发起报价变更」按钮;自定义3 改名扣款方式
- 生成入驻二维码新增 11 个必填项(快递方看不到,放在入驻流程下方单独一块):快递类型、快递合作方式、快递属性、扣款方式、单号类型、快递邮箱、
  是否需要核对物流点、快递发货方式、是否已有工作平台账号、快递网点代码、网点所在地区;入驻列表、入驻详情可查看和修改
- 快递资料:扣款方式对齐到「扣款方式」列(工作平台没填时用入驻的),其余字段接在入驻信息列里;网点代码/地区进网点明细;导出同步
- 不再依赖钉钉「新建快递」流程字段,ERP 开通改为手动补录 ERP账户ID
- 快递资料「自定义3」列、筛选、编辑和导出表头改名为「扣款方式」(字段仍是 undefined3)
- 报价管理工具栏、报价历史页去掉「发起报价变更」:它默认拿第一份报价走老的改格子流程,对入驻快递会绕开后台变价;
  变价统一从报价列表每一行的「变价」进入;老报价编辑页新增 …/changes/new 入口,避免套餐限制中间件把 GET …/create 跳到用户页
- 新增迁移 2026_10_14_300000:business_courier_onboardings 加 11 个可空字段

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019gzfsnV3fJ89CoUy1D9V9g
2026-10-14 18:31:25 +08:00
71652c5a64 feat(快递入驻): 快递扫码填写入驻资料 + 两级审核 + 首版报价 + 签署开通
快递应付 → 快递报价 下新增「快递入驻」页:生成入驻二维码发给快递方,
对方免登录在手机上填写主体、联系人、e签宝签署人、结算账户、报价并上传资质,
内部对接人初审、管理员财务复审后生成首版报价,并自动生成报价确认单 PDF
推送到快递填写的 e签宝账号,签署归档后开通。

- 新增三张表 business_courier_onboardings / _files / _events(纯新增,不改旧表)
- 免登录填报页 /onboarding/courier/{token}:40 位随机 token,可暂存、提交、退回后补件,
  链接有效期可延长、可作废;银行账号加密存储;附件存 uploads 盘
- 新增 COURIER_ONBOARDING_PUBLIC_URL 配置二维码里的站点地址(留空用当前访问地址)
- 内置纯 PHP 二维码生成(App\Support\QrCode,SVG 输出,无新增依赖)
- 生成二维码时必须定好系统快递名称(唯一,快递方不可见);财务复审沿用该名称,快递所填报价写成报价管理的 CourierQuoteVersion,
  复用 CourierQuoteSignatureService 生成报价确认单并推送 e签宝(失败可重推/同步状态);初审人默认不能复审(COURIER_ONBOARDING_ALLOW_SAME_REVIEWER=true 可在测试环境放开)
- 支持公司 / 个人两种入驻:个人填姓名+身份证号(加密)、传身份证和银行卡,报价确认单按个人身份在 e签宝签署
- 扫码先选入驻方式;证件改为 营业执照 / 法人身份证正反面 / 银行卡正反面 各一张(个人营业执照选填),手机端上传前自动压缩,超限回到填报页提示
- 报价支持 4 种计费方式(面单+费率 / 首重+续重 / 按重量段一口价 / 小重量一口价+超出另算,费率可分段)+「其他」上传报价表;附加规则:计泡、起算重量、取整、每票加收(CourierQuoteStructure)
- 不再要求上传盖章报价单,至少填写一行在线报价
- 开通:报价确认单签署归档、或匹配到已签署协议、或填写线下签署说明
- 生成二维码前必填「快递公司代码」(自动大写、不可重复),入驻信息按代码对齐快递资料
- 公司入驻对公(营业执照主体)+ 对私(法定代表人)两个打款账户必填并自动核对;个人入驻对私必填、对公选填
- 变价:报价管理里后台改价 → 审核 → 自动推送快递 e签宝 → 回签;回签单导出 xlsx/zip;误发版本可作废
- 短期(临时)变价:变价单/报价版本加选填「结束日期」(end_date);按日期取价,期间用临时价,到期次日自动恢复原长期报价,
  不用重签;报价管理显示 生效中(临时)/ 暂停中 / 已到期,确认单写明执行期间和到期后恢复的版本,审核提醒期间重叠
- 快递资料分四类:快递资料 / 网点 / 打款信息 / 操作日志,支持查询、导出、重置、编辑;
  财务系统入驻的快递直接作为快递资料行,合同起止取协议签署里已签署的合作合同;
  点开一行在下方看该快递的网点 / 打款信息(完整账号)/ 操作日志
- 编辑存财务系统覆盖值(business_courier_profiles,不回写工作平台),改动记操作日志(business_courier_profile_events)
- 打款信息新增 / 变更(business_courier_payment_accounts,账号加密)保存后跳到协议签署,自动预填收款账户证明 / 收款账户变更,
  按签署状态显示 待推送协议 / 签署中 / 已生效;入口在快递资料明细和「打款信息」页签(表格每个账户可直接「变更」)
- ERP 开通:入驻开通后标「待 ERP 开通」,可手动补录(钉钉「新建快递」流程同步待接入)
- 新增 CourierOnboardingWorkflowTest(8 个用例),更新快递报价目录顺序断言

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019gzfsnV3fJ89CoUy1D9V9g
2026-10-14 13:47:00 +08:00
ea80148dfc 店铺违规预警:级别/责任人/处理截止/超时/推送状态 + 处理状态四档 + 群推送接口 + 预览统计页 (#332) 2026-10-13 19:54:01 +08:00
d47a72c175 店铺违规预警:新增违规原因与处置方式两列(页面/统一表/导入导出) (#323) 2026-10-13 11:32:27 +08:00
66d6146c19 快递运费:导入兼容「店铺」列名(财务系统提供成本5-6.xlsx 用)
列名别名扩展:店铺名称/店铺;csv 与 xlsx 两条路径的用例同步覆盖。
2026-10-12 14:55:01 +08:00
f3143e6959 快递运费:修复 XlsxSheetReader 可选列漏传闭包导致 xlsx 导入报未定义变量
补 xlsx 路径导入测试(csv/xlsx 是两条代码路径,此前只测了 csv)
2026-10-12 12:07:09 +08:00
f805920fda 快递运费:新增「店铺名称 / 快递单号 / 条形码」列,并按「财务系统运费整理.xlsx」重新导入
- 迁移:courier_freight_rows 增加 express_no / barcode / shop_name(可空)
- 导入器支持可选列(快递单号 / 条形码 / 店铺名称),老文件缺这三列也能导;XlsxSheetReader 支持可选列表头
- 页面与导出新增三列;运费差 / 结算运费 / 其他附加费汇总 / 退件费 表头与取数逻辑不变
- 测试:新增新列导入、老文件兼容、页面展示用例
2026-10-12 11:56:00 +08:00