Commit Graph
299 Commits
Author SHA1 Message Date
yml2213 a333c05df4 fix(fulfillment): 收口渠道商品与统一结算边界 2026-11-06 17:12:44 +08:00
yml2213 e6b3835c9f feat(cost-center): 收敛第三方卡券商品与成本链路 2026-11-06 16:47:45 +08:00
yml2213 974044a4c6 refactor(cost-center): 收敛人工 SKU 自动创建流程 2026-11-06 16:37:29 +08:00
yml2213 bd7dd4efcc feat(fulfillment): 建立正式履约影子模型 2026-11-05 21:07:11 +08:00
yml2213 b424333a30 refactor(fulfillment): 收敛配置与商品关联写入 2026-11-05 21:01:11 +08:00
yml2213 fcd0c137d5 feat(fulfillment): 收敛履约状态写入口并追加状态事件 2026-11-05 20:52:22 +08:00
yml2213 ca214854bb feat(fulfillment): 固化当前尝试与历史自动化边界 2026-11-05 20:25:48 +08:00
yml2213 ed450fac79 feat(fulfillment): 建立履约统一状态视图与分类队列 2026-11-05 20:13:34 +08:00
yml2213 1df88cc639 feat: 完善履约路由、订单服务与自动核销 2026-11-05 14:59:58 +08:00
yml2213 3969703ac8 feat(order-service): 支持自定义订单状态节点文案 2026-11-04 13:04:52 +08:00
yml2213 a276256d84 feat(order-service): 增加资料提交后自定义说明 2026-11-04 12:42:42 +08:00
yml2213 1a80521057 feat(order-service): 优化资料字段预设与游戏ID校验 2026-11-04 12:33:33 +08:00
yml2213 e17f336e1c feat(order-service): 增加提交资料确认与核对摘要 2026-11-04 12:16:39 +08:00
yml2213 d0e0d32ff3 feat(order-service): 增加客户页自定义公告 2026-11-04 12:10:51 +08:00
yml2213 b83741cbf7 fix(order-service): 回填未提交工单的最新资料配置 2026-11-04 12:02:46 +08:00
yml2213 9f14e8de7a feat(order-service): 重构分类资料收集与订单状态链路 2026-11-03 19:46:49 +08:00
yml2213 e6763882f5 fix(fulfillment): 封堵重复载体并完善统一SKU映射 2026-11-03 12:28:05 +08:00
yml2213 3ba808b814 feat(fulfillment): 统一中文内部 SKU 履约路由 2026-11-03 11:49:38 +08:00
zhaoxing f447b5d73a fix(db): 按生产已应用顺序重排 120-125 迁移
生产已按 120-123 应用履约路由四支迁移,dev 新增的付款金额审计与价格历史顺延为 124-125,避免 node-pg-migrate checkOrder 报 Not run migration;同步更新部署清单与历史迁移测试路径。
2026-11-03 11:14:06 +08:00
zhaoxing 980cf68915 fix(db): 收敛合并后的迁移序号为 122-125
- 保留已应用的 dev 120/121
- 将 main 的 120-123 顺延为 122-125
- 开发库已应用,生产部署文档同步更新
2026-11-03 10:42:09 +08:00
yml2213 4dc2f5ca90 fix(claim): 统一所有买家领取链接为 H5 订单号格式 2026-11-02 22:11:22 +08:00
yml2213 31b6d2d65f fix(cost-center): 归档已被其他渠道接管的人工商品 2026-11-02 17:07:29 +08:00
yml2213 290890e848 feat(cost-center): 统一接单模板成本并自动同步商品 2026-11-02 16:14:51 +08:00
yml2213 6bf28489e0 fix(finance): 重写履约路由迁移与统一渠道配置
重写 120/121 迁移,统一内部 SKU、渠道 id、config_json 和旧规则转换。

后台渠道配置改读统一渠道表,卡券与人工配置不再写旧规则。

增加安全渠道切换,并排除已关闭、失败或过期的历史任务载体。

按生产 119 基线重跑迁移、完整履约财务链路和严格预检。
2026-11-02 15:29:13 +08:00
yml2213 2f87445ed9 fix(finance): 收敛内部 SKU 履约路由与载体状态
统一内部 SKU 与渠道主/兜底解析,禁止并列主渠道。

运营指定渠道改为先创建真实载体,失败保持明确 pending。

历史缺载体、多载体冲突和自动发货兜底统一由管道修复。

迁移人工配置与旧 sku_code 规则,补充严格预检和集成测试。
2026-11-02 15:02:49 +08:00
yml2213 5fe33b0b46 feat(finance): 统一内部 SKU 驱动的履约与财务分流
- 新增 internal_sku_mappings / internal_sku_channels,平台字段统一映射到内部中文 SKU
- 下单入口按内部 SKU 渠道决策修正默认人工路由,自动发货补全 dash sku
- 财务 channel_assign 读取统一渠道表;卡券/人工能力兜底,自动发货/接单要求真实载体
- carrier reconciliation 自动补自动发货任务和接单工单
- pending 落明确原因:无内部 SKU / 无渠道能力 / 无履约载体
- 合并、重判、旧 sku_code 规则清理、部署后 preflight 核对脚本
- 待分类队列按内部 SKU 聚合并展示原因
2026-11-02 14:17:08 +08:00
yml2213 652d501c2c docs(finance): 履约与财务分流统一方案与只读审计脚本 2026-11-02 13:48:18 +08:00
yml2213 769bc69bcf refactor(db): 财务渠道迁移合并为单条 113
生产当前在 112,原 113–118 六条迁移合并为 113_finance_channel_cutover:
- 渠道/状态三列 + 从 fulfillment_mode 回填
- 删除旧列及旧索引
- 销售事实列改名 channel
- 财务管道增量索引(原 117/118)
- 移除不再使用的 refund_adjustment 约束(历史退款不入财务)

42 万行副本实测 49 秒完成;生产只需执行一条迁移,不再需要中间回填脚本。
2026-11-01 16:34:12 +08:00
yml2213 d62f86de0f docs: 新增财务流程总览,明确断代后范围与历史退款边界 2026-11-01 16:22:52 +08:00
yml2213 a692723c73 docs+test: 补充成本缺失、退款期间与追溯限制说明 2026-11-01 15:21:55 +08:00
yml2213 fed459c7aa fix(cost): 历史订单成本固化,只有预估→实际允许升级
- 已有快照不再因成本版本变更而替换,历史订单成交价与成本保持固定
- 仅接单平台「预估 → 实际」履约结算允许 supersede
- 补配价格只影响没有快照的订单;文档同步口径
2026-11-01 14:53:11 +08:00
yml2213 00fa4d7f0a docs(finance): 补充退款冲减、通用成本范围与快照双通道说明 2026-11-01 14:46:14 +08:00
yml2213 34832139b0 fix(db): 渠道迁移顺延为 113–115,避让远程 112 补资料链接
远程 main 新增 112_work_order_material_link,本地原 112–114 顺延为 113–115:
- 113_fulfillment_channel_split
- 114_drop_legacy_fulfillment_mode
- 115_rename_facts_channel
同步更新文档与代码里的迁移编号引用。
2026-11-01 14:02:52 +08:00
yml2213 9bd5a9d324 docs(finance): 补充快照重算与通用成本口径 2026-10-31 20:41:50 +08:00
yml2213 fef1d0b77e docs(finance): 文档口径切到渠道模型并标注历史文档
- API 契约/成本中心模型改为 fulfillment_channel/status 与 channel 字段
- 验收 SQL 的销售事实检查改用 channel
- 2026-10 之前的口径文档加历史横幅,避免被当成现行实现
2026-10-31 20:26:20 +08:00
yml2213 2f11ed6bca chore(deploy): 上线脚本与验收 SQL 适配渠道模型
- post-deploy 去掉已删除的履约回填与 finance:sync,改用 finance:rebuild-cutover
- 验收 SQL 的履约检查改读 fulfillment_channel/status
- 相关文档同步更新
2026-10-31 19:57:00 +08:00
yml2213 45c9312e5d docs(finance): 新增财务与履约 v2 迁移草案与同步链路对照 2026-10-31 18:11:37 +08:00
yml2213 44791a9c8b perf(worker-platform): 排行榜公共缓存与抢单短路,压制 8.5s 慢查询脉冲
- 排行榜:Top 10 改为按 period 全局共享缓存(TTL 30s),SQL 传 currentWorkerId=0;
  个人单数解耦为 assigned_worker_id 精准索引查询(TTL 15s),未上榜展示「暂未上榜」,
  消除「每个打手一份缓存」导致的 8.5 秒全表聚合穿透;
- 抢单短路:新增 work-order-grab-guard,对已关闭工单打 10s 进程内标记,命中直接 409;
  publishWorkOrderRealtimeChange 统一作废标记,避免撤单/超时重开/重新发布后误杀正常抢单;
- 我的订单:默认排序也走「先取 id 再批量回表」的延迟分页,避免宽列 material_json 参与排序;
- 文档:新增生产 CPU 波动分析报告,慢查询数字按 6,235 行日志实测重算,并标注修复状态与验收口径。

验证:typecheck / check:sql / eslint / prettier 通过;后端 npm test 914 项(910 pass、4 skip、0 fail)。
2026-10-30 22:42:11 +08:00
yml2213 dc78dc92d1 feat(cost-center): 接单模板商品全量同步,改价默认立即生效 2026-10-29 21:44:29 +08:00
yml2213 08318ef8d9 feat(deploy): 财务上线数据阶段编排与运维加固
- 新增 deploy/post-deploy.sh:回填 → 业务配置 → 同步 → 验收四阶段编排,支持 --only/--dry-run/窗口参数
- 新增 tools 镜像与 scripts/verify-finance-launch.sql(15 项上线验收)
- 验收口径:成本闸门二选一、要求已过账凭证、备用金支出关联、成本覆盖 WARN
- 加固:参数校验、工具镜像每次刷新、docker run 兜底超时、迁移前缀探测、验收失败退出码 2
- 工具镜像预建 /app/data,消除日志 EACCES
- 回填后与 restore-db 恢复后自动 VACUUM (ANALYZE),修复订单列表分页 COUNT 全表扫描(41 万单实测 27s → 0.17s)
- 文档:41 万单同步用 7 天窗 + 180s 超时;回填/恢复后刷新统计
2026-10-28 11:52:42 +08:00
yml2213 9d5af359fa feat(finance): 完成财务控制、L1 钱包硬化与迁移收敛
- P0/P1:影子总账追加调整、关账/退款/资金/积分幂等、成本版本追溯、对账订单项维度
- 迁移收敛:原 103–114 合并为 103_finance_foundation、104_finance_controls、105_work_order_consignment
- 数据:L1 钱包 BIGINT/CHECK/奖励幂等;重复奖励审计口径修正与人工核对清单
- 报表:销售毛利缺失成本收入提示,旧收支页明确现金流口径
- 文档:同步迁移基线、合并评估、代码复核与上线说明
2026-10-27 16:08:16 +08:00
yml2213 0de0fd7b58 chore(db): 将 108–115 补丁迁移收敛为 108–111
- 原 108/111/112/113/114 合并为 108_finance_cost_integrity:
  成本异常归档、人工成本完整性、影子总账、商品页/模板查询索引
- 原 115 注释迁移改为 111_work_order_share_cancel_reason_comment
- 新增 reconcile-migration-history.sql,用于已跑旧 112–115 的库
  重建 schema_migrations 顺序,不重复执行 DDL
- 已验证:001→111、101→111 两条升级路径;
  旧 115 与新 111 的 pg_dump schema 完全一致
- 测试/文档迁移编号同步到 103–111

验证:backend check 853(849 pass / 4 skip);frontend check 172 + build。
2026-10-27 12:37:21 +08:00
yml2213 2b967ddd4c feat(cost-center): 商品初始化/回填增加时间范围,默认最近 30 天
- 接单模板初始化预览/执行支持 dateFrom/dateTo,只使用范围内工单证据;
  范围外模板不再先建商品
- 按工单回填商品支持时间范围;人工商品归一 UI 传时间范围
- 模板初始化重置只清理范围内导入映射/订单项,避免误伤范围外数据
- 初始化/回填默认最近 30 天,自动发货仍固定 30 天
- 文档更新初始化口径与页面操作
2026-10-26 16:26:48 +08:00
yml2213 6dc1e7e727 fix(scheduler): 成本财务同步默认回退最近 7 天,避免小库语句超时 2026-10-26 15:49:51 +08:00
yml2213 6b0078f680 fix(finance): 收口快手退款路由并修复销售事实变更后的总账同步
- 平台退款路由从通用订单路径改为
  POST /api/v1/admin/kuaishou-industry/orders/:orderId/refunds/approve-and-record,
  服务改名 approveAndRecordKuaishouRefund,明确仅快手 91
- 总账同步改为未关账期间按日整体重建销售凭证,解决收入回填/退款重算后
  旧凭证金额不更新的问题;删除与重建放在同一事务,已关账期间保持不动
- 文档明确 revenue:backfill 是存量订单退款的前置条件:
  revenue_amount_fen=0 会导致退款登记按钮置灰
- 本地生产副本已执行 revenue:backfill:375,447 行全部回填,
  order 375483 可退金额恢复为 237.00 元

验证:backend check 844(840 pass / 4 skip);frontend check 172 + build;
集成测试通过(代录、总账平衡、关账阻断、对账)。
2026-10-26 13:48:53 +08:00
yml2213 861524a91a docs(finance): 校准代录与本地迁移基线到 112 2026-10-26 13:33:25 +08:00
yml2213 62763ddf0c feat(finance): 支持代录指定客服账户,并上线影子总账/对账/关账/快手平台退款
- 人工确认履约:管理员/财务/运营可传 fundAccountId / creditOwnerAdminUserId
  指定客服备用金/积分账户;客服仍强制本人账户
- 新增迁移 112:finance_accounts / journal_entries / journal_lines /
  periods / reconciliations / reconciliation_items,种子 11 个科目
- 影子总账:销售事实按日生成收入/退款/成本凭证,支持手工凭证、试算平衡;
  不接管钱包余额;总账同步接入定时任务与退款重算
- 期间关账/反关账:关账先补凭证并校验试算平衡,closed 期间禁止新增凭证
- 平台对账:JSON 账单导入,按 provider + platform_order_id 匹配订单/退款,
  标记 matched/amount_mismatch/missing_order/missing_refund/duplicate
- 平台退款:快手行业(91)同意退款 API 接入,成功后落 source=platform;
  抖音/拼多多返回 501,保留手工退款
- 新增后台「财务 → 总账与对账」页面(总账/期间/对账三个 Tab)
- 集成测试扩展到代录、总账平衡、关账阻断、手工凭证、对账匹配

验证:backend check 844(840 pass / 4 skip);frontend check 172 + build;
迁移 112 在 scratch 库全量执行并重跑幂等;本地生产副本已升级到 112,
销售事实同步 56 条凭证,借贷合计 1,885,351,864 = 1,885,351,864。
2026-10-26 13:32:47 +08:00
yml2213 f0eb8a5e05 docs(finance): 补充责任主管前置与客服账户初始化步骤 2026-10-26 13:05:46 +08:00
yml2213 a3e2bdb7c4 feat(finance): 人工成本单事务/幂等 + 配置自动匹配 + 缺成本监控
- 确认履约改为单事务:锁订单项 → 复查快照 → 扣积分/备用金 → 写成本快照;
  快照失败整体回滚,不再出现「钱扣了、成本没记」
- manual_case 的 subject_id 统一为 order_item_id,新增订单项级唯一索引(迁移 111),
  消除 manual_expenses.id / platform_credit_entries.id 跨表撞车
- 人工 SKU 匹配增加 sku_code / sku_name 兜底;保存配置立即回填最近 30 天,
  定时任务按窗口 rematch,确认时再按 SKU 兜底匹配
- 新增 manual_cost_missing 异常队列:从首次人工配置起算,确认履约立即收口
- 补单元测试与真实 PostgreSQL 集成测试(并发、重复、强制快照失败回滚、双资金链路)
- 校准财务文档并新增上线初始化/验收手册(历史人工不补录,只保证配置后的新单)

验证:backend typecheck/lint/format/check:sql/test 843(839 pass / 4 skip);
frontend typecheck/lint/test 172;迁移 111 在 scratch 库全量执行 + 重跑幂等。
2026-10-26 13:04:51 +08:00
yml2213 31a8b6fc65 Merge branch 'dev1023' into dev
解决 9 个冲突文件,并修复合并后遗留问题:

- 大厅候选集:采用 FIFO 窗口 + 全部置顶单 UNION(列表与抢单/拼单复核同源)
- 拼单份额:采用多次参与模型(每次参与 INSERT 新份额、requestId 幂等),
  取消后可重新参与;移除 HEAD 已废弃的单行 rejoin 逻辑与对应测试
- 工单迁移与成本中心 103–108 编号撞车:合并重写为
  109_work_order_share_participation / 110_work_order_hall_and_shop_indexes;
  临时库全量执行与重跑幂等验证通过(10 列、唯一键已删、7 个索引)
- 实时补丁:保留个性化字段、置顶重排、分页总数同步;补回 orderTimelineVisible 类型
- 打手大厅:保留 memo 组件化,移植「再拼一次」多份额按钮逻辑
- 全项目表格统一 PercentTable:WorkerOrderShareTable 改造

验证:backend typecheck/lint/check:sql/test(833 pass)、
frontend typecheck/lint/test(172 pass)/build 全绿。
2026-10-26 12:10:53 +08:00