yml2213
|
fd6d2d561b
|
feat(pipeline): 渠道判定后立即归一商品并算成本
- 新增按订单项定向归一,避免新判定订单等冷通道
- 判定/指定渠道后立即归一 → 算成本 → 按业务日回填事实与总账
- 提取 refreshFactsForDates 供管道与渠道服务复用
|
2026-11-01 15:21:53 +08:00 |
|
yml2213
|
9e154cb16d
|
fix(cost): 派生费用可随退款重算,成本版本与基线禁止追溯
- 平台费/支付费允许 estimated→estimated 按净收入重算;采购与打手报酬保持固化
- 创建成本版本时拒绝早于当前时间的 effectiveFrom
- 已有快照后禁止导入价格基线;基线生效时间改为当前
- 删除基线导入中前移现有版本生效时间的逻辑
|
2026-11-01 15:21:50 +08:00 |
|
yml2213
|
045ac98479
|
fix(finance): 成本缺失按渠道期望成本项判定
- 采购/打手报酬/卡券采购各自校验对应成本项快照
- 人工渠道校验 manual_case 快照
- 未分类订单仍按「任意快照」兜底
- 平台费等通用费用不再把缺失成本掩盖成完整
|
2026-11-01 15:21:50 +08:00 |
|
yml2213
|
ceb786f32e
|
fix(cost-center): 禁止追溯改价,改价只能当前或未来生效
- 后端统一校验:retroactive 请求直接拒绝,effectiveFrom 早于当前时间拒绝
- 去掉「追溯至历史订单」入口,改价只影响之后的新订单
- 历史订单成本与成交价由快照固化,不再受改价影响
|
2026-11-01 14:53:25 +08:00 |
|
yml2213
|
fed459c7aa
|
fix(cost): 历史订单成本固化,只有预估→实际允许升级
- 已有快照不再因成本版本变更而替换,历史订单成交价与成本保持固定
- 仅接单平台「预估 → 实际」履约结算允许 supersede
- 补配价格只影响没有快照的订单;文档同步口径
|
2026-11-01 14:53:11 +08:00 |
|
yml2213
|
fca836eb4b
|
feat(cost-center): 卡券商品创建即生成渠道规则,补齐成本项预设
- 新建 tpv: 商品时自动写 third_party_voucher 规则,避免新卡券 SKU 停在待分类
- 成本项预设新增「第三方卡券采购成本」
|
2026-11-01 14:46:14 +08:00 |
|
yml2213
|
624c0ef4af
|
feat(finance): 历史订单退款按退款日入账
- 迁移 116 新增 refund_adjustment 渠道值,并允许该类行净收入为负
- 销售事实按退款日聚合 archived 订单的已确认退款,写冲减行
- 退款后同时回填原销售日与退款日的事实与总账
- 退款同时重算相关订单项的费用快照(比例费按净收入)
- 前端渠道筛选与标签支持「历史退款冲减」
|
2026-11-01 14:46:11 +08:00 |
|
yml2213
|
cf0d600c7d
|
fix(cost): 快照新单优先、费用口径与回填健壮性
- 成本快照拆热/冷双通道:新单走热通道分钟级入账,历史项冷通道轮询重算
- 通用成本只允许平台费/支付费自动全量,售后损失/其他必须按商品配置
- 比例费用按扣除已确认退款后的净收入计算
- 已入账 actual 快照不再被后续预估覆盖
- 受影响日期超过 31 天时按整段重算,不再静默丢弃;关账跳过会提示
- 通用费用解析不到时计数告警;已入队的成本缺失不再重复 upsert
- 快照替换与写入放入同一事务,避免事实任务读到空窗
|
2026-11-01 14:46:08 +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
|
6c3e360392
|
merge: 合并远程 main(补资料链接与工单验收修复)
|
2026-11-01 13:58:45 +08:00 |
|
zhaoxing
|
b9d8630026
|
fix(worker): 整单验收不再被拼单份额防呆拦截
|
2026-11-01 13:17:39 +08:00 |
|
zhaoxing
|
92c70d472f
|
fix(db): 恢复 109 售后追缴迁移并为补资料链接迁移顺延 112
|
2026-11-01 12:52:39 +08:00 |
|
zhaoxing
|
da16e8cf75
|
Merge branch 'dev'
|
2026-11-01 12:30:02 +08:00 |
|
zhaoxing
|
94a1436453
|
fix(worker): 多份额验收优先唯一待提交份额并补充 shareId 防呆
|
2026-11-01 12:27:55 +08:00 |
|
zhaoxing
|
26beaca0c9
|
fix(db): 顺延售后追缴迁移至 112 并补回 109 补资料链接迁移
|
2026-11-01 12:27:37 +08:00 |
|
zhaoxing
|
2f20e36a75
|
fix(work-order): 客户补资料页移除未分配状态文案
|
2026-11-01 11:18:20 +08:00 |
|
zhaoxing
|
8fb28b98c7
|
fix(work-order): 收紧补资料链接过期校验
|
2026-11-01 11:12:08 +08:00 |
|
zhaoxing
|
15956e704f
|
feat(work-order): 新增一次性补资料链接
|
2026-11-01 10:46:31 +08:00 |
|
yml2213
|
7fab610159
|
feat(cost-center): 卡券规则批量生成与异常标签补齐
- 新增「批量生成渠道规则」,为 tpv: 商品一次性补 third_party_voucher 规则
- 异常原因补「缺少履约载体」,渠道标签补卡券/待分类/归档/未分类
|
2026-10-31 20:41:50 +08:00 |
|
yml2213
|
a62f6e1ec8
|
fix(pipeline): 变更按业务日回填,异常自动收口,载体管道加游标
- 渠道判定/成本快照返回受影响业务日,任务按日重算事实与总账
- 人工配置或载体补齐后,manual_config_missing / carrier_missing 自动关闭
- carrier_dispatch 使用水位游标,避免每轮从 id=0 重扫
|
2026-10-31 20:41:43 +08:00 |
|
yml2213
|
42d5874411
|
fix(cost): 快照变更即重算,0 元占位视为缺失,通用成本入账
- 预估→实际、补配价格时 supersede 旧快照再写新行,不再一次写死
- 全局 0 元版本不产生快照,转入 cost_missing
- 比例成本按 rate_bps 计算,费率为 0 视为未配置
- 平台费/支付费/售后等通用成本模型按渠道+通用各写一条快照
|
2026-10-31 20:41:38 +08:00 |
|
yml2213
|
6cd6401eca
|
refactor(finance)!: 事实维度与接口字段统一改名 channel
- migration 114 将 sales_daily_facts.fulfillment_mode 重命名为 channel
- DTO/查询参数/前端类型从 fulfillmentMode 统一为 channel
- 成本中心类型 FulfillmentMode 更名为 FulfillmentChannel,并补齐卡券/待分类/归档取值
- 销售事实响应分组改为 byChannel
|
2026-10-31 20:26:15 +08:00 |
|
yml2213
|
657e49f324
|
perf(pipeline): 已入队的异常不再重复 upsert,未映射只算已定渠道
- 载体/人工配置/人工成本三类扫描跳过已有未解决异常的订单项
- 成本中心「未映射订单项」只统计 assigned,待分类单归履约队列
|
2026-10-31 20:26:10 +08:00 |
|
yml2213
|
3f13b8a5f7
|
chore(cost-center): 下线会与管道冲突的旧商品入口
- 移除自动发货商品同步、SKU 回填、按工单回填、人工商品归一等旧接口与按钮
- 商品目录只保留「从接单模板初始化」与手工新建
- 自动发货面板移除已失效的「重算成本快照」入口
|
2026-10-31 20:17:39 +08:00 |
|
yml2213
|
d979ef50d6
|
perf(pipeline): 订单项管道改用水位游标并只扫缺失
- 新增 watermark-store:统一读写游标/日水位/失败原因
- 渠道判定、商品归一、成本快照从上次游标继续,到表尾后回绕重试
- 成本快照只处理没有有效快照的订单项,避免每 5 分钟全量重扫
|
2026-10-31 20:17:33 +08:00 |
|
yml2213
|
ce775ca102
|
feat(cost-center): 第三方卡券渠道完整接入成本模型
- 商品来源筛选补 tpv: 前缀,卡券商品列表不再为空
- 成本模型新增 third_party_voucher_cost,覆盖预览/成本项/概览作用域
- 前后端成本模型枚举与下拉同步
|
2026-10-31 20:17:28 +08:00 |
|
yml2213
|
9ca1d52419
|
fix(finance): 人工确认后按业务日重算事实与总账
确认履约写入 manual_case 快照后,立即按该订单业务日期重算销售事实并同步总账,
避免较早订单的成本只等 3 天窗口而永远入不了报表。
|
2026-10-31 20:17:28 +08:00 |
|
yml2213
|
8e3b8e0a32
|
fix(finance): 销售事实只统计已支付订单并扣减退款
- 事实范围增加 pay_status IN ('paid','refunded')
- 关联 order_refunds 已确认退款,净收入/毛利按扣除退款计算
- 补回归断言,防止再次出现退款不减收入
|
2026-10-31 20:17:23 +08:00 |
|
yml2213
|
0a77524331
|
refactor(finance): 总账人工渠道判定改用渠道/状态列
|
2026-10-31 19:52:40 +08:00 |
|
yml2213
|
f4e0c47744
|
feat(cost-center): 第三方卡券渠道归一与采购价配置
- 归一新增 tpv:<SKU> 直达,卡券单无需手工映射
- 成本配置/总览/异常支持 third_party_voucher 与 archived 维度
- 新增卡券采购价面板,写入 sys_third_party_voucher_cost
- 修正 man: 商品改价误用不存在的 sys_manual_cost
|
2026-10-31 19:52:32 +08:00 |
|
yml2213
|
0ce3c8fa97
|
feat(fulfillment): 渠道联动与管道兜底
- 人工配置保存/删除同步渠道规则,人工确认写 channel/status
- 按 SKU 指定渠道默认同时落规则
- 管道补充:载体缺失、人工成本未记录、事实与总账按水位追赶
|
2026-10-31 19:52:22 +08:00 |
|
yml2213
|
4272515956
|
feat(orders): 订单读取与筛选只认渠道/状态三列
- 展示与筛选全部改读 fulfillment_channel/status,不再回退旧列
- 支持 third_party_voucher 与 archived,legacy_platform 映射为归档
- 前端类型、筛选项与标签同步
|
2026-10-31 19:52:13 +08:00 |
|
yml2213
|
65b7f4f9dc
|
refactor(finance)!: 强制渠道模型,移除旧履约方式与同步链路
- 删除 fulfillment_mode 相关的旧同步/回填链路与定时任务
- 删除 cost_finance_sync、成本快照同步、人工商品归一等遗留服务
- 迁移 113 直接删除 order_items.fulfillment_mode 及其索引约束
- 断代脚本自带归档步骤,不再依赖独立回填脚本
- 退款/事实/总账统一走渠道版销售事实
|
2026-10-31 19:52:03 +08:00 |
|
yml2213
|
808949f3b8
|
feat(scheduler): 财务管道自动注册、水位记录与后台状态页
- 老配置读取时自动补齐六个管道任务,升级后无需手工添加
- 每个管道运行后写水位与 last_success_at,失败写 last_error
- 新增 GET /admin/fulfillment/pipeline/status 与单步重跑
- 后台「履约渠道 → 管道状态」展示启停、水位、最近执行与错误
- 定时任务管理接口不再丢弃管道自己的 config 字段
|
2026-10-31 19:13:38 +08:00 |
|
yml2213
|
2ba2656d58
|
feat(finance): 商品归一按接单模板/人工配置直接命中,减少手工映射
- 接单平台:用工单的 product_rule_id → tpl:<rule_key> 直接归一,不再依赖渠道映射
- 人工渠道:直接使用人工 SKU 配置里指定的商品
- 成本中心「未映射订单项」排除断代归档行,避免断代后仍显示历史未映射量
|
2026-10-31 19:05:02 +08:00 |
|
yml2213
|
6d86d4df7e
|
refactor(admin-web): 财务各页去掉大标题,统一由财务导航栏进入
- 销售毛利 / 收支明细 / 商品与成本中心 / 履约渠道 移除 PageHeader 大标题块
- 与钱包管理、总账与对账保持一致(这两页本来就没有大标题)
- 成本中心的「刷新」按钮并入统计口径行,功能位置不变
|
2026-10-31 18:42:20 +08:00 |
|
yml2213
|
4538ed2ce9
|
fix(admin-web): 履约渠道页导航栏移到标题上方,与其他财务页对齐
|
2026-10-31 18:34:45 +08:00 |
|
yml2213
|
9b01443424
|
feat(admin-web): 新增履约渠道页,含待分类队列与渠道规则
- 待分类按 SKU 聚合,可直接指定渠道(含第三方卡券仅统计渠道)
- 渠道规则支持新增/删除,展示优先级与作用范围
- 问题队列按类型筛选,统一使用 PercentTable
|
2026-10-31 18:12:31 +08:00 |
|
yml2213
|
855f2efcff
|
feat(admin): 履约渠道接口与断代运维脚本
- 新增 /admin/fulfillment 待分类、指定渠道、规则 CRUD、问题队列、管道触发
- backfill-fulfillment-channel:438k 行分批回填,幂等可续跑
- finance-cutover-v2:默认 dry-run,--execute 才清理派生数据,禁止重复执行
- rebuild-after-cutover:按断代日重跑三条管道并生成期初分录
|
2026-10-31 18:12:25 +08:00 |
|
yml2213
|
75a3801236
|
feat(scheduler): 六个财务管道作业,模板改价即同步成本版本
- channel_assign / carrier_dispatch / product_normalize / cost_snapshot / sales_facts / ledger_post
- 每个作业只写自己那一层,失败互不影响,可单独启停
- 接单模板保存后自动同步规则级成本版本,失败不阻塞模板保存
|
2026-10-31 18:12:19 +08:00 |
|
yml2213
|
3b0cfbb8fa
|
feat(finance): 商品归一、成本快照与渠道销售事实三条管道
- 商品归一统一为一个匹配器,禁止自动建商品,未命中进未归一队列
- 成本快照收敛为唯一入口:商品/规则/全局版本解析,工单验收自动升级 actual
- 异常改为 SKU 级聚合,补齐后自动关闭
- 销售事实按渠道汇总,pending 收入进 unclassified 桶,归档不进报表
|
2026-10-31 18:12:13 +08:00 |
|
yml2213
|
8cdc2423d5
|
feat(fulfillment): 新增渠道判定管道,规则优先、载体证据兜底
- 只写 channel/status/source,不再由「有没有任务」反推渠道
- 同优先级多渠道判为冲突并保持 pending,进配置冲突队列
- 运营指定渠道即锁定,自动判定不再覆盖
- 待分类队列按 SKU 聚合,支持按 SKU 批量指定
|
2026-10-31 18:12:06 +08:00 |
|
yml2213
|
4cf700e910
|
feat(db): 迁移 112 拆分履约渠道/状态/来源并收敛异常模型
- order_items 新增 fulfillment_channel / status / source / locked / decided_by
- 新建 sku_channel_rules(L1 渠道规则),从 aff 商品与人工配置生成 73 条初始规则
- cost_exceptions 改为 SKU 级问题头 + cost_exception_items 明细
- 新增 finance_watermarks 管道水位与第三方卡券成本项
- 销售事实枚举扩展 third_party_voucher / unclassified
|
2026-10-31 18:11:39 +08:00 |
|
yml2213
|
22400fbec6
|
fix(worker-platform): 资料更新不再覆盖并发抢单状态
|
2026-10-31 11:29:53 +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
|
4ef52f11ba
|
style(worker): 修复验收结算仓库的 Prettier 格式
|
2026-10-30 21:59:19 +08:00 |
|
yml2213
|
96ae744dbb
|
fix(worker): 验收重复提交幂等,修复卡待验收与手动验收 500
|
2026-10-30 21:33:56 +08:00 |
|
yml2213
|
a6ccb2e2d8
|
perf(finance): 统一把 Intl.DateTimeFormat 提到模块级,消除逐行构造开销
承接 14b595b0。以下 7 处仍在函数体内 `new Intl.DateTimeFormat(...)`,
单次构造约 0.5ms,按行/按条调用时会线性放大:
- utils/finance-date-range.ts formatShanghaiDate
- utils/http.ts (已在上一个提交修复)
- scheduler/cost-finance-sync-job.ts today
- finance/sales-facts-service.ts formatDateOnly
- finance/order-refund-service.ts toChinaDate
- admin/admin-finance-service.ts chinaDateParts
- admin/admin-dashboard-service.ts resolveChinaTodayRange
- scripts/sync-cost-finance.ts formatShanghaiDate
均为同选项的纯 hoist,输出逐字节不变:formatShanghaiDate 用 9 例跨时区/
毫秒/闰日语料与旧实现比对一致;其余为相同 en-CA/en-US + Asia/Shanghai
选项的等价替换,formatToParts 的取值改为单次遍历、去掉 fromEntries/reduce。
|
2026-10-30 21:23:31 +08:00 |
|
yml2213
|
14b595b0db
|
perf(http): 修复响应日期格式化每次重建 ICU formatter 导致的 CPU 热点
formatResponseDateTime 在函数内部 `new Intl.DateTimeFormat(...)`,而
buildSuccessPayload 会对每个成功响应的每个日期字段调用它。ICU formatter
单次构造约 0.5~0.8ms,V8 CPU 采样显示该函数占后端主线程约 30% CPU(约 0.33 核)。
改动:
- formatter 提到模块级只构造一次;formatToParts 直取字段,去掉
Object.fromEntries + filter + map 的三次分配
- isIsoDateTimeString 增加 O(1) 位置预判,避免对每个字段值跑正则
- normalizeResponseDateTime 用显式循环替代 entries/fromEntries 双重分配
- 同类问题一并修复:open-91 formatOpen91ExpireTime、redeem formatGrantTime
输出逐字节一致:新增等价性测试,以修复前实现为参考覆盖跨时区/毫秒/
闰日/跨年/非法日期语料。同形态响应(200 行 × 6 日期字段)实测
35.2ms → 2.6ms(13.6x)。
|
2026-10-30 21:20:11 +08:00 |
|
yml2213
|
fb485f7e36
|
feat(risk-control): 新增 IP/账号手动封禁,并收口财务同步的全表更新
- 风控:worker_risk_bans 表 + 前置封禁中间件(登录一并拦截)+ 后台列表/新增/解封
- 财务:成本快照补商品维度收口到本批 order_item_id,不再整表扫 899MB 的 order_items
- 性能:order_items 覆盖索引(迁移 110)、大厅 pageSize 上限 20、已读/上传接口限流
|
2026-10-30 20:15:14 +08:00 |
|