feat: 可扩展档案模式框架 + 内置 3C(电子) 模式 #16
Reference in New Issue
Block a user
Delete Branch "devin/1782022411-archive-kind-3c"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
下一步要收集 3C(电子)产品,且后期还会加入药品、机械等独立品类。本 PR 不为每个领域写死一张明细表,而是建立一套元数据驱动的「档案模式 (archive_kind)」框架:新增领域 = 一条迁移(种子字段模板 + 品类子树),不再改后端/前端代码。
框架
category.archive_kind:每个品类归属一个档案模式(food / electronics / drug …),子类自动继承父类模式。kind_field表:定义各模式的录入字段(key/中文标签/类型/单位/选项/分组/排序/是否计入合格)。product.attributesJSONB(已有 GIN 索引)。食品维持成熟的food_detail表作为内置模式。CompletenessFields基础字段(name/gtin/brand/category/image)+ 该模式qualified规格字段首批落地:electronics(3C)
model_number/ccc_cert/screen_size计入合格。接口与前端
GET /api/kind-fields?kind=返回字段模板。kind_field动态渲染「规格参数」表单(分组/下拉/数字/多值),保存写入attributes。product.specs)。兼容性
attributes为 nil 表示不改动;down 迁移可回滚(卸载 3C 品类、删 kind_field、删列)。测试
kind_test.go:验证 electronics 不要求食品字段、qualified 规格字段驱动 missing 与质量分上升、ListKindFields模板正确。go test ./.../go vet/gofmt全过;admin + public 前端tsc && vite build通过;迁移 up/down 往返验证通过。