zhaoxing
|
db73e8f820
|
refactor(collect): 移除旧补资料链接 token 体系
- 删除管理端生成补资料链接接口、链接仓储读写与 TTL 配置服务
- 删除补资料链接配置面板及前端相关服务、类型
- 新增迁移 113:删除 work_order_material_links 表与 work_order_material_link 配置
- 「复制补资料链接」改为本地复制 /supplement/<平台订单号>,不再请求后端
|
2026-11-01 18:26:07 +08:00 |
|
zhaoxing
|
a2cf48f5fc
|
feat(collect): 补资料改为订单号直连并按状态一次性提交
- 公开补资料页 /supplement/:订单号 直接按平台订单号查询,不再依赖链接记录;旧 token 链接一律 404
- 仅「待完善 + 未指派 + 无拼单份额」可提交,提交后状态变为待分配,重复提交返回 409
- 非可编辑工单只返回商品、工单号、状态与客服提示,不返回已填资料和截图
- 管理端新增「重置补资料」:待分配且未指派、无份额、未发布时一键重置回待完善
- 新增 canResetMaterial 能力与 material_reset 流转事件,工单状态文案统一为「待分配」
|
2026-11-01 18:12:44 +08:00 |
|
zhaoxing
|
aed76e047e
|
fix(admin): 用户付款金额改为单击修改
|
2026-11-01 16:30:22 +08:00 |
|
zhaoxing
|
53d9ff39ad
|
fix(admin): 用户付款金额单元格金额与编辑图标不换行
|
2026-11-01 16:26:40 +08:00 |
|
zhaoxing
|
5879568ad0
|
fix(worker): 用户付款金额仅待完善可修改并补后端校验
|
2026-11-01 16:22:45 +08:00 |
|
zhaoxing
|
d135a34e35
|
fix(worker): 用户付款金额未变化时不再写审计日志
|
2026-11-01 16:15:47 +08:00 |
|
zhaoxing
|
c46d9083a8
|
Merge branch 'main' into dev
|
2026-11-01 15:53:27 +08:00 |
|
zhaoxing
|
2ce8f601df
|
fix(worker): 不满额拼单母单显示待抢单,满额后才按份额状态推进
|
2026-11-01 15:43:20 +08:00 |
|
zhaoxing
|
4fd533c678
|
fix(worker): 拼单单人撤单后空出份额回大厅并重算母单状态
|
2026-11-01 15:12:11 +08:00 |
|
zhaoxing
|
c1dd2ee632
|
feat(work-order): 后台支持修改用户付款金额并留痕
|
2026-11-01 14:14:23 +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
|
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 |
|
yml2213
|
2b967ddd4c
|
feat(cost-center): 商品初始化/回填增加时间范围,默认最近 30 天
- 接单模板初始化预览/执行支持 dateFrom/dateTo,只使用范围内工单证据;
范围外模板不再先建商品
- 按工单回填商品支持时间范围;人工商品归一 UI 传时间范围
- 模板初始化重置只清理范围内导入映射/订单项,避免误伤范围外数据
- 初始化/回填默认最近 30 天,自动发货仍固定 30 天
- 文档更新初始化口径与页面操作
|
2026-10-26 16:26:48 +08:00 |
|
yml2213
|
288a0526ad
|
perf(cost-center): 建索引后立即刷新统计信息
|
2026-10-26 16:08:06 +08:00 |
|
yml2213
|
25012c30f4
|
perf(cost-center): 商品页跳过无关 affiliate 聚合并补部分索引
|
2026-10-26 16:04:52 +08:00 |
|
yml2213
|
f0dda3842b
|
test(worker): 校验拼单验收统一收口函数的寄卖钩子
|
2026-10-26 15:51:38 +08:00 |
|
yml2213
|
6dc1e7e727
|
fix(scheduler): 成本财务同步默认回退最近 7 天,避免小库语句超时
|
2026-10-26 15:49:51 +08:00 |
|
zhaoxing
|
2bfcdd5b1f
|
Merge branch 'dev1023' into dev
|
2026-10-26 15:26:43 +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 |
|