yml2213
|
0a595acfa9
|
feat(fulfillment): 增加未命中渠道兜底核销
|
2026-11-06 19:21:41 +08:00 |
|
yml2213
|
33d7c6597c
|
fix(worker-platform): 优化接单工单筛选布局
|
2026-11-06 17:43:55 +08:00 |
|
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
|
eef4cc1673
|
feat(fulfillment): 自动核销任务展示并搜索核销码
|
2026-11-06 10:47:45 +08:00 |
|
yml2213
|
398eafa911
|
feat(kuaishou): 增加历史电子券补发并核销
|
2026-11-06 10:38:26 +08:00 |
|
yml2213
|
1bf1280877
|
feat(consignment): 寄售仓库增加入库时间筛选
|
2026-11-05 21:19:28 +08:00 |
|
yml2213
|
ed450fac79
|
feat(fulfillment): 建立履约统一状态视图与分类队列
|
2026-11-05 20:13:34 +08:00 |
|
yml2213
|
e8b76b3b73
|
fix(fulfillment): 修复载体重试并完善核销任务列表
|
2026-11-05 18:36:10 +08:00 |
|
yml2213
|
8b9b4fc4ad
|
refactor(cost-center): 统一人工标准商品与成本配置
|
2026-11-05 17:58:57 +08:00 |
|
yml2213
|
a6fbb43955
|
feat(cost-center): 支持删除第三方卡券商品
|
2026-11-05 17:48:24 +08:00 |
|
yml2213
|
fc928c6b18
|
feat(worker-platform): 支持客户退款冲正并关闭订单
|
2026-11-05 17:15:41 +08:00 |
|
yml2213
|
4e83dbb84c
|
feat(fulfillment): 增加统一结算与多渠道人工履约
|
2026-11-05 16:14:56 +08:00 |
|
zhaoxing
|
f94b914ab1
|
fix(worker-platform): 修复售后两次点击并支持拼单份数联动追缴
|
2026-11-05 12:51:49 +08:00 |
|
yml2213
|
9f14e8de7a
|
feat(order-service): 重构分类资料收集与订单状态链路
|
2026-11-03 19:46:49 +08:00 |
|
zhaoxing
|
c2cc37b232
|
Merge branch 'main' into dev
|
2026-11-03 10:33:10 +08:00 |
|
zhaoxing
|
96676841b5
|
feat: 支持待分配/待抢单修改付款金额并增加价格历史
|
2026-11-03 10:31:46 +08:00 |
|
yml2213
|
4dc2f5ca90
|
fix(claim): 统一所有买家领取链接为 H5 订单号格式
|
2026-11-02 22:11:22 +08:00 |
|
zhaoxing
|
13869d345f
|
feat(worker-platform): 商品名按来源追加可配置后缀
- 新增来源后缀配置(来源下拉、启停、备注,同一时间仅启用一个)
- 管理端列表/详情与打手端列表/详情/大厅展示「商品名(后缀)」
- 打手端 DTO 透出 sourceProvider,仅展示,不改写商品名
- 新增来源选项接口与前后端单测
|
2026-11-02 14:25:53 +08:00 |
|
zhaoxing
|
db3f477ab3
|
fix(worker): 整单指派拼单订单无法验收
- 前端:拼单订单整单指派给本人时放行验收
- 后端:整单指派清掉 sharing_enabled;已有有效份额则拒绝
|
2026-11-02 12:02:24 +08:00 |
|
zhaoxing
|
a2cf48f5fc
|
feat(collect): 补资料改为订单号直连并按状态一次性提交
- 公开补资料页 /supplement/:订单号 直接按平台订单号查询,不再依赖链接记录;旧 token 链接一律 404
- 仅「待完善 + 未指派 + 无拼单份额」可提交,提交后状态变为待分配,重复提交返回 409
- 非可编辑工单只返回商品、工单号、状态与客服提示,不返回已填资料和截图
- 管理端新增「重置补资料」:待分配且未指派、无份额、未发布时一键重置回待完善
- 新增 canResetMaterial 能力与 material_reset 流转事件,工单状态文案统一为「待分配」
|
2026-11-01 18:12:44 +08:00 |
|
zhaoxing
|
5879568ad0
|
fix(worker): 用户付款金额仅待完善可修改并补后端校验
|
2026-11-01 16:22:45 +08:00 |
|
zhaoxing
|
c1dd2ee632
|
feat(work-order): 后台支持修改用户付款金额并留痕
|
2026-11-01 14:14:23 +08:00 |
|
zhaoxing
|
da16e8cf75
|
Merge branch 'dev'
|
2026-11-01 12:30:02 +08:00 |
|
zhaoxing
|
15956e704f
|
feat(work-order): 新增一次性补资料链接
|
2026-11-01 10:46:31 +08:00 |
|
yml2213
|
96ae744dbb
|
fix(worker): 验收重复提交幂等,修复卡待验收与手动验收 500
|
2026-10-30 21:33:56 +08:00 |
|
zhaoxing
|
2ddc26091c
|
feat:寄卖增加对接客服,页面移动到接单平台
|
2026-10-27 18:49:39 +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 |
|
zhaoxing
|
919e228452
|
fix:拼单明细状态补齐中文映射
|
2026-10-27 10:34:21 +08:00 |
|
zhaoxing
|
7743d2019c
|
fix:优化再拼一次bug,优化打手端移动端拼单列表显示
|
2026-10-26 16:36:26 +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 |
|
yml2213
|
ccc71e0aab
|
Merge branch 'main' into dev
|
2026-10-25 13:33:05 +08:00 |
|
yml2213
|
81edf530db
|
fix(worker-platform): 拼单取消后可重入,大厅置顶始终优先
|
2026-10-25 13:08:19 +08:00 |
|
zhaoxing
|
a7a8634a96
|
feat:加一个网站发布公告会弹出来点确定我已知晓的弹窗;mock数据自动匹配接单模板;本地访问模式修改
|
2026-10-25 12:27:32 +08:00 |
|
yml2213
|
465a9f65dc
|
Merge remote-tracking branch 'gitea-aliyun/main' into dev
|
2026-10-25 11:14:12 +08:00 |
|
yml2213
|
7fdef88ba6
|
perf(worker-hall): 优化百单大厅加载与渲染性能
|
2026-10-24 20:41:58 +08:00 |
|
zhaoxing
|
0d3dd3eacd
|
add:如果打手端使用的设备是移动端,验证图片和验证视频上传的时候加个调用相机的功能
|
2026-10-24 17:03:57 +08:00 |
|
zhaoxing
|
0ee5554f57
|
add:新增验证视频可选上传功能
|
2026-10-24 16:12:56 +08:00 |
|
yml2213
|
9f2206430f
|
style(frontend): 表格首列左对齐其余列居中
|
2026-10-24 15:49:51 +08:00 |
|
yml2213
|
8991263d25
|
fix(frontend): 修复百分比表格列宽与单元格居中
|
2026-10-24 15:13:05 +08:00 |
|
yml2213
|
ce8efa6bad
|
style(frontend): 全项目表格统一百分比布局并居中
|
2026-10-24 14:49:23 +08:00 |
|
zhaoxing
|
25756901cc
|
add:新增同一个工单同一人可以多次拼单:抢单大厅优化
|
2026-10-24 13:44:34 +08:00 |
|
zhaoxing
|
7e1e1f7075
|
add:新增同一个工单同一人可以多次拼单:拼单后按钮固定显示「再拼一次」
|
2026-10-23 16:37:59 +08:00 |
|
zhaoxing
|
1d5615f1ae
|
add:新增同一个工单同一人可以多次拼单
|
2026-10-23 15:14:07 +08:00 |
|
zhaoxing
|
067d54fdd8
|
接单平台:新增店铺筛选条件
|
2026-10-22 14:45:40 +08:00 |
|
yml2213
|
7e197c9413
|
fix(frontend): H5 领取前缀整段接管,/h5 裸链接不再跳后台登录
根因:公开路径判定原先只认「带参数」形态(isH5ClaimPath 只认 /h5/<orderNo>),
裸前缀 https://<域名>/h5(后台 claimLinkBase / certLink 的基址)判定不命中,
于是落回主站 HashRouter 被后台路由接管成
https://<域名>/h5/#/admin/dashboard 后台登录页。
- utils/claim-path.ts:isClaimPath / isH5ClaimPath 改为命名空间级判定(含裸前缀与多段路径),
参数解析仍严格;新增 resolveH5ClaimOrderNoFromInput(纯订单号 / 整条链接 / 缺协议 /
带后台残留 hash 都能取出订单号,只有前缀时返回空串)
- pages/claim/H5ClaimEntryPage.tsx:新增 /h5 领取入口页,买家输订单号或粘贴完整链接后
跳 /h5/<订单号>,走与分享链接同一套领取流程
- App.tsx:H5ClaimApplication 接管 /h5 整段前缀(/h5 入口页、/h5/:orderNo 领取页、
其它子路径回入口页);useClearStrayHash 抹掉历史残留的 #/admin/dashboard
- tests/claim-path.test.ts:补齐裸前缀、相邻前缀 /h5x、粘贴链接解析等回归用例
验证:npm run check 全绿(prettier + eslint + tsc + 143 单测 + vite build)
|
2026-10-13 13:42:06 +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
|
fe4d02d136
|
fix(worker-platform): 按工单号搜不到彻底收口 —— 显式单号检索不再被任何排他筛选吞掉
## 修的是什么
线上反复复发的「后台接单平台按工单号搜不到、某些状态尤其明显」,根因不是一处,
而是同一类问题在 5 个地方各留了一半(历次修复都只补了一处,所以总复发):
1. 状态筛选走运营态派生:拼单母单一旦有人参与,open → in_progress /
pending_acceptance,于是「单号 + 待接单」永远为空(没人参与时反而搜得到),
这正是「有人接单后就搜不到」;非拼单单子被接单后同理。
2. 「单号 + 接单人员 / 分类 / 打手等级 / 创建时间」照样过滤掉目标单
(接单人员是 INNER JOIN 可见集合,不在集合里整行消失)。
d6523635 只在面板查询按钮里清了 状态/赠送阶段/验收模式,这三个没清。
3. 待办通知跳转(buildNotificationActionPath 带 ?workOrderId=)设下的
「定位工单」是 wo.id = X 排他条件,不手点「取消定位」就一直生效,
之后搜任何别的单号都是空 —— 这条路径历次修复从未涉及。
4. AdminLayout 把服务端 operation='remove' 直接判成 mismatch,
绕过了「显式单号不删行」的护栏。
5. 打手端「我的订单」默认页签固定「代练中」,搜索不联动页签、
实时补丁又拿状态当可证伪条件删行 → 打手端同类问题(此前只修了关键词匹配)。
## 修法(收口到单一真源,不再按按钮打补丁)
后端:
- 新增 isExplicitOrderNoLookupKeyword()(工单号 / 平台单号 / SUB·INV·AS·DT);
- 后台列表筛选抽成纯函数 resolveAdminWorkOrderListFilters():显式单号检索时
不下推 状态/VIP待补图/验收模式/赠送阶段/接单人员/分类/打手等级/创建时间/定位工单;
- 打手端 resolveWorkerMyOrderStatusFilter():只放掉状态与 VIP 待补图,
**严格保留 workerSharingId 可见范围**(否则打手能搜到别人的单)。
前端:
- admin-realtime-work-orders.ts:显式单号检索直接判 unknown(含服务端 remove),
remove 的短路移交给判定函数;
- WorkOrdersPanel:单号检索时清空全部排他筛选并提示「已按单号精准检索,自动忽略…」,
通知定位工单时也清掉其它筛选,避免残留;
- WorkerOrdersPage:单号检索自动切「全部订单」;WorkerLayout 走新的
resolveWorkerMyOrderRealtimeVerdict(),与后台同策。
刻意不改(避免越权/召回不可用单):抢单大厅(候选必须是 open)、
寄卖手动匹配候选(只做未接单整单)。
## 验证
后端 npm run check 全绿:682 pass / 3 skip(新增 6 项);
前端 npm run check 全绿:138 pass(新增 6 项,含「单号检索 + 实时事件不得删行」,
以及「服务端 remove 不得绕过单号护栏」的回归);format/lint/typecheck/build 通过。
无数据库迁移。
|
2026-10-12 15:48:30 +08:00 |
|