yeuimu
|
a756c8c3c8
|
fix(admin,api): always show family composition badge N条链接·M个配置
按用户反馈(PLTM006 明明能查到配置数却不显示):左树徽标此前只在
同分类内 ≥2 个配置时才出现,单配置族一行上什么都不显示,而右树同族
链接都挂着绿色已配置徽标,两边数字对不上,反复造成「配置数没显示」
的误解。
- goods API:GOOD_INCLUDE 的 family 带 _count.originGoods,
GoodDto.originGood.family 增加 memberCount(族成员链接数)
- admin:distinctByFamily 记录 linkCount;一族一行的徽标常显
「N 条链接 · M 个配置」(链接数=族成员数,配置数=该族官网商品数),
悬浮仍列出全部配置可打开
- 文档同步徽标语义
效果:PLTM006 行显示「4 条链接 · 1 个配置」(真值:4 条链接仅配了
1 个官网商品);PLTF026 的「4 条链接 · 4 个配置」同屏可对比,其中
4 个配置为历史同国家重复配置,建议另行清理。
验证:admin vue-tsc 干净 + vitest 22/22;api goods spec 18/18;
Prisma _count 查询实测返回 originGoods=4
|
2026-08-30 03:07:16 +08:00 |
|
yeuimu
|
93ac525c55
|
refactor(api): parsing out of runtime — pure-mirror sync, explicit organize, auto aggregate recompute
解析去运行时化(三层架构,plans/refactor/organize-script-refactor.md):
- 同步 = 纯镜像:upsertOriginGood 不再写解析列、不再自动挂族;详情同步仍触发重算
- 整理 = 显式人工动作(OrganizeService):解析列回填 → 派生标签(人工接管永不
覆盖)→ auto-group 建族 → 全量重算;入口 CLI(pnpm --filter @inkreach/api
organize)+ POST /product-families/organize + 后台「整理」按钮
- 重算 = 纯结构化聚合:不再按名称重派生标签(防上游改名倒灌,回归测试覆盖);
矩阵维度只认标签/CUSTOM 显式标签,未整理成员不进矩阵;工艺=不打印时
印花数量以单面占位(纯结构化规则);「恢复自动」走整理的单链接派生
- 派生默认补齐(脚本层假设):名称无单/双面且工艺非不打印 → 印花数量单面印花
- goods 服务建品/更新后仅镜像标签+重算(不派生);含商品名入库规范化
(normalizeGoodName,管理员输入边界质检)
- organize.service.spec 由 tag-sync spec 迁移 + 防倒灌回归;sync/recompute/
public/families spec 全部适配;API 173/173,admin typecheck+22/22
|
2026-08-30 01:27:01 +08:00 |
|
yeuimu
|
ee336968a0
|
feat(product-family): derive tags per link name (印花数量/工艺/物流 rules)
|
2026-08-28 15:33:11 +08:00 |
|
yeuimu
|
eedfbb344e
|
feat(product-family): auto-derive logistics/craft tags from family members
|
2026-08-28 14:57:25 +08:00 |
|
yeuimu
|
4eadb67c36
|
feat(product-family): replace legacy good merge with family mechanism in config view and public detail
|
2026-08-28 14:14:58 +08:00 |
|
yeuimu
|
6418aa7302
|
feat(api): public good detail family block behind gray-release flag
|
2026-08-28 13:40:19 +08:00 |
|
yeuimu
|
c8531bfe08
|
feat(api): category-based family grouping, tree family info and custom goods family attribution
|
2026-08-28 12:43:58 +08:00 |
|
yeuimu
|
9c279ae393
|
feat(goods): support merged secondary origin goods in create/update/detail
|
2026-08-27 18:15:56 +08:00 |
|
yeuimu
|
6c61a4e871
|
feat(deploy): production deployment setup and fixes
- Debian-based api image (bookworm-slim), docker/debian mirrors, prisma
binaryTargets for openssl 3.0
- nginx: admin SPA under /admin, TLS via acme.sh (ZeroSSL) + auto-renewal
cron, http->https redirect
- prisma: add origin_goods.delisted migration, sync missing schema
(good_image/tag_font_color/good_tags), fix users.createdAt Timestamptz
- api: CORS wildcard reflection, helmet CORP cross-origin, price
backfill in persistProductDetail, categoryIcon ancestor fallback,
mediaByColor per-color gallery in public goods detail
- admin: /admin base path (vite + router)
- import-data.mjs: udt_name casting, serial sequence advance fix
|
2026-08-26 14:23:09 +08:00 |
|
yeuimu
|
b04623ebdd
|
feat(goods): add editable custom products
|
2026-08-21 14:45:42 +08:00 |
|
yeuimu
|
d375df810d
|
feat(admin): manage and sync product details
|
2026-08-21 10:18:57 +08:00 |
|
yeuimu
|
7e04877bb6
|
chore: migrate to pnpm workspaces monorepo with Turborepo
- Restructure directories: apps/api, apps/admin, apps/website
- Add root pnpm-workspace.yaml, turbo.json, .prettierrc, .gitignore
- Rename packages to @inkreach/api, @inkreach/admin, @inkreach/website
- Add shared packages: packages/tsconfig, packages/shared-types
- Add pnpm.onlyBuiltDependencies for native builds
- Update docs: README.md, structs.md
- All three projects build successfully
|
2026-07-11 16:54:05 +08:00 |
|