2114 Commits

Author SHA1 Message Date
WuYongJie
260fbc8428 feat(progress): add column header filters 2026-09-15 17:02:03 +08:00
WuYongJie
53febe8eb7 feat(supplier-recommendations): add guided editor options 2026-09-15 14:45:25 +08:00
WuYongJie
64e3378125 fix(finished-progress): backfill sample merchandiser owner 2026-09-15 13:49:26 +08:00
WuYongJie
1b301af15e feat(finished-progress): link automatic rows to sample details 2026-09-15 11:38:40 +08:00
WuYongJie
78dcdae880 fix(finished-progress): exclude historical JST entries 2026-09-15 11:01:33 +08:00
WuYongJie
dac31e736a fix(1688): accept opaque CDN image responses 2026-09-15 10:16:12 +08:00
WuYongJie
200790b6fc feat(finished-progress): require completed samples and improve automatic purchase intake
Require a real completed sample before finished-product intake. Carry factory, brand, merchandiser, delivery date and minimum order quantity into editable records; leave order date blank and support bulk maintenance.

Generate one factory contract per source group, place new automatic orders first and enlarge the horizontal scrollbar. Include source identity migration and regressions.

Validation: TypeScript noEmit; 18 Jest suites / 164 tests; local 3001 browser drag, wheel, and bottom-row checks.
2026-09-14 18:13:13 +08:00
WuYongJie
73be6c9019 1688代发异常事项:SPU级维护表+运营筛选+图纸/视频筛选+条码搜索
- 新表 SupplyChainDropshipIssue:SPU 级普票/专票、退货地址运营维护,带操作日志
- 页面重构:删除 header,SPU 汇总行+展开条码明细(一码一行),操作列图标化
- 运营独立筛选项:可搜索/单选/多选(DropshipOpsFilter),默认按近7天销量合计降序
- 新增 是否有图纸/是否有安装视频 三态筛选(下拉一行排布),搜索支持条码维度
- 菜单排序:新品经营总览→新品终止任务反馈→1688代发数据明细→1688代发异常事项
- 平台标签标题注册 dropship-issues,修复顶部标签空白
2026-09-14 17:03:29 +08:00
WuYongJie
01fd83d28b feat(supply-chain): 并入1688代发数据明细与代发异常事项占位
内容来源: codex/xuxiake-mainline 2aa85619(伯阳 1688 dropship analytics + 晓晓占位与图片预览),按文件集从 origin/main 干净并入。

- 新增 /supply-chain/new-products/1688-dropship-data 全链路(页面/筛选/趋势/API/repository/service)
- 新增 /supply-chain/new-products/dropship-issues 占位入口
- 权限 targetKey: newProduct1688DropshipData / newProductDropshipIssues
- 迁移 20260912120000_add_daily_sales_dropship_fields(salesAmount/skuOperator/unitCost)
- 产品图片点击弹窗预览
2026-09-14 10:23:47 +08:00
WuYongJie
090c6b39c5 运营负责人SPU级兜底:同SPU最新销售条码的负责人下放给未匹配条码 2026-09-12 17:10:50 +08:00
WuYongJie
687ef50bb5 fix(home): workbench entry inside quick-links fold with unified styles
- expand list now starts with a fixed workbench entry (router.push to
  the workspace picker) followed by configured links
- replace next/link with button + router.push inside the nav item so
  styled-jsx scoped styles apply; fixes icon/label wrapping and keeps
  font size and spacing consistent across entries
- tests updated for the new push-based navigation and roles
2026-09-12 17:03:28 +08:00
WuYongJie
2b192afd86 fix(installation-demo): allow customer service model upload with progress toast
- /api/upload/model 去掉 requireDesignWorkspaceWrite 硬性门槛:改为安装演示
  canEdit 或设计工作区权限二者其一即可上传(客服等已配置安装演示编辑权限
  的角色可上传模型,其他模块设计权限语义不变)
- 上传进度右下角浮层按系统既有导入进度样式实现(文件名+百分比+进度条,
  完成绿色停留 3 秒自动收起,失败红色保留可关闭)
- installationModelUpload 改用 XHR 以获得真实上传字节进度,工具箱共用不受影响
2026-09-12 15:51:36 +08:00
WuYongJie
9e9d92306e feat(home): admin-configured quick links with sidebar home fold
- HomeQuickLink table + migration; CRUD API with admin-only writes and
  internal-only visibility (suppliers/external intake excluded)
- sidebar home item folds open configured links in both product and
  supply-chain sidebars, entries open in a new tab
- home portal top-right manage entry with sort/enable/delete sheet
- permission matrix default: home overview open to all internal subjects
  so switching to supply chain no longer lands on an empty page
2026-09-12 15:04:54 +08:00
WuYongJie
43f8540c9a 是否有图纸/是否有视频接入图纸系统API+非DF铺货图兜底+筛选修复 2026-09-12 14:27:10 +08:00
WuYongJie
002aa9dc34 fix(installation-demo): route customer service through node permissions
删除安装演示权限里硬编码的客服强制只读分享口径:原 isCustomerServiceUser
(CUSTOMER_SERVICE 角色或部门路径含客服中心)直接返回 canEdit=false 且排在
节点权限 overrides 之前,导致正式站给客服配置的编辑权限永远无效,客服只能
查看和分享、无法新建编辑截取。

删除后客服与普通员工一致走节点权限配置:客服主体 customerService
(部门路径含客服中心),正式站已配置的编辑权限即刻生效,可新建图纸、
维护编号、截取、分享与下载。
2026-09-12 14:25:40 +08:00
WuYongJie
904b80d4c9 运营部门负责人/运营负责人接入聚水潭销售宽表cater/ider
- dws repository 新增 listLatestOpsOwners:rpt.dws_sn_sales_full_info_di 按 skuoid 取 stat_date 最新一条的 cater/ider,全条码范围
- enrichment 链路新增 ops owners patch:来源码 DWS_SALES_OPS 可追溯;字段级有值才覆盖(dws 无值保留档案原值)
- opsDirector(运营总负责人)不接
- 本地全量验证:抽样 10 条与上游 100% 一致;3001 API 验收通过
2026-09-12 11:14:04 +08:00
WuYongJie
1b3f210e0f feat(barcode-print): add size template and keep package codes on one line 2026-09-11 17:13:52 +08:00
WuYongJie
02ad38908e fix(installation-demo): recapture by current viewpoint, align material counts, add finished-frame ending
- 编号重截取按当前视角取景(engine 截图支持 viewpoint:current,默认行为不变),成功/失败给可见消息
- 动作分解物料数量改为该动作实际命中节点数(fixed/action 帧同口径),徽标与编号标注共用管理编号覆盖值
- 动作分解末尾固定追加成品展示收尾帧:复用成品展示截图,不参与截取与计数,支持调整画面与文字标注
- 编号标注对账按编号兜底认领并清理超量残留,修复部件重绑后改数量导致标注叠加翻倍
- 成品线稿统一 detail 风格,与动作图线宽一致
2026-09-11 14:37:05 +08:00
WuYongJie
0c045ff906 chore(product-archive): default daily sales schedule to Beijing 08:00
- local scheduled task installer: compute next 08:00 Asia/Shanghai start boundary
- production systemd timer installer: default OnCalendar 08:00 Asia/Shanghai
- aligns installers with already-active 08:00 runtimes on both ends
2026-09-11 09:46:58 +08:00
WuYongJie
e075a81eb7 DF开头SKU档案图片接入聚水潭skumap三表平台图
- 新增 jst-skumap-pic.repository:rpt.jst_skumap/_pdd/_qmcust_add 三表 UNION,按 sku_id 取 modified 最新非空 pic,仅 DF 开头
- enrichment 同步链路:DF 条码 image 字段改用 skumap 平台图(无图清空),来源记录 JST_SKUMAP_PIC 可追溯;其他 SKU 图片逻辑不变
- 变更日志字段清单加入 image(图片)
- source-image 图片代理白名单放行 JST_SKUMAP_PIC,修复 DF 档案平台图 404 灰框
- 本地全量回填验证:331 批扫描 66033 failed=0;DF 有图 2281→24700;非 DF 14974 不变
2026-09-11 09:14:48 +08:00
WuYongJie
56560cd6d2 fix(deploy): verify complete releases before switching production 2026-09-10 18:29:17 +08:00
WuYongJie
7f9adebf88 feat(installation-demo): add manual catalog, permanent shares and hinge binding 2026-09-10 18:12:46 +08:00
WuYongJie
2cfd57d678 feat(product-archive): add daily monthly yearly sales and daily sync 2026-09-10 13:16:26 +08:00
WuYongJie
b66e6b1f11 Merge remote-tracking branch 'origin/main' into HEAD 2026-09-10 12:59:21 +08:00
WuYongJie
0875c87058 Merge remote-tracking branch 'origin/codex/xuxiake-mainline' into HEAD 2026-09-10 12:59:20 +08:00
WuYongJie
a20b6cb79f fix(product-archive): add missing POST handlers for large filter payloads 2026-09-10 12:59:03 +08:00
WuYongJie
b9c85357e6 fix(intake): abandon permission checks creator and real designer keys
废弃权限白名单原读取 payload 中不存在的 appearanceDesigner 等键,导致外观/结构设计师无法废弃产品。改为按 创建人 + 外观设计师(designer 列/payload.designer) + 结构设计师(openingReference.structureDesigner,兼容顶层旧键) 判定,不再放行 SPU 负责人与采购负责人;管理员口径不变。
2026-09-10 12:32:19 +08:00
WuYongJie
5c7ebbe914 fix(intake): abandon permission checks creator and real designer keys
废弃权限白名单原读取 payload 中不存在的 appearanceDesigner 等键,导致外观/结构设计师无法废弃产品。改为按 创建人 + 外观设计师(designer 列/payload.designer) + 结构设计师(openingReference.structureDesigner,兼容顶层旧键) 判定,不再放行 SPU 负责人与采购负责人;管理员口径不变。
2026-09-10 12:32:06 +08:00
WuYongJie
2947ddebcf Merge remote-tracking branch 'origin/main' into HEAD 2026-09-10 11:53:26 +08:00
WuYongJie
69d19076bd Merge remote-tracking branch 'origin/codex/xuxiake-mainline' into HEAD 2026-09-10 11:53:07 +08:00
WuYongJie
17d2e1d7bb Merge remote-tracking branch 'origin/codex/xuxiake-mainline' into codex/local-3001-integration 2026-09-10 11:52:31 +08:00
WuYongJie
351b7d7d2a feat(product-archive): take dropship df sku cost from sales goods_cost 2026-09-10 11:52:14 +08:00
WuYongJie
b8e80204a0 fix(barcode-print): raise Gujia certificate fields 2026-09-10 08:44:31 +08:00
WuYongJie
1042f35090 fix(barcode-print): raise Gujia certificate fields 2026-09-10 08:44:28 +08:00
WuYongJie
eedea9f791 fix(barcode-print): raise Gujia certificate fields 2026-09-10 08:43:13 +08:00
WuYongJie
0271da1b69 fix(barcode-print): recalibrate Gujia card and disable 2026 template 2026-09-09 17:56:14 +08:00
WuYongJie
b647cc2943 fix(barcode-print): recalibrate Gujia card and disable 2026 template 2026-09-09 17:55:27 +08:00
WuYongJie
3360ccb801 fix(barcode-print): recalibrate Gujia card and disable 2026 template 2026-09-09 17:54:04 +08:00
WuYongJie
1c0beffcb6 feat(barcode-print): add calibrated Gujia certificate template 2026-09-09 15:47:45 +08:00
WuYongJie
254cd92c5b fix(product-archive): stream material library images through a same-origin endpoint
the material library api hands out signed preview urls whose objects 404 on its cdn, so archive rows kept rendering empty placeholders; the batch endpoint now returns same-origin streaming urls (material-image?file=1) that resolve server-side, try the reachable s3 direct link first with the original signed url as fallback, and stream the bytes to the browser; the resolved image object is copied before url mapping so the service in-memory cache is no longer poisoned across requests.
2026-09-09 15:45:58 +08:00
WuYongJie
3976f96fcb fix(product-archive): stream material library images through a same-origin endpoint
the material library api hands out signed preview urls whose objects 404 on its cdn, so archive rows kept rendering empty placeholders; the batch endpoint now returns same-origin streaming urls (material-image?file=1) that resolve server-side, try the reachable s3 direct link first with the original signed url as fallback, and stream the bytes to the browser; the resolved image object is copied before url mapping so the service in-memory cache is no longer poisoned across requests.
2026-09-09 15:45:18 +08:00
WuYongJie
6161bb3e59 feat(barcode-print): add calibrated Gujia certificate template 2026-09-09 15:43:08 +08:00
WuYongJie
3cd064a467 Merge remote-tracking branch 'origin/codex/xuxiake-mainline' into HEAD 2026-09-09 14:57:09 +08:00
WuYongJie
db05c1ca0a Merge remote-tracking branch 'origin/codex/xuxiake-mainline' into codex/local-3001-integration 2026-09-09 14:42:30 +08:00
WuYongJie
1bb87a454d feat(product-archive): persist jianshang stock on main table and harden filter select-all 2026-09-09 14:42:17 +08:00
WuYongJie
cc1e15582e fix(product-archive): fall back signed qnycdn material image urls to reachable s3 links
the material library api now returns signed preview urls on qnycdn.jiansun.vip/prod whose objects 404 on the cdn, so every resolved archive material image failed to render; rewrite those urls to the same path on s3.jiansun.vip/gongxiangpan (verified reachable) and drop the signature at every exit of the material image service (barcode lookup, sku zip index, white background fallback, resolved cache reads) so matched sku/barcode images display again.
2026-09-09 13:35:55 +08:00
WuYongJie
560579b7f9 fix(product-archive): fall back signed qnycdn material image urls to reachable s3 links
the material library api now returns signed preview urls on qnycdn.jiansun.vip/prod whose objects 404 on the cdn, so every resolved archive material image failed to render; rewrite those urls to the same path on s3.jiansun.vip/gongxiangpan (verified reachable) and drop the signature at every exit of the material image service (barcode lookup, sku zip index, white background fallback, resolved cache reads) so matched sku/barcode images display again.
2026-09-09 13:35:35 +08:00
WuYongJie
f0cc716dd0 fix(intake): map reorganized planning department to PLANNING role
钉钉组织调整后商品企划部更名为企划部并挂到公司根节点。部门到业务角色推断、非集成产品权限、节点权限主体与商品企划候选人筛选统一识别 企划部 及其下级在职人员;保留旧 品牌中心>商品企划部 口径兼容存量数据;在职/外部过滤逻辑不变。
2026-09-09 12:12:01 +08:00
WuYongJie
66746bdc7e fix(intake): map reorganized planning department to PLANNING role
钉钉组织调整后商品企划部更名为企划部并挂到公司根节点。部门到业务角色推断、非集成产品权限、节点权限主体与商品企划候选人筛选统一识别 企划部 及其下级在职人员;保留旧 品牌中心>商品企划部 口径兼容存量数据;在职/外部过滤逻辑不变。
2026-09-09 12:11:32 +08:00
WuYongJie
d563513875 feat(product-development-todos): drop early-stage reminders and read structured factory rows 2026-09-09 11:45:40 +08:00