yml2213
74b62f3494
feat(finance): 订单页人工录单按单实际金额计入成本
2026-10-22 19:48:56 +08:00
yml2213
cb064d7cd5
fix(worker-platform): 工单号前缀改 WK 并在检索侧容错 O/0,彻底解决「按工单号搜不到」
...
## 线上定位到的真正根因
客服搜 `WO26101213031939` 搜不到,但用同单的平台号 `2628501763808879` 搜得到。
到生产库核对后确认:
- 库里真实值 `work_order_no = WO26101213031939`(hex 574f… = 字母 O),状态 pending_acceptance;
- 用字母 O 的 SQL 分支 → 1 行;用数字 0(`W026101213031939`)→ 0 行;
- 全库 127,906 单**全部**以 `WO` 开头、`W0` 开头 0 单、字母 `o` 只出现在第 2 位。
即:前缀里的字母 O 被输成数字 0(`WO` / `W0` 在界面字体里几乎无法区分),
落进通配符分支后必然为空 —— 与前面几轮的「筛选把单藏起来」是两个独立成因,
这也解释了为什么改筛选逻辑一直没解决。
## 修法
1. 生成端换前缀:generateWorkOrderNo 产出 `WK…`(K 与 0 不会看混),从源头消掉歧义;
2. 检索端同时兼容三种写法(历史 WO 号无需迁移):
- isWorkOrderNoLookupKeyword 放宽为 `^W[oOkK0]…`;
- 新增 buildWorkOrderNoKeywordVariants:W0→[W0, WO, WK]、WO→[WO, W0]、WK→[WK],
SQL 分支对每个候选下发「等值 + 前缀」条件(仍是索引条件,不会退化成全表扫);
- 前端 isExplicitOrderNoSearch 同步(否则面板不清理筛选、实时补丁护栏也不生效);
3. 顺手加一层归一化:NFKC(全角→半角)+ 去零宽字符,前后端同一口径
(normalizeLookupKeyword / normalizeSearchText),覆盖「粘贴带不可见字符」这类同族问题;
4. 寄卖匹配弹窗的占位提示更新为 WK... / WO...。
## 验证
- 后端 npm run check 全绿:692 tests(689 pass / 3 skip),新增
work-order-keyword-lookup.test.ts 直接断言 SQL 参数与「不得出现前置通配符」;
- 前端 npm run check 全绿:139 tests;
- 既有用例 worker-platform-repo.test.ts 的期望值同步为新形态(两条候选条件)。
2026-10-12 16:51:08 +08:00
yml2213
080480f03b
feat(admin): 后台新增「抖音码速达」配置面板
...
- 新增 Tab:/admin/platform-shops?tab=douyinMashida
- 面板字段:enabled / baseUrl / uid / secret / certLink / afterVerifyLink /
afterVerifyMessage / messageType / timeoutMs / handledTopics(tags)
- 密钥脱敏:出参 secret 永远为空,输入框未编辑时对外 value 恒为 '',
掩码不会污染后端「空串=保留原值」语义
- 顶部展示 ready 状态,未就绪时用 Alert 列出缺哪几项;
始终展示平台侧要配的推送地址(可复制)
- baseUrl 命中本地地址时提示「当前指向本地网关桩,不会请求真实码速达」
- 把 AdminPlatformShopsPage 内联的 SecretFieldControl 抽成共享组件
(函数体与原实现逐字节一致,8 处既有调用点参数不变)
2026-10-09 12:01:29 +08:00
yml2213
893388b37f
feat(consignment): 寄售仓库在库列表增加通过审核入库时间并在手动匹配中补全时间展示
...
- 寄售仓库 (ConsignmentInventoryPanel):表格中增加「通过审核入库时间」列并格式化展示,详情弹窗规范化展示入库时间、出库时间与提报时间
- 手动匹配弹窗 (ConsignmentManualMatchModal):候选订单列表展示工单创建时间,顶部横幅与已选概要展示现货入库时间及订单创建时间;从订单匹配现货时展示现货入库时间
- 内部匹配接口与工单拦截:后端 listInventoryMatchableOrders 返回工单创建时间及平台单号;发布拦截弹窗中增加展示现货入库时间
- 验证方式:运行前后端单元测试全部通过,前端 build 校验通过
2026-10-08 15:41:23 +08:00
yml2213
c80bd0e337
fix(worker-platform): 修复寄售匹配工单详情中卖家上架截图丢失问题,并收敛手动匹配为内部现货直接履约
...
1. 修复文件归一化器 normalizeUploadedFiles 遇到纯字符串 URL 数组被误过滤为空的问题,自动提取 objectKey 并构造规范 UploadedFile 结构;
2. 优化工单展示映射器 resolveWorkOrderEffectiveBoosterMaterial:当工单资料中截图为空时,自动回退并加载寄售卖家上架/主页截图;
3. 前端管理后台详情抽屉与打手端详情抽屉支持读取 detailOrder.gift.boosterMaterial.screenshots 与 consignmentInfo.screenshots 降级兜底渲染;
4. 手动匹配弹窗与发布拦截弹窗全面收敛为单一标准的【内部现货直接履约】,废除旧版指派打手带来的重复扣押金与二次填资料问题;
5. 新增 consignment-booster-material 单元测试,更新寄卖库存优化现状与进度追踪文档,前后端全套测试通过。
2026-09-21 11:35:38 +08:00
yml2213
f07e4087ad
feat(consignment): 优化寄售仓库与接单工单双向手动匹配,支持工单号与提报单号检索与强制匹配
...
1. 寄售仓库手动匹配订单扩充支持 open 状态工单,增强 WO 工单号与纯数字的模糊/前缀搜索,修复工单搜不到的问题并在卡片高亮展示内部工单号与状态;
2. 接单工单操作列全面支持【手动匹配寄售】,允许从接单工单主动调起寄售匹配弹窗;
3. 寄售现货筛选支持通过 SUB 提报单号、INV 仓库号、供货打手等快速搜索;
4. 完善规格冲突下的强制匹配确认与必填原因提交机制,确保履约全流程留痕合规。
2026-09-19 17:59:05 +08:00
yml2213
8631100d07
style: 统一代码格式化与代码规范
2026-09-19 10:41:15 +08:00
yml2213
a5727554a4
feat(worker-platform): 彻底去除非平台内部现货履约,寄卖匹配全面收敛为接单平台指派打手
...
1. 手动指定现货弹窗移除 deliveryKind 冗余单选框,统一收敛为一键指派供货打手履约;
2. 匹配确认后自动冻结打手履约押金、启动交付倒计时与履约时效监控,消除脱管盲区;
3. 订单发布前置拦截弹窗移除内部代交付入口,统一为走接单平台指派;
4. 未关联供货打手的现货进行明确阻断与告警提示,避免无监管指派;
5. 同步更新前端静态单测并保证全量测试与构建通过。
2026-09-19 10:28:23 +08:00
yml2213
b666a9c951
fix(consignment): 拼单份额验收收官补寄卖结算钩子 + 手动匹配弹窗三处复核遗留
...
- acceptWorkOrderShareAndSettle 最后一个份额把母单转 accepted 的分支,
此前不释放发布押金也不结算供货货款(两钩子只在统一验收里):
现在同口径补上;供货货款传 assignedWorkerId=0(拼单母单无单一接单人,
份额打手已各自按 share_reward 结算,不会重复付款)
- 手动匹配弹窗:race_condition/unavailable/spec_mismatch/partial_requires_confirm
四个错误码清空已选并自动重拉列表,数据过期不再死循环撞错
- 手动匹配弹窗库存侧:keyword+pageSize100 透传后端(原来 keyword 是死参数、
只拉 50 条),300ms 防抖后端搜索;无供货打手时禁用指派选项并在提交前
再拦一道(原来必 400 死路);选中订单回显 workerId/workerName
- 凭证核销反馈抽共享 utils/voucher-consume,WorkOrdersPanel 与弹窗共用,
口径不再漂移(弹窗顺带获得"已提前核销 N 张"提示)
- docs/寄卖系统优化方案.md 记录批次 V
后端 477(+4)/ 前端 50(+1)测试全绿,typecheck / lint / format / check:sql 通过
2026-09-17 12:45:51 +08:00
yml2213
0476339ec4
fix(consignment): 手动匹配订单按钮点了不弹窗(弹窗挂错了位置)
...
用户反馈:在库待匹配列表点「手动匹配订单」没有反应。
根因:上一批把手动匹配弹窗挂到了「编辑寄售物品」弹窗**内部**,外层弹窗未打开时
该组件根本没被挂载,点击只改状态、界面无变化。
- 弹窗移到面板顶层(与其它弹窗同级),点击即弹
- 新增静态守卫测试:断言手动匹配弹窗前面不能有未闭合的 Modal(即不能嵌在别的弹窗里)、
按钮必须真的 setState、open 由该状态驱动;已验证该守卫能拦下错误写法
- 顺带补入口缺口:订单侧原先只在"检测到系统候选"的提醒弹窗里给入口,订单没有任何候选时
反而进不去手动匹配 —— 工单行内新增常驻「手动匹配现货」(仅待指派/待补资料,
与后端前置校验同口径)
- 已暂停匹配的现货点按钮会直接 409,改为按钮禁用并提示先打开「允许匹配」开关
- destroyOnClose → antd 6 的 destroyOnHidden(前者已废弃)
验证:前端 typecheck/lint/format/48 例测试/build 全过。
2026-09-17 12:27:58 +08:00
yml2213
a7a55d6c16
feat(consignment): 客服手动指定现货匹配的界面入口
...
后端批次已提供判定/差异/强制留痕与双向读取接口,这里补界面,让客服真的能用上。
- 新增共享弹窗 ConsignmentManualMatchModal:订单侧(匹配弹窗「手动指定现货匹配」)与
库存侧(寄售仓库行内「手动匹配订单」)共用同一套交互与落地逻辑,避免两套 UI 漂移
- 交互:搜索 → 选中(精确/非精确/规格冲突三档标签 + 字段级差异说明)→ 选交付方式
(内部现货履约 / 指派供货打手)→ 非精确需勾选确认、冲突需勾选「确认规格不一致」并必填原因
→ 落地;并在落地前提示"现货立刻被占用、点错需撤销寄售履约"
- 判定规则收敛成纯函数 consignment-manual-match.ts(需不需要确认/填原因、能否提交、
关键词过滤、标签文案)并加 4 例单测
- 服务与类型补齐:fetchWorkOrderConsignmentMatchOptions / fetchInventoryMatchableOrders,
fulfill/assign 入参增加 allowSpecMismatch 与 matchNote
- 凭证核销失败的提示沿用既有规则(核销失败不能报成功)
验证:前端 typecheck/lint/format/44 例测试/build 全过;两个新接口未登录访问均 401
(路由已挂载、权限位生效)。
2026-09-17 12:23:30 +08:00
yml2213
ca04e09deb
feat(consignment): 客服端凭证链可视化(提报凭证 + 赠送凭证)
...
问题:一件寄卖有两类凭证,客服界面只看得见第一类,还是 48x48 一张缩略图,
看不出是主页还是物品;第二类(证明"这件货真送出去了"的赠送完成截图)只在工单验收界面,
客服要证明赠送是否完成得自己跨模块翻,没有任何地方把两类凭证并排呈现。
- 两类凭证分别在哪里:
提报凭证 = 提报表 screenshots_json(卖家提报时的游戏主页截图,含物品/仓库详情)
赠送凭证 = 绑定工单的验收资料 work_orders.acceptance_json(冷却结束后上传、客服凭此验收)
- 后端把凭证链从客服两个列表/详情接口一起下发:提报表/库存 → 结果库存 → 绑定工单,
新增 submissionScreenshots / giftEvidenceImages / giftEvidenceNote / giftEvidenceSubmittedAt /
giftWorkOrderNo / giftWorkOrderStatus / giftEvidenceReviewStatus(none|pending|accepted|submitted);
赠送凭证图从 imageUrls 与 files[].url|mediumUrl|thumbnailUrl 两处取并去重
- 提报凭证口径统一:有来源提报单用提报单主页截图,客服手工入库现货回退库存自身截图,
前端只看 submissionScreenshots 一个字段,不会拿错
- 前端新增共享组件 ConsignmentEvidenceGallery(缩略图 + 大图预览 + 共 N 张,
预览用 Image.PreviewGroup items,被折叠的图在大图里仍能翻看);审核面板把「凭据截图」
拆成「提报凭证(游戏主页截图)」与「赠送凭证」(带待验收/已验收 Tag + 关联工单 Tooltip),
仓库面板新增「凭证」列并分组展示,两个详情弹窗同口径(含备注/提交时间/工单号/一句话说明)
真实库验证:赠送凭证解析在构造的工单验收资料上取到 3 张图(imageUrls 1 + files 2)并识别
pending_acceptance → 待客服验收;提报凭证在真实数据上取到 1 张。临时数据已清理。
2026-09-17 11:22:59 +08:00
yml2213 and Cursor
b7d246e5b9
fix(admin): 任务列表商品名与执行器标签改为中文展示
...
建单时不再把英文 sku 写入商品名,列表按映射反查中文名,并将 Affiliate Dash 等标签本地化。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-15 13:03:47 +08:00
yml2213
476ab166d7
修复资金申请渠道筛选失效并为时间筛选增加快捷选项
2026-08-22 12:08:11 +08:00
yml2213
5c7c3e14e3
统一前后端代码格式化配置
2026-08-16 17:27:12 +08:00
yml2213
d52a16bf85
统一日期时间选择器为中文
...
- 全局初始化 dayjs zh-cn,修复日历周/月英文
- 新增 AdminDatePicker / AdminRangePicker 统一格式与占位文案
- 任务、审计、云触手、行业售后等筛选统一使用
2026-07-10 16:07:29 +08:00
yml2213
32eb442b72
修复链接 feifei 不展示
2026-07-09 18:57:52 +08:00
yml2213
dbcb5a4979
重命名前端目录
2026-07-07 19:55:18 +08:00
yml
837e1c6e66
清理旧履约模型残留
2026-05-27 14:22:23 +08:00
yml2213
4cd9e6d5b6
优化订单列表状态标签布局
2026-05-26 13:20:29 +08:00
yml
2c7464b1eb
删除库存和旧回调管理
2026-05-25 23:07:19 +08:00
yml
a39d43c4d6
使用element ui
2026-05-21 20:16:27 +08:00
yml2213
787b01749c
feat(frontend): add P2 quality gates
2026-05-15 17:35:50 +08:00
yml2213
11678a7f83
admin后台 第一阶段目录优化
2026-05-15 14:12:38 +08:00
yml2213
be21304ef9
交付任务-ui优化ok
2026-05-14 23:11:19 +08:00
yml2213
a554fee36e
优化订单列表ui
2026-05-14 21:17:14 +08:00
yml2213
0288e8f578
ui优化-2
2026-05-14 20:16:04 +08:00
yml2213
cfe2c03f1b
ui优化
2026-05-14 19:47:31 +08:00
yml2213
7775525f30
平台配置页改造
2026-05-14 19:05:08 +08:00
yml2213
f7f3289d04
简单的定时任务--ok
2026-05-14 17:59:45 +08:00
yml2213
b6c493d5e7
通知系统-1
2026-05-14 17:29:12 +08:00
yml2213
83cb2ff1fa
移除了 khhao 平台相关
2026-05-14 13:08:24 +08:00
yml2213
a95e48b708
补全一些基础信息
2026-05-13 20:18:58 +08:00
yml
58f25fad74
抽离平台配置结果信息卡片
2026-05-04 11:27:31 +08:00
yml
8f6a72fa46
拆分平台配置页履约调试区块
2026-05-04 11:19:17 +08:00
yml
254a03129a
拆分平台配置页快手核销区块
2026-05-04 11:06:37 +08:00
yml
60c2d91385
拆分平台配置页 Agiso 与 khhao 区块
2026-05-04 10:49:53 +08:00
yml
90cb7aa154
完整流程-调试
2026-05-03 18:44:44 +08:00
yml2213
17ab393280
优化了部分界面ui
2026-04-23 14:46:06 +08:00
yml2213
fa36be6539
后端可视化调试
2026-04-14 00:21:32 +08:00
yml2213
0c2f2e0a12
增加兑换重试链路
2026-04-13 22:54:14 +08:00
yml
75647e9eed
半自动+人工”链路已经落下第一版
2026-04-12 19:07:51 +08:00
yml
0029147bc4
外部测试内部绑定ok
2026-04-12 13:16:50 +08:00
yml
313c036845
init
2026-04-08 16:30:42 +08:00