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 |
|
yml2213
|
1b170d3f45
|
perf(worker-platform): 店铺筛选下拉加 5 分钟缓存,避免全表扫描拖垮生产
|
2026-10-30 19:30:56 +08:00 |
|
yml2213
|
dc78dc92d1
|
feat(cost-center): 接单模板商品全量同步,改价默认立即生效
|
2026-10-29 21:44:29 +08:00 |
|
yml2213
|
c7d650b482
|
fix(worker): 售后追缴自动驳回提现并扣冻结资金,修复欠款抵扣 500
- 修复欠款抵扣 SQL 参数类型冲突(debt_amount = $1 与 $1 = 0 推断不一致),
此前手动偿还、验收报酬抵扣、充值/押金解冻/寄卖自动抵扣都会 500
- 追缴顺序改为 待解冻押金 → 提现冻结 → 可用余额 → 欠款:
驳回待审核提现并直接扣走冻结资金,扣不完的部分退回可用余额
- 迁移 109:售后单记录 withdraw_deduction_amount,补 pending 提现部分索引
- 新增流水类型 after_sales_withdraw_deduction,前后端展示与标签同步
- 提现驳回退回余额后补调欠款自动抵扣,与充值/结算/解冻/寄卖路径对齐
- 补追缴分配单测与 SQL 参数类型静态门禁
|
2026-10-29 19:05:37 +08:00 |
|
yml2213
|
fba0a13d44
|
fix(fulfillment): 履约回填改用 keyset 分页并补充待回填部分索引
- 迁移 108:order_items (id) WHERE fulfillment_mode IS NULL 部分索引
生产已 CONCURRENTLY 预建;取 5000 条待回填 id 4.8s → 4.9ms
- reconcilePendingFulfillmentModes 增加 afterId / lastScannedId,批内固定 id > 游标
- 新增 resolveReconcileCursor:游标单调前进,未前进或不足一批即结束
- backfill-fulfillment-mode 支持 --afterId 断点续跑
|
2026-10-29 15:10:28 +08:00 |
|
yml2213
|
16b62a8e6d
|
fix(cost-center): 修复接单模板改价 SQL 参数类型推断冲突
同一个 $1 在 reward_amount 处按 bigint 推断,在 CASE ... THEN $1 ELSE 0 处
因字面量 0 被推断成 integer,node-pg 不发送参数类型时 PostgreSQL 直接报
inconsistent types deduced for parameter $1,导致改价 500。
显式写成 $1::bigint / 0::bigint,并补源码级回归测试。
|
2026-10-29 14:38:20 +08:00 |
|
yml2213
|
979a1bfa41
|
fix: 免审验收容错与成本中心归一回填超时修复
- worker:等级升级计数移出验收事务,瞬时错误重试一次,最终失败转人工待办且不再返回 500
- worker:待验收阶段修改验收资料时保留 reviewMode/evidenceStatus/evidenceDueAt
- cost-center:迁移 107 新增人工待归一覆盖部分索引(生产实测候选聚合 19.6s → 391ms)
- cost-center:归一人工商品/按工单回填商品/模板预览前端超时放宽到 300s
- cost-center:批处理接口语句超时放宽到 60s(SET LOCAL,在线接口仍为 15s)
|
2026-10-29 14:33:35 +08:00 |
|
yml2213
|
915ce017f3
|
perf(finance): 消除定时同步与后台页面的重查询
- 新增 order_items.manual_sku_key 生成列(迁移 106),统一内部 SKU 口径(skuNick → outSkuSn → sku_code → sku_name,去空格)
- 人工渠道匹配 8.4s → 62ms;人工商品归一写回 7.0s → 307ms
- 销售事实重算改为物化订单集合 + 预聚合成本/退款,6.9s → 0.5s 内
- 成本异常写入去掉逐项 LATERAL 工单探测,收口按最近 7 天窗口,7–8s → 0.5s 内
- 销售毛利订单统计去掉重复 NOT EXISTS,9.4s → 0.4s
- 接单平台店铺下拉改 EXISTS 半连接,3.1s → 0.3s
- cost-finance-sync 默认间隔 5 分钟 → 15 分钟;完整同步 51.2s → 34.9s
|
2026-10-28 13:41:11 +08:00 |
|
zhaoxing
|
2ddc26091c
|
feat:寄卖增加对接客服,页面移动到接单平台
|
2026-10-27 18:49:39 +08:00 |
|
yml2213
|
0d9fb29460
|
fix(admin): 移除总账与对账页重复的页面标题
|
2026-10-27 16:41:55 +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 |
|
zhaoxing
|
a53321ef30
|
feat:寄卖增加对接客服,db脚本迁移修复
|
2026-10-27 13:56:08 +08:00 |
|
zhaoxing
|
622bd779dd
|
feat:寄卖增加对接客服,db脚本迁移修复
|
2026-10-27 13:39:48 +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 |
|
zhaoxing
|
e686a77a9e
|
fix:拼单明细状态补齐中文映射
|
2026-10-27 11:01:19 +08:00 |
|
zhaoxing
|
ebab13633c
|
fix:拼单明细状态补齐中文映射
|
2026-10-27 10:47:26 +08:00 |
|
zhaoxing
|
919e228452
|
fix:拼单明细状态补齐中文映射
|
2026-10-27 10:34:21 +08:00 |
|
yml2213
|
c8b7e80979
|
perf(template): 补模板证据日期/覆盖索引,预览降到秒级
|
2026-10-26 16:43:56 +08:00 |
|
zhaoxing
|
7743d2019c
|
fix:优化再拼一次bug,优化打手端移动端拼单列表显示
|
2026-10-26 16:36:26 +08:00 |
|