WuYongJie ba930d1df2 feat(product-archive): SPU 列支持「只看正常编码」与可累加排除规则
产品全量档案的 SPU 列筛选原来只有「勾选具体值 = 包含」一种语义,没法表达
「不要 DF- 开头的 / 不要纯数字的」这类排除需求,只能靠不断放宽正选来绕。

新增两类能力(原有「勾选值包含」语义一字未改):
- 「只看正常编码」:字母前缀(2~6位) + 可选「-字母段」 + 数字编号(3~8位),
  一次收掉纯数字 / 1643A 型 / 含中文的商品名 / 32 位哈希等非正常形态
- 「排除以…开头」:可累加的前缀黑名单(如 WM- 外贸、DF- 代发、MKH),
  对应「还有不想看就再填一条」

实现要点:
- lib:新增 ProductArchiveTextFilterKey / ProductArchiveExcludeRule 与
  PRODUCT_ARCHIVE_NORMAL_CODE_PATTERN;ProductArchiveFilters 只追加
  normalCodeOnly、excludeStartsWith 两个可选字段,老字段类型与语义不动
- 校验:zod schema 是 .strict(),同步放行两个新字段(否则整包筛选会被 400 拒掉)
- 服务端:buildProductArchiveWhere 保持同步,只追加 NOT startsWith;
  需要查库的「正常编码」放在新增的异步 buildProductArchiveWhereWithTextRules
  (Prisma 7.3 的字符串过滤不支持 regex,改为原生 SQL 取符合形态的取值清单拼 IN,
  带 5 分钟缓存)。preparePeriodArchiveQuery 是全站唯一取数入口,
  列表、候选项、导出、图片导出自动生效
- 文本规则故意不参与 omitFilter:若参与,候选值列表会冒出已被排除的取值,
  用户勾了却得到 0 行
- UI:文本列弹层改左右双排(左=形态与排除规则,右=搜索与候选值),
  弹层高度与横向偏移按触发按钮所在位置动态计算,保证清除/应用在任何视口都可见
- 偏好:两个新字段进入 sanitizeFilters 白名单,规则可持久化,点清除即清空

验证:本地真实库 66033 行——只勾正常编码 27645 行、再接 WM- 26852 行、
再接 DF- 26788 行,与 SQL 基准逐一致;3001 HTTP 对账五个口径全对、
非法列返回 400、候选项接口在勾了正常编码后返回的 SPU 全部符合形态;
真机 UI 12/12(应用 26788、刷新记住、回显、清除回 66033);
布局专项 36/36(1600x900 / 1440x720 / 1366x640 / 1280x600 下弹层均在视口内、
按钮可见、不超左右边界);新增单测 15/15;type-check EXIT=0。
2026-09-17 11:46:18 +08:00

由壹点「产品开发平台」工作区

最后更新:2026-04-07
当前主线:资产中心 -> 自动组合 -> 草稿组 -> 包装方案 -> 正式入库 -> 轻仓库

这个工作区真正长期开发的项目在 furniture-3d-system/。 旧 CAD -> 装配编辑 -> 装配步骤 -> 回放 链仍保留,但它现在是兼容链,不是默认主线。

先看哪里

  1. AGENTS.md
  2. furniture-3d-system/docs/workflow/团队协作模式.md
  3. furniture-3d-system/docs/workflow/模块边界说明.md
  4. furniture-3d-system/docs/workflow/主线同步操作手册.md
  5. furniture-3d-system/docs/README.md

工作区结构

.
├── furniture-3d-system/   主项目
├── docs/                  工作区级协作与交接文档
├── 方案设定/             设计稿与方案素材
├── flnxi_sucai/           参考资料
└── README.md

当前文档规则

  • 当前有效的协作入口只认 furniture-3d-system/docs/workflow/ 下那 3 份协作文档。
  • 根目录 docs/前端UI改动清单.md 是当前前端交接执行单,不是历史总结。
  • 一次性阶段报告、完成报告、旧 UI 方案已清理,不再保留为默认入口。

常用命令

cd furniture-3d-system
npm install
npm run dev
npm run type-check
npm run build

补充说明

  • 非代码参考资料默认不参与构建。
  • 没有用户明确要求,不主动提交、推送、发版。
Description
3D家具展示系统
Readme 388 MiB
Languages
TypeScript 91.2%
JavaScript 4.8%
CSS 1.1%
C# 0.9%
PowerShell 0.6%
Other 1.3%