产品全量档案的 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-04-07
当前主线:资产中心 -> 自动组合 -> 草稿组 -> 包装方案 -> 正式入库 -> 轻仓库
这个工作区真正长期开发的项目在 furniture-3d-system/。
旧 CAD -> 装配编辑 -> 装配步骤 -> 回放 链仍保留,但它现在是兼容链,不是默认主线。
先看哪里
AGENTS.mdfurniture-3d-system/docs/workflow/团队协作模式.mdfurniture-3d-system/docs/workflow/模块边界说明.mdfurniture-3d-system/docs/workflow/主线同步操作手册.mdfurniture-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
Languages
TypeScript
91.2%
JavaScript
4.8%
CSS
1.1%
C#
0.9%
PowerShell
0.6%
Other
1.3%