yml2213
|
e85bbee7e0
|
fix(worker-platform): 支持寄售筛选叠加接单人员
|
2026-11-06 17:53:31 +08:00 |
|
yml2213
|
4e83dbb84c
|
feat(fulfillment): 增加统一结算与多渠道人工履约
|
2026-11-05 16:14:56 +08:00 |
|
yml2213
|
1df88cc639
|
feat: 完善履约路由、订单服务与自动核销
|
2026-11-05 14:59:58 +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
|
360cfceac7
|
Merge branch 'dev'
|
2026-11-02 12:04:32 +08:00 |
|
zhaoxing
|
db3f477ab3
|
fix(worker): 整单指派拼单订单无法验收
- 前端:拼单订单整单指派给本人时放行验收
- 后端:整单指派清掉 sharing_enabled;已有有效份额则拒绝
|
2026-11-02 12:02:24 +08:00 |
|
yml2213
|
8b0666caec
|
Merge remote-tracking branch 'gitea-aliyun/main'
|
2026-11-02 07:54:57 +08:00 |
|
zhaoxing
|
a2cf48f5fc
|
feat(collect): 补资料改为订单号直连并按状态一次性提交
- 公开补资料页 /supplement/:订单号 直接按平台订单号查询,不再依赖链接记录;旧 token 链接一律 404
- 仅「待完善 + 未指派 + 无拼单份额」可提交,提交后状态变为待分配,重复提交返回 409
- 非可编辑工单只返回商品、工单号、状态与客服提示,不返回已填资料和截图
- 管理端新增「重置补资料」:待分配且未指派、无份额、未发布时一键重置回待完善
- 新增 canResetMaterial 能力与 material_reset 流转事件,工单状态文案统一为「待分配」
|
2026-11-01 18:12:44 +08:00 |
|
yml2213
|
eb5c18b5b5
|
refactor(finance): 清理 legacy_platform 的展示与死查询
- 未归一组统计默认渠道补上 third_party_voucher,移除已无数据的 legacy_platform
- 前端移除历史归档/历史平台的类型与标签
- 保留后端口径的 legacy_platform→archived 筛选别名,旧链接不报错
|
2026-11-01 17:32:18 +08:00 |
|
zhaoxing
|
c1dd2ee632
|
feat(work-order): 后台支持修改用户付款金额并留痕
|
2026-11-01 14:14:23 +08:00 |
|
yml2213
|
6c3e360392
|
merge: 合并远程 main(补资料链接与工单验收修复)
|
2026-11-01 13:58:45 +08:00 |
|
zhaoxing
|
15956e704f
|
feat(work-order): 新增一次性补资料链接
|
2026-11-01 10:46:31 +08:00 |
|
yml2213
|
6cd6401eca
|
refactor(finance)!: 事实维度与接口字段统一改名 channel
- migration 114 将 sales_daily_facts.fulfillment_mode 重命名为 channel
- DTO/查询参数/前端类型从 fulfillmentMode 统一为 channel
- 成本中心类型 FulfillmentMode 更名为 FulfillmentChannel,并补齐卡券/待分类/归档取值
- 销售事实响应分组改为 byChannel
|
2026-10-31 20:26:15 +08:00 |
|
yml2213
|
4272515956
|
feat(orders): 订单读取与筛选只认渠道/状态三列
- 展示与筛选全部改读 fulfillment_channel/status,不再回退旧列
- 支持 third_party_voucher 与 archived,legacy_platform 映射为归档
- 前端类型、筛选项与标签同步
|
2026-10-31 19:52:13 +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 |
|
zhaoxing
|
6993c36efb
|
fix:相机优化
|
2026-10-25 16:16:27 +08:00 |
|
yml2213
|
ccc71e0aab
|
Merge branch 'main' into dev
|
2026-10-25 13:33:05 +08:00 |
|
yml2213
|
2fb7aae13f
|
feat(auth): 登录态改为滑动续期(后台 24h/7d,打手 7d/30d)
|
2026-10-25 13:28:58 +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 |
|
yml2213
|
790de676c6
|
feat(admin): 收口人工履约入口并修复履约筛选
|
2026-10-24 17:42:07 +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 |
|
yml2213
|
5d1ba11523
|
feat(finance): 统一履约事实并改造人工账单分类
|
2026-10-23 13:35:48 +08:00 |
|
zhaoxing
|
067d54fdd8
|
接单平台:新增店铺筛选条件
|
2026-10-22 14:45:40 +08:00 |
|
yml2213
|
7542d547bf
|
feat: 新增客服备用金台账与后台用户中文显示名
- 新增备用金账户、流水、支出、对账与权限
- 后台用户支持中文显示名并同步备用金姓名
- 审计、登录记录、任务及工单操作人优先展示中文名
- 补充备用金与人工支出方案文档
|
2026-10-18 13:55:24 +08:00 |
|
yml2213
|
6850bc64ff
|
feat(work-order): 发布并核销支持抖音券(按来源分流,抖音走 DYC 券核销)
|
2026-10-15 13:22:18 +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 |
|
yml2213
|
9ce29964c7
|
style(frontend): 格式化前端代码并修复 eslint 异步操作未标记告警
- 统一 prettier 代码风格;
- 为 AdminTaskDetailPage 与 AdminTasksPage 中未捕获的 Promise 添加 void 标记;
- 验证方式:npm --prefix apps/frontend run check 全流程通过。
|
2026-10-11 15:20:54 +08:00 |
|
yml2213
|
ed8bdf399d
|
fix(voucher): 替换幸运币纯净无水印透明底素材并统一区服渠道中文转换
- 将幸运币 2/30/90 个 webp 素材替换为纯净 RGBA 透明金币立绘,消除白底多边形及「幸运币礼包(小)」文字水印
- 增加 formatGameChannelLabel 转换函数:将腾讯/DLC area-plat 协议代号(如 1-1)统一转换为用户友好的「安卓-微信」
- 领取页第 2/3/4 步与凭据大图全局统一应用区服中文转换
|
2026-10-10 21:18:31 +08:00 |
|
yml2213
|
f3f2550b19
|
feat(admin): 彻底优化任务列表与详情界面,集成到账存证凭单与联盟直充面板
- 优化任务列表角色列:支持从 affiliateDash 及 claimIdentity 中自动提取并展示角色名与 UID(含一键复制)
- 列表操作栏支持一键查看到账存证凭单,支持直接复制图片发给买家或下载保存
- 任务详情页全面现代化重构:
- 新增「兑换成功 · 官方直充到账存证凭据」大卡片,实时生成 640x960 Retina 高清卡片,支持一键写入系统剪贴板(微信/QQ/客服窗口直接 Ctrl+V 发送)、下载 PNG 大图与全屏预览
- 新增「联盟直充履约 (affiliate_dash)」专属面板,结构化展示上游订单号、直充状态、点数积分、核销状态及供应商回执
- 优化凭据生成器 (voucher.ts):强制优先读取本地高清商品图,彻底消除上游图片文字水印与圆环破图问题
- 验证方式:npm run build & npm test (133 项单测全量通过)
|
2026-10-10 21:04:01 +08:00 |
|