Commit Graph
118 Commits
Author SHA1 Message Date
zhaoxing e686a77a9e fix:拼单明细状态补齐中文映射 2026-10-27 11:01:19 +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
zhaoxing 6993c36efb fix:相机优化 2026-10-25 16:16:27 +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
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 f9aeece7ab add:新增同一个工单同一人可以多次拼单:拼单明细ui优化 2026-10-23 17:45:05 +08:00
zhaoxing bfd2325ac5 add:新增同一个工单同一人可以多次拼单 2026-10-23 14:26:41 +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 215f3351ba fix(claim): 优化H5领取与绑定界面商品图展示并集成发货存证凭据生成
- 修复后端 affiliate_dash 领取详情接口漏传 imageUrl 字段的问题
- 优化前端 ClaimProductImage 占位逻辑,消除无图或失败时的空灰色方块
- 移植并集成 affiliate_dash 前端 Canvas 高清发货到账存证凭据(Retina 640x960)
- 在兑换成功页面提供结果图预览、一键复制到剪贴板与下载凭据图片功能
2026-10-10 20:55:02 +08:00
yml2213 1339c6887e refactor(claim): 删除自建皮肤领取页,路径式 /claim/<token> 复用现成领取页 + 物品图片
**删掉上一轮自建的领取页**
- `pages/claim-skin/*`、`services/claim-skin.ts`、`types/claim-skin.ts`、`tests/claim-skin.test.ts`
  及其样式(client.css 里 `.claim-skin-*` 整段 254 行)
- 后台我加的展示项:「皮肤自动发货」筛选项、执行器标签、「买家提交信息」卡片

**路径式链接复用现成领取页**
- `utils/claim-path.ts`(中性命名 `isClaimPath` / `resolveClaimToken`)+ 单测
- `App.tsx`:pathname 命中 `/claim/<token>` → 独立 BrowserRouter 渲染**现成的 `ClaimPage`**
  (页面零复制零改动:它只用 `useParams`,不读 hash);`#/claim/:token` 仍走主站 HashRouter,
  两者互不影响,且有用例断言 hash 入口不命中路径判定

**物品图片**
- 后端领取详情的 `product.imageUrl` 接上(内部 SKU 在 `spec_json.code` / `sku_code` /
  `sku_name` 哪个字段都能回退找到图,映射不到返回空串)
- 领取页新增 `ClaimProductImage`:居中大图(宽度 min(220px,62%)、圆角 16px),
  空值或加载失败都降级虚线占位块,不出现破图

`npm run check`:前端 128 / 128 全绿(去掉旧用例 17 个、新增路径与图片用例)
2026-10-09 16:13:46 +08:00
yml2213 eacca11768 feat(claim-skin): 买家皮肤领取页(路径式 /claim/<token>)
买家从卡券/订单消息里的链接打开,看到物品图片与信息,填游戏账号即可领取。

- **路径式无 `#`**:新增独立 BrowserRouter 分支(照 `/redeem` 的做法),
  `isClaimSkinPath` 只认 `/claim/<token>` 两段精确匹配;
  打手领取页仍是主站 HashRouter 的 `#/claim/:token`(其 pathname 为 `/`),两者互不影响
- **物品卡片**:商品图(映射不到或加载失败都降级为占位块,不出现破图)、
  内部 SKU、数量 ×N、订单号、引流标题(灰色副信息)
- **领取表单**:按接口下发的 `claimFields` 动态渲染(游戏账号/角色ID),
  提交前二次确认让买家核对账号
- **状态**:待领取展示表单;已领取展示成功态(优先于 tokenStatus);
  token 失效/过期/关闭/已用分别给中文提示与联系客服引导
- 纯函数抽到 `utils/claim-skin.ts` 并补 20 个单测(路由判定、状态映射、字段校验、格式化)
2026-10-09 15:06:56 +08:00
yml2213 8c33ff62ec feat(redeem): 固定兑换链接 /redeem(输入订单号 → 状态分流 → 兑换)
- 路径式入口 `https://<域名>/redeem`(不带 #):主站是 HashRouter,
  故在 App.tsx 里早于 isWorkerSite() 插入独立 BrowserRouter 分支,
  主站与打手站路由均不受影响;Caddy 已有 try_files 兜底,无需改部署
- 页面按 7 种状态渲染:not_found / unpaid / cancelled / refunded /
  pending_certificate / redeemable / verified
  - not_found 保留用户输入的订单号,不清空
  - pending_certificate 只给显式「刷新」,不做自动轮询(公开限流接口,避免空转)
  - verified 只展示后端已掩码的券码,绝不渲染明文 certNo
  - confirm 不假设成功:一律按返回的 status 重渲染
- 纯函数抽到 utils/redeem.ts(无 React/antd、无 @ 别名),可直接跑单测
2026-10-09 12:01:35 +08:00
yml2213 1636616ec1 feat(worker-platform): 寄卖价格改由接单模板只读定价,我的寄卖支持服务端搜索与分页
1. 寄售价不再由卖家填写:打手端改为只读展示模板价(与履约押金同款只读框),服务端在发布时按同一套规则复算金额,保证展示口径与落库口径一致,直连接口也无法随意定价;
2. 模板缺档按「最接近的已配置档位」报价、距离相同取更低档:后台只配了 1/3/7 钻时,号主出 2 钻报 1 钻价、出 6 钻报 7 钻价,不再因为中间档没配价而拿不到价格;
3. 我的寄卖列表把分组、关键字、翻页全部下沉到 SQL:新增 listWorkerConsignmentPage 用 UNION ALL 合成「提报单行 + 无提报单库存兜底行」,CASE 推导 待审核/履约中/已完成 分组,返回当前分组 total 与三个分组的角标计数;
4. 关键字覆盖寄卖单号、规格名、系统/区服/系列/钻级、卖家角色名与数字 ID、联系方式、买家昵称与游戏 ID(读取 work_orders.material_json.collect.fields 的多种历史键名);
5. 前端搜索框 300ms 防抖后才请求服务端、换分组或换关键字自动回到第 1 页、列表底部增加分页器,并移除原来固定 pageSize 200 的隐形截断;
6. 新增仓库层与匹配层单测,其中包含 SQL 分组 CASE 与 domain/consignment-item-stage.ts 的 group 映射交叉断言,防止两处状态机漂移;后端 516 项、前端 66 项测试全部通过。
2026-10-01 11:07:28 +08:00
yml2213 0df5c9f34e feat(worker-platform): 抢单大厅首页新增联系客服胶囊入口并抽象通用客服弹窗组件
1. 抽离打手端通用联系客服弹窗组件 WorkerContactModal,统一维护微信二维码、打手账号/状态/余额回显、一键复制及沟通提示;
2. 抢单大厅移动端顶部状态栏(余额上限右侧首屏黄金位)新增精致微动效【联系客服】胶囊按钮,大幅缩短找客服沟通链路;
3. 抢单大厅桌面端头部操作栏同步补齐【联系客服】按钮,并在个人中心账号弹窗中统一复用 WorkerContactModal;
4. 适配移动端与超窄屏自适应响应式样式,完成前端59项测试与全量打包构建验证。
2026-09-21 12:37:38 +08:00
yml2213 a4f6f5ed9b style(worker-portal): 优化打手端我要寄卖页面顶部卡片布局,轻量化重构首屏体验
1. 移除第 4 个占位无意义的「发布寄卖 苏尔南」卡片,核心指标精准收敛为待审核、履约中、已完成 3 大状态;
2. 新增 worker-consignment-kpi-grid 紧凑统计栏,移动端改为横向 3 列等宽平铺,高度由 320px+ 骤降至 52px,竖向空间节省超 80%;
3. 剔除卡片内无实际价值的长句副说明文案,改为上行轻量状态标签 + 下行醒目数字的微排版,支持点击秒切记录过滤;
4. 彻底解决移动端首屏被巨幅卡片占满导致表单下沉的问题,首屏直接呈现履约押金提示与规格选择,提升打手发布效率;
5. 前端 59 个自动化测试全绿,全套 check 与 build 100% 通过。
2026-09-21 12:31:03 +08:00
yml2213 d40b5a4c1c feat(worker-platform): 优化打手我的寄卖卡片资料展示,前置展示打手自身上架账号资料
1. 后端 consignment-worker-service 在我的寄卖列表中解析并返回打手上架时填写的 sellerInfo(角色名、数字ID、区服系统、微信号/QQ、寄卖留言等);
2. 前端新增 ConsignmentSellerInfoBlock 卖家资料区块,提供角色名/ID高亮与一键复制功能;
3. 寄卖卡片布局升级为前置展示【我的寄卖账号资料】、后置展示【买家加好友资料】,多号上架时号主与买家清晰对应,彻底杜绝登错号加错人。
2026-09-19 14:19:35 +08:00
yml2213 8228776b8c fix(files): 修复 304 缓存未销毁流导致的 S3 连接池泄漏与图片挂起卡死 2026-09-17 21:03:20 +08:00
yml2213 c5d1e2c375 feat(consignment): 寄售匹配成功后向卖家端与客服后台透出买家加好友资料 2026-09-17 20:46:45 +08:00
yml2213 4e076ed628 style(worker): 寄卖规格 chips 只有一个选项时四角统一圆角
苏尔南区服现在只有「互通」一个选项,chips 的 :first-child/::last-child
圆角规则同时命中、last-child 在后覆盖成"左方右圆";补 :only-child
规则让唯一选项四个角都是 8px 圆角,与多选项时的观感一致
2026-09-17 13:04:27 +08:00
yml2213 44de11a3a7 feat(consignment): 一个寄卖单号锚定全流程 + 统一状态机 + 卖家侧确认加好友/提交赠送截图
问题:一件货身上挂着三套互不相通的状态(提报单审核态、仓库库存态、工单赠送态),
my-items 同时返回两个数组、卖家端分两个列表渲染,同一件货显示两行两个号;
且卖家端只映射了前两套状态,"已出库"之后流程就断了,卖家不知道该干什么。

- 提报单号 SUB… 作为唯一「寄卖单号」从发布锚定到结算(零迁移);
  listWorkerConsignments 改成一件货一条记录,库存/工单信息挂上去,
  客服手工入库的现货(无提报单)才回退用库存号当锚点
- 新增 domain/consignment-item-stage.ts:把三套底层状态推导成卖家看得懂的一个阶段
  (待审核/已通过待匹配/已匹配-待加好友/冷却中/待赠送/已赠送待审核/已完成/驳回/作废/取消)
  + 一句"下一步做什么" + 能力位(谁能确认加好友、谁该传截图),列表筛选与 KPI 也改由它驱动
- 卖家侧新增动作(以前只有 publish + my-items,卖家只能干看):
  POST /worker/consignment/items/:submissionId/{confirm-friend,gift-evidence}
  POST /worker/consignment/inventories/:inventoryId/{confirm-friend,gift-evidence}(手工入库现货)
  复用既有工单链路 confirmWorkOrderFriendAdded / submitWorkerOrderAcceptance,
  只加归属校验(不是本人履约的订单 403),顺带白拿"冷却没结束不许提交凭证""必须带图"
- 客服端用同一个号:库存列表/详情补 sourceSubmissionNo(LEFT JOIN 提报单),
  履约/指派写进工单的寄售信息也带上;关键字搜索支持按寄卖单号搜(计数 SQL 同步补 join)

真实库端到端验证:确认加好友 → gift_phase=friend_countdown / friend_added_at 落库 /
gift_available_at 正好 +72h;冷却期内提交截图被拒(work_order_gift_cooldown_active);
越权操作被拒(consignment_item_not_found);按寄卖单号搜索命中正确。临时数据已清理。
2026-09-17 10:57:57 +08:00
yml2213andCursor fd1eb5815b feat(consignment): 内部现货占库进入赠送冷静期并闭环发布押金
打手发布冻结履约押金,驳回/作废退还,验收释放;内部匹配履约立刻占用库存并跳过打手资料进入冷静期,撤销回库时补冻押金。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 20:03:11 +08:00
yml2213andCursor 4a6215e816 feat(consignment): 苏尔南寄卖接入打手端押金履约
打手可直接提报寄卖,关联 worker 与履约押金后指派交枪;后台去掉旧收集链接管理,提报审核与库存/工单流程对齐接单平台。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 16:00:33 +08:00
yml2213 18ac95ca27 feat(worker-hall): 接单大厅支持内部打手可见订单已发布时长标签 2026-09-13 11:14:16 +08:00
yml2213 9fcc4ef99d feat(product-rules): 接单模板列表支持二级目录层级联动筛选 2026-09-13 10:51:36 +08:00
yml2213 694d7fff40 feat(worker): 售后问题单去除人工居中宽度限制,统一Tabs切换并支持已结案默认折叠 2026-09-12 19:23:51 +08:00
yml2213 fb08f4552e feat(worker): 彻底重构售后问题单与工单仲裁中心视觉与交互体验 2026-09-12 19:16:12 +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 9979011ac2 feat(worker-hall): 抢单大厅UI视觉与布局全面优化升级
1. 桌面端顶部整合:将标题、实时派单呼吸标签、居中搜索栏与操作按钮整合在同一行,消除右侧大面积空白。
2. 4栏KPI仪表盘:重构大厅顶部数据指标为账户资金、接单配额进度条、在办工单状态(支持直达工单)、实时资源池4张高质感卡片,消除原横条留白与空洞感。
3. 游戏分类卡片视觉升级:无图标时根据分类自动生成多色高质感渐变背景与白色微拟物首字,优化选中与悬浮阴影态。
4. 工单卡片与保证金排版升级:优化卡片头部标签、订单号排版,金额与保证金突出展示(0保证金呈现绿色'免保证金'微标),强化立即抢单按钮渐变。
2026-09-12 18:59:27 +08:00
yml2213 d1e06f362e feat(category): 接单平台支持二级分类目录与接单大厅联动展示及限额优化 2026-09-12 18:45:56 +08:00
yml2213 91008c98c4 接单模板左侧编辑卡片吸顶固定不再随列表滚动 2026-08-22 14:07:59 +08:00
yml2213 67bb5fec15 优化打手端售后问题单页面展示问题类型处理结果与提交说明 2026-08-22 11:25:18 +08:00
yml2213 985e61209d 资金申请增加渠道筛选合计与审核留痕 2026-08-22 09:57:28 +08:00
yml2213 ed81122047 大厅与后台工单列表改为精确补丁并支持抢单确认 2026-08-22 09:30:38 +08:00
yml2213 1f7ff016df 新增打手端新订单语音播报开关 2026-08-22 09:12:26 +08:00
yml2213 cc03382921 优化手机端 2026-08-21 13:01:54 +08:00
yml2213 b2a1ac3db1 优化资金审核与流水展示 2026-08-21 12:54:44 +08:00
yml2213 c3bd6daee2 优化本地Mock接单 2026-08-21 12:39:24 +08:00
yml2213 993ddcd034 优化订单打手信息展示 2026-08-21 11:49:42 +08:00
yml2213 6539e0fb21 新增打手端滚动公告 2026-08-20 20:04:43 +08:00
yml2213 7b92d6b219 增加每日接单排行榜 2026-08-19 18:55:04 +08:00
yml2213 ca34187b0b 修复订单详情抽屉内容溢出 2026-08-19 18:49:15 +08:00
yml2213 052b99b05f feat(admin): 重构接单模板与商品绑定内联编辑 UI 布局
- 优化接单模板与模板列表 6:4 比例自适应布局
- 适用商品绑定支持左侧直接内联展开编辑,免弹窗模式
- 支持绑定规则多标签快速切换、实时新增与删除
- 基础表单与商品绑定统一采用 3 列网格布局,严格几何对齐
- 「启用拼单」开关及参数行内紧凑展开,移除多余背景框与纵向滚动条
2026-08-18 16:55:58 +08:00
yml2213 cf874b5429 优化模板匹配展示并修复映射迁移 2026-08-18 15:04:42 +08:00