居居
1c1efebf27
fix(supply-chain): 清空停产退市商品限价
...
(cherry picked from commit 42b374801df5926aba8f302af518a538e2baede1)
2026-10-20 17:24:25 +08:00
WuYongJie
0509df6408
fix(installation-demo): synchronize clockwise screw and tool playback
2026-10-20 15:08:37 +08:00
居居
89eb66c6f6
feat(supply-chain): 限价筛选条件支持自定义
2026-10-20 14:51:20 +08:00
居居
7ce4b93706
feat(supply-chain): 限价顶部新增编码筛选
2026-10-20 14:51:20 +08:00
WuYongJie
75ba586ac8
feat(production-stop-demands): 完善档案字段、筛选、视图与通知中心联动
...
- 明细新增图片、产品标签、含大单近30日日销(条码/SKU 数值快照)
- 表头漏斗筛选(模糊/多选/数值比较/日期区间)、批量搜索、筛选设置
- 列设置拖动排序、快捷查询保存与套用
- 视图统计:日/周/月趋势、部门/需求人/原因/状态分布、饼图与明细下钻
- 通知中心:停产确认/待走流程/需求驳回通知、待办快照同步、钉钉全屏链接
- 新增迁移与历史数据回填脚本
2026-10-20 14:32:41 +08:00
居居
c34b72304d
feat(supply-chain): 新增组合限价导出
2026-10-20 13:10:28 +08:00
居居
3cc85ed5d2
feat(supply-chain): 精简破价订单筛选条件
2026-10-20 13:10:28 +08:00
居居
8153f284e5
feat(supply-chain): 品牌页纳入三类国标前缀
2026-10-20 13:10:28 +08:00
WuYongJie
1614bd5e95
feat(diy): add text replacement and template URL import
...
Add image text detection/replacement with original preservation, compact result actions, and stored template imports. Keep image editor and template layout dialogs at consistent viewport sizes with internal scrolling.
2026-10-20 12:12:53 +08:00
WuYongJie
cadb917d90
feat(diy): add image adjustment, resizing and template layout tools
2026-10-20 09:43:40 +08:00
WuYongJie
09f36608de
Use furniture Z-up axes in installation demo editing
...
Map X to width, Y to depth, and Z to height in numeric movement, drag and rotation controls, and feedback. Preserve existing Y-up model poses and saved data, and extract transform-anchor helpers.
2026-10-19 17:55:11 +08:00
WuYongJie
cba68a8cc7
fix(print): allow C-Lodop embedded preview frames
2026-10-19 17:07:48 +08:00
WuYongJie
414b86fd56
fix(home): open saved websites in a new tab
2026-10-19 16:46:53 +08:00
WuYongJie
df253a470d
Optimize installation model preview and repair exploded layouts
...
Parse and cache OBJ geometry off the main thread, reuse the viewport, and adapt interaction rendering. Pull drawers out as complete groups, enforce panel and hardware clearance, and frame the applied layout. Add relative X/Y/Z movement in millimeters with existing persistence.
2026-10-19 16:44:30 +08:00
居居
4e949067d3
fix(supply-chain): 仅在品牌页按GBSFY归类
2026-10-19 16:22:34 +08:00
居居
8aa17b7a34
fix(supply-chain): 按GBSFY前缀纠正索菲亚品牌
2026-10-19 16:22:34 +08:00
居居
d5b5a60141
feat(supply-chain): 限价列表按负责人限价降序
2026-10-19 16:22:33 +08:00
WuYongJie
ef4e4e36ed
feat(supply-chain): 商品库存快照落库并改读快照
...
- 新增 ProductInventorySnapshot / ProductInventorySnapshotRun 模型与正式迁移(条码×实际仓库)
- 同步任务复用现有库存/云仓/档案读取,临时表+事务原子替换,advisory lock 防重叠,失败保留上一份快照
- 新增 15 分钟 systemd timer 安装脚本与同步脚本(身份校验、凭据走环境变量)
- 列表/导出接口改读快照并展示 syncedAt,保留全零行过滤与导出字段选择
2026-10-19 15:40:57 +08:00
WuYongJie
5cf84a19c8
Merge latest main into accepted homepage release
2026-10-19 15:17:01 +08:00
WuYongJie
7210dd2111
fix(home): render homepage without the product sidebar
2026-10-19 15:12:29 +08:00
WuYongJie
071cd23ac9
feat(home): add fan carousel and double-click overview
2026-10-19 15:12:29 +08:00
居居
211aff2578
feat(supply-chain): 查询框直接支持批量筛选
2026-10-19 15:07:49 +08:00
居居
c691669101
feat(supply-chain): 限价筛选支持批量查询
2026-10-19 15:07:49 +08:00
居居
2b4eb17ec7
fix(supply-chain): 排除停产退市组合限价
2026-10-19 15:07:49 +08:00
居居
c62d951228
fix(supply-chain): 限价筛选候选值联动
2026-10-19 15:07:49 +08:00
居居
da4b77e6d6
style(supply-chain): 对齐表头列宽拖拽热区
2026-10-19 15:07:49 +08:00
居居
9360c553a2
fix(supply-chain): 修复组合单行表头遮挡明细
2026-10-19 15:07:49 +08:00
居居
a843b643ed
fix(supply-chain): 放行组合运营负责人筛选
2026-10-19 15:07:49 +08:00
居居
05e1f94e46
fix(supply-chain): 修复组合限价筛选交互
2026-10-19 15:07:49 +08:00
居居
de26559e3e
fix(supply-chain): 完善组合限价筛选与运营负责人
2026-10-19 15:07:49 +08:00
居居
c2f005712b
feat(supply-chain): 新增组合限价页
2026-10-19 15:07:49 +08:00
居居
177d11dd47
style(supply-chain): 列名「非负责人限价(新)」改为「非负责人限价」
...
- 限价明细页与产品全量档案页的限价分组同步改名(导出列头随列定义一起生效)
2026-10-19 15:07:49 +08:00
居居
c104a029c9
fix(supply-chain): 限价明细「负责人限价」筛选补上候选值与筛选逻辑
...
- 负责人限价是 SupplyChainStyleLimitPrice.ownerLimitPrice 的派生列(按货号),此前 option 接口没有对应分支,
下拉框显示「没有可选值」、选了也不生效
- 候选值:无其他筛选时取限价表的全部去重价格(两位小数,与界面一致);有筛选时只取当前结果集里货号的限价;
无流程限价的商品提供「空值」选项
- 筛选:选中的价格先经 ROUND(price,2) 换回货号再按 sku 过滤;选中的价格无对应货号返回空结果;
「空值」= 货号不在限价表里
- 补 3 条单测(价格→货号、无匹配、空值)
2026-10-19 15:07:49 +08:00
WuYongJie
ee983673d5
feat(supply-chain): 产品全量档案新增安装方式列(定厂优先+商品标签推导)
2026-10-19 12:06:41 +08:00
居居
132331733e
feat(supply-chain): 限价流程同步改为服务器端可运行 + systemd 每日定时器
...
- sync-limit-workflows.mjs 路径参数化:新增 --out-dir/--initial-dir/--env-file/--skip-excel,
环境变量 LIMIT_SYNC_OUT_DIR / LIMIT_SYNC_INITIAL_DIR / LIMIT_SYNC_ENV_FILE / LIMIT_SYNC_SKIP_EXCEL / LIMIT_SYNC_HISTORY_KEEP;
默认目录改为应用根目录,不再写死 Mac 桌面
- 期初数据:优先显式目录,其次仓库自带 scripts/data/limit-sync/期初数据(首次部署可直接使用),
服务器上业务更新只需把新的「限价期初数据*.xlsx」放进 shared 目录
- 写库安全:校验 DATABASE_URL、打印目标库(不含密码)、DELETE+INSERT 包在单事务里,
失败自动回滚保留上一版限价/授权;Excel 导出失败不影响已提交的库数据
- 输出治理:输出目录自动创建;历史版本默认保留最近 20 份,避免服务器磁盘每天累积 30MB
- 新增 run-limit-workflow-sync-production.cjs:预检 shared/.env 变量(DATABASE_URL / JST_REPORT_DB_*)、
打印库目标、透传参数、30 分钟硬超时、失败写 job 日志
- 新增 install-limit-workflow-sync-timer.sh:照 marketing-sales 样板安装 systemd service+timer,
EnvironmentFile=$BASE/shared/.env,默认每天北京时间 07:30,输出/期初数据放 $BASE/shared/limit-workflow-sync
- 文档补充「正式站同步」章节;顺带修正 supply-chain-page-permissions 测试的菜单页数(新增限价管理后 27 页)
- 未改动 20261014/20261015 三个迁移目录(正式库已按现名建表)
2026-10-19 10:13:34 +08:00
WuYongJie
1b849b0209
feat(supply-chain): 新增商品库存管理(库存/云仓/筛选/导出/快捷查询)
...
- 页面:成品库存 × 实际仓库,按条码匹配产品档案与仓库配置
- 服务:聚水潭成品库存全量读取与缓存、筛选/排序/分页、小计、Excel 导出
- 云仓:链接服务器 OPENQUERY 汇总 order_able_qty,支持云仓明细下钻
- 接入:菜单、标签页、权限节点 productInventory
2026-10-19 09:54:57 +08:00
WuYongJie
d8b5006e44
feat(diy): add permanent deletion for saved schemes
...
(cherry picked from commit 2d1486b64c5f7dcd3a3a1e247ebe0c6d12e41d21)
2026-10-19 09:50:58 +08:00
居居
7fc43502fd
fix(supply-chain): 修复限价管理合并入 mainline 后的 18 处类型错误(type-check 0 错误)
...
提交自身的错误:
- breach-orders/route.ts:filtersSchema 去掉重复的 platform / shopName 键(保留带长度上限的一份)
- supply-chain-breach-order.service.ts:BreachOrderListFilters 去掉重复声明的 platform / shopName
- BreachOrderTab.tsx:MultiFilterChip 的 field 联合类型补齐店铺款式编码/店铺商品编码/申诉原因/平台/店铺(与 filter-options 接口支持的字段一致)
- breach-orders/[id]/route.ts 与 breach-orders/route.ts:多结果分支的处理器统一声明为 handleRequest<unknown>(…): Promise<NextResponse<unknown>>,
与既有 reference-image-estimate 路由同一写法,解决 ctx.user 可选态与返回形状不匹配
补齐缺失的配套改动:
- errors.ts:新增 ErrorCode.RESOURCE_NOT_FOUND(含 ERROR_MESSAGES 与 HTTP 404 映射)
- ProductArchiveFilters:补 materialLevel / inspectionReport 两个筛选项类型(查询逻辑此前已随功能提交)
- bom-costing-multimodal-gateway.ts:BomCostingMultimodalOperation 增加 IMAGE_EXTRACTION(破价申诉凭证识别用),
breach-evidence.service 对可空的 providerConfig 加空值保护
- supply-chain-product-archive-select.ts:去掉重复的 sabcRating 选择项
- supply-chain-product-archive.repository.ts:storageType 候选值已在专用分支处理,去掉恒为 false 的重复判断
验证:git 干净检出后 npm run type-check(next typegen + tsc --noEmit)0 错误;
breach/supply-chain/permission 相关 230 个测试套件 1650 用例通过,失败 7 个套件均为 mainline 原有问题。
2026-10-19 09:23:04 +08:00
居居
62452b6343
fix(supply-chain): 检测报告按 SPU 文本里的编码匹配(平台 SPU 是自由文本)
...
- 平台 spu 形如「SJ0380书架 / 顾家穿衣镜DS5154 / BJ0056」,与档案 SPU 编码不一致;
解析时从 spu 与报告标题里提取编码(SJ0380、GBGJ-SJZ0021、DS5154…)再匹配,纯编码仍原样收下
- 通用报告(「茶几通用」等)不产出 SPU;无文件记录继续忽略
- 单测补自由文本/标题提取用例
2026-10-19 09:23:04 +08:00
居居
2fde21f5da
feat(supply-chain): 限价明细「是否有检测报告」接入素材平台检测报告接口
...
- 新增检测报告索引服务:GET {素材平台}/api/external/certificate-reports(X-API-Key),只认有报告文件的记录,按 SPU 汇总,进程内缓存 10 分钟
- 列取自 external 接口:限价页数据接口与「导出明细(含图片)」都带上 inspectionReport(有 / 无 / 空)
- 表头筛选接入:候选值「有 / 无」,筛选按报告 SPU 清单(接口未配置时不加条件、候选值为空)
- 配置:MATERIAL_LIBRARY_CERTIFICATE_REPORT_API_BASE_URL/API_KEY,不填复用 MATERIAL_LIBRARY_WHITE_BACKGROUND_API_*;未配置时该列显示为空
- 增补单测(解析/缓存/未配置/接口报错)与文档说明
2026-10-19 09:23:04 +08:00
居居
eca1d63842
feat(supply-chain): 限价管理的查看/导出/申诉权限统一由管理员配置
...
- 查看:页面与数据仍走「限价管理 · 可见」;导出改按「限价管理 · 下载」,申诉/审核/生成/导入改按「限价管理 · 操作」(原来是经营管理 edit)
- 服务端:下载中心 limit-export 任务与产品档案导出接口的 columnSet=limit 都按「限价管理 · 下载」鉴权
- 前端:无下载权限不展示导出入口(限价明细两个导出、破价订单导出当前筛选/乐捐明细);规则配置仍单独走 breachRuleConfig 节点
- 申诉保留兜底:破价单负责人本人即使无「操作」权限也可申诉本人订单,审核必须「操作」
- 测试:CustomTableView 补导出入口权限用例并修正过期的表头断言;文档补充权限章节
2026-10-19 09:23:04 +08:00
居居
f276164532
feat(supply-chain): 限价管理(限价明细 + 破价订单审核 + 规则配置 + 流程同步)
...
- 限价明细:抬头列/筛选/列宽/排序可配置,批量查询(商品编码/订单号/负责人等),筛选条件回显与一键清空
- 列取数口径:入库/代发按仓库名推导(含仓库配置覆盖)、产品标签取商品SABC打标、材质等级从「材质」识别 E0/E1/ENF
- 导出:导出明细 / 导出明细(含图片)改为全局下载中心后台生成,进度/取消/保存都在下载中心;页签名与文件名一致
- 破价订单审核:按天增量生成、链接级与订单级申诉、审核通过/驳回/二次申诉冲销乐捐、豁免(同价/活动)与证据凭证要求
- 规则配置页与权限:管理员开通后可编辑(权限节点 breachRuleConfig),无权限不可见
- 限价流程同步脚本:4 类钉钉限价流程 + 产品限价页面已确认限价 + 限价期初数据;流程/页面/期初优先级与「期初更新日期更新则以期初为准」
- 非负责人限价统一按最新口径派生(×1.05 且不低于 +10 元)
- 迁移:breach order review / breach rule config / limit flow sync
- 与 mainline 合并:保留字段权限(blockedFields)、负责人在职接管、限价目标 limitManagement 等新特性;
规则配置权限并入新的权限节点结构,档案列去掉重复的 opsPriceLimit 列,相关测试断言按当前口径更新
2026-10-19 09:23:03 +08:00
WuYongJie
399fd8182d
refactor(diy): simplify canvas controls and unify capsule styling
...
(cherry picked from commit 1429b870f08b34e37b02c3077053f17385e9738a)
2026-10-16 18:04:54 +08:00
WuYongJie
5c899b4705
revert: 限价管理两个提交(类型检查不通过,待功能线程修复后重新提交)
2026-10-16 17:55:56 +08:00
居居
fbe276d4f6
feat(supply-chain): 限价管理的查看/导出/申诉权限统一由管理员配置
...
- 查看:页面与数据仍走「限价管理 · 可见」;导出改按「限价管理 · 下载」,申诉/审核/生成/导入改按「限价管理 · 操作」(原来是经营管理 edit)
- 服务端:下载中心 limit-export 任务与产品档案导出接口的 columnSet=limit 都按「限价管理 · 下载」鉴权
- 前端:无下载权限不展示导出入口(限价明细两个导出、破价订单导出当前筛选/乐捐明细);规则配置仍单独走 breachRuleConfig 节点
- 申诉保留兜底:破价单负责人本人即使无「操作」权限也可申诉本人订单,审核必须「操作」
- 测试:CustomTableView 补导出入口权限用例并修正过期的表头断言;文档补充权限章节
2026-10-16 17:46:01 +08:00
居居
4be4bd1e09
feat(supply-chain): 限价管理(限价明细 + 破价订单审核 + 规则配置 + 流程同步)
...
- 限价明细:抬头列/筛选/列宽/排序可配置,批量查询(商品编码/订单号/负责人等),筛选条件回显与一键清空
- 列取数口径:入库/代发按仓库名推导(含仓库配置覆盖)、产品标签取商品SABC打标、材质等级从「材质」识别 E0/E1/ENF
- 导出:导出明细 / 导出明细(含图片)改为全局下载中心后台生成,进度/取消/保存都在下载中心;页签名与文件名一致
- 破价订单审核:按天增量生成、链接级与订单级申诉、审核通过/驳回/二次申诉冲销乐捐、豁免(同价/活动)与证据凭证要求
- 规则配置页与权限:管理员开通后可编辑(权限节点 breachRuleConfig),无权限不可见
- 限价流程同步脚本:4 类钉钉限价流程 + 产品限价页面已确认限价 + 限价期初数据;流程/页面/期初优先级与「期初更新日期更新则以期初为准」
- 非负责人限价统一按最新口径派生(×1.05 且不低于 +10 元)
- 迁移:breach order review / breach rule config / limit flow sync
- 与 mainline 合并:保留字段权限(blockedFields)、负责人在职接管、限价目标 limitManagement 等新特性;
规则配置权限并入新的权限节点结构,档案列去掉重复的 opsPriceLimit 列,相关测试断言按当前口径更新
2026-10-16 17:46:01 +08:00
WuYongJie
bc8a4a15e9
feat(intake): notify quality inspectors and keep product photo uploads available
2026-10-16 17:28:45 +08:00
WuYongJie
77c91bd689
fix(supply-chain): 产品全量档案 DF 条码成本价改为统一取 jst_sku.cost_price
...
- enrichment 价格补丁不再区分 DF/非 DF:purchasePrice 与 costPrice 均取 rpt.jst_sku(purchase_price / cost_price)
- 删除 dws_sn_sales_full_info_di.goods_cost 取价链路(dws-sales-goods-cost.repository.ts 整删,DWS_SALES_GOODS_COST 来源常量移除)
- 单测与《供应链产品全量档案字段来源对照表》同步更新
预期效果(部署后下一轮同步):约 1874 条 DF 成本价由空变有值、约 230 条由 dws 金额口径变为 jst 单价口径、约 4516 条数值不变、0 条丢值。
2026-10-16 16:27:31 +08:00
WuYongJie
4bd48d8bc0
fix(diy): keep wood grain continuous and compact inspector
...
(cherry picked from commit 9af20a14b07f6da46691a7356c5fd1d08aa48887)
2026-10-16 14:47:27 +08:00
WuYongJie
d8e43e89ba
fix(supply-chain): 仓库管理列表只取聚水潭仓库档案,档案历史名称不再补充展示
2026-10-16 14:00:51 +08:00