Commit Graph
33 Commits
Author SHA1 Message Date
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
zhaoxing d787d3c364 feat:抢单大厅数据排列优化 2026-10-25 14:41:13 +08:00
yml2213 2fb7aae13f feat(auth): 登录态改为滑动续期(后台 24h/7d,打手 7d/30d) 2026-10-25 13:28:58 +08:00
zhaoxing a7a8634a96 feat:加一个网站发布公告会弹出来点确定我已知晓的弹窗;mock数据自动匹配接单模板;本地访问模式修改 2026-10-25 12:27:32 +08:00
zhaoxing 25756901cc add:新增同一个工单同一人可以多次拼单:抢单大厅优化 2026-10-24 13:44:34 +08:00
zhaoxing 7e1e1f7075 add:新增同一个工单同一人可以多次拼单:拼单后按钮固定显示「再拼一次」 2026-10-23 16:37:59 +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
yml2213 f4c405d51a fix(worker): 打手端实时补丁不再误删"按工单号搜到的行",并同步分页总数
这是后台那个"搜工单号搜不到、必须刷新整页"在打手端的同源副本:
WorkerLayout 的 operation = event.operation === 'remove' || !matches ? 'remove' : 'upsert'
只要前端判"不匹配"就删行,而前端关键词匹配器**没有比对工单号**——
后端搜索表达式的第一项恰恰就是 work_order_no(还有 material_json 里更多前端不知道的字段)。
于是按工单号搜索时,该单一旦有实时变更,行就被从缓存删掉、列表变空。

修法与后台侧对齐:
1. 抽出 utils/worker-realtime-work-orders.ts(可单测、无运行时依赖),关键词匹配补上
   workOrderNo,并改成三态判定——状态/分类等可证伪维度不符才删行;关键词能找到=match
   (允许插入),找不到=unknown(不删不插,只就地更新)。
2. patchWorkerWorkOrderListEnvelope 增删行时同步 data.pagination.total,
   修掉"列表空了、分页器还显示有 N 条"。
3. 大厅无限下拉只在第 1 页允许插入,其余页只就地更新。

验证:前端 86 项单测全绿(新增 6 项,覆盖"按工单号搜索+实时变更不得删行"、
unknown 只就地更新、删/插同步总数、无限下拉页边界)。
2026-10-01 13:48:05 +08:00
yml2213andCursor 4a6215e816 feat(consignment): 苏尔南寄卖接入打手端押金履约
打手可直接提报寄卖,关联 worker 与履约押金后指派交枪;后台去掉旧收集链接管理,提报审核与库存/工单流程对齐接单平台。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 16:00:33 +08:00
yml2213 402c10e9b6 feat(worker-platform): 接单平台全平台UI/UX视觉重构与体验升级
1. 全局导航侧边栏 (WorkerLayout):
   - 打造专属品牌Logo标识与实时在线脉冲呼吸灯
   - 打手身份卡片化:展示打手名称、在线状态徽章、会员等级及可用余额药丸徽标
   - 导航菜单选中项增加橙色微光背景与指示条,售后问题单菜单支持待处理红点角标

2. 我的订单管理 (WorkerOrderDesktopList):
   - 桌面端整合头部:标题 + 实时在办监控徽标 + 居中搜索框 + 刷新按钮单行整合
   - 新增4栏工单态势KPI看板:代练进行中、等待验收、异常与问题单、已验收完结,支持点击卡片即时联动筛选
   - 胶囊化状态过滤与结算收益金额说明

3. 售后问题单 (WorkerAfterSalesPage):
   - 桌面端整合头部:待说明紧急红点药丸徽标、分段筛选与刷新按钮

4. 个人中心 (WorkerProfileDesktopSections):
   - 打造全新打手Hero身份卡:大号头像环、等级徽标、UID、手机、邀请码一键复制芯片、会员权益微标签与晋级进度条
   - 4栏立体资产看板:可用余额、冻结押金、待解冻金额、累计结算收益
   - 快捷操作按资金管理、安全与设置、其他服务结构化分组
2026-09-12 19:08:10 +08:00
yml2213 ffb71f2276 修复接单端过期会话重复请求 2026-08-30 17:32:34 +08:00
yml2213 f20ff3018f feat(打手): 支持个人追加免押额度 2026-08-28 21:36:54 +08:00
yml2213 70b31f4874 SSE鉴权失效停止重连清理会话跳登录并降噪4xx错误日志 2026-08-23 11:01:41 +08:00
yml2213 7e1c879c41 修复新订单广播绕过等级可见延迟导致抢单提示不可拼单 2026-08-22 18:56:00 +08:00
yml2213 ed81122047 大厅与后台工单列表改为精确补丁并支持抢单确认 2026-08-22 09:30:38 +08:00
yml2213 1f7ff016df 新增打手端新订单语音播报开关 2026-08-22 09:12:26 +08:00
yml2213 700bda8250 优化售后问题单后台位置 2026-08-21 20:03:37 +08:00
yml2213 f4d32a7c07 增加售后相关的 2026-08-21 14:30:00 +08:00
yml2213 874b093a4b 新增大厅订单容量控制 2026-08-21 14:02:30 +08:00
yml2213 6539e0fb21 新增打手端滚动公告 2026-08-20 20:04:43 +08:00
yml2213 12ca943170 优化打手注册和列表筛选 2026-08-20 09:52:51 +08:00
yml2213 ee79195f47 完善拼单状态与份额验收流程 2026-08-18 18:02:43 +08:00
yml2213 370acdba60 增加工单首次查看标识 2026-08-17 20:11:35 +08:00
yml2213 2aa8769661 改造实时事件缓存同步 2026-08-17 17:32:02 +08:00
yml2213 18dad9b0fe 增加订单实时状态同步 2026-08-17 14:51:51 +08:00
yml2213 81ae04dae0 接入 ESLint 并清理未使用代码
- 前后端接入 ESLint 10 扁平配置(typescript-eslint 类型感知检查 + react-hooks/react-refresh),新增 lint / lint:check / lint:fix 脚本并纳入 check 链路
- 清理全部 no-unused-vars 与 no-useless-assignment 警告,修复 floating promises、正则转义等问题
- 删除确认无引用的死代码(markKuaishouCloudBindUrlRefreshFailed、未使用 helper 等)
2026-08-16 18:04:55 +08:00
yml2213 bc2909d6f2 打手端迁移至独立子域名 2026-08-16 16:08:38 +08:00
yml2213 8a5ba4c2f3 优化接单大厅数量和排行榜 2026-08-16 13:36:16 +08:00
yml2213 10ae3d01ee 初步优化手机端ui 2026-08-16 10:33:45 +08:00
yml2213 1dd92ec10c 统一登录页品牌样式 2026-08-02 16:59:26 +08:00
yml2213 f0ba0fe17f 修复接单平台并发、分页与补资料 2026-07-28 10:15:44 +08:00
yml2213 f6d3f00f21 新增接单平台第一期闭环 2026-07-25 13:58:53 +08:00