Ready for Review
As a 开发者,
I want 创建专门供Allin系统使用的枚举常量包@d8d/allin-enums,替换原有的数据库字典管理功能,
so that 我们可以为disability-module和order-module等后续模块提供类型安全的枚举常量,提高代码可读性和维护性,同时避免不必要的数据库查询。
allin-packages/enums目录结构DisabilityType(vision, hearing, speech, physical, intellectual, mental, multiple)DisabilityLevel(1, 2, 3, 4)OrderStatus(draft, confirmed, in_progress, completed, cancelled)WorkStatus(not_working, pre_working, working, resigned)@d8d/allin-enums,workspace依赖allin-packages/enums目录结构 (AC: 1)
allin-packages/enums/目录allin-packages/enums/pnpm-workspace.yaml中添加allin-packages/*配置package.json文件,配置包名@d8d/allin-enums和workspace依赖allin-packages/channel-module/package.json@d8d/allin-enums,依赖调整allin-packages/enums/package.jsontsconfig.json文件,配置TypeScript编译选项allin-packages/channel-module/tsconfig.jsonallin-packages/enums/tsconfig.jsonvitest.config.ts文件,配置测试环境allin-packages/channel-module/vitest.config.tsallin-packages/enums/vitest.config.tssrc/目录结构:enums/, types/, index.tspackages/shared-types/src/目录结构allin-packages/enums/src/DisabilityType (AC: 2)
allin_2025-11-25.sql中的sys_dict表数据allin_2025-11-25.sqldisability_typesrc/enums/disability-type.enum.tsenum DisabilityType或const DisabilityType定义DisabilityType.VISION = 'vision', DisabilityType.HEARING = 'hearing'等allin-packages/enums/src/enums/disability-type.enum.tsDisabilityLevel (AC: 3)
allin_2025-11-25.sql中的sys_dict表数据allin_2025-11-25.sqldisability_levelsrc/enums/disability-level.enum.tsenum DisabilityLevel { ONE = 1, TWO = 2, THREE = 3, FOUR = 4 }allin-packages/enums/src/enums/disability-level.enum.tsOrderStatus (AC: 4)
allin_2025-11-25.sql中的sys_dict表数据allin_2025-11-25.sqlorder_statussrc/enums/order-status.enum.tsOrderStatus.DRAFT = 'draft', OrderStatus.CONFIRMED = 'confirmed'等allin-packages/enums/src/enums/order-status.enum.tsWorkStatus (AC: 5)
allin_2025-11-25.sql中的sys_dict表数据allin_2025-11-25.sqlwork_statussrc/enums/work-status.enum.tsWorkStatus.NOT_WORKING = 'not_working', WorkStatus.PRE_WORKING = 'pre_working'等allin-packages/enums/src/enums/work-status.enum.ts@d8d/allin-enums,workspace依赖 (AC: 6)
package.json文件allin-packages/channel-module/package.json"name": "@d8d/allin-enums""type": "module""main": "src/index.ts" # 直接引用源码,workspace中不需要构建"types": "src/index.ts" # 类型定义直接使用源码"scripts": 添加"test", "typecheck"等脚本(不需要"build"脚本)"dependencies": 不需要特殊依赖"devDependencies": 添加"typescript", "vitest", "@types/node"等allin-packages/enums/package.jsonpnpm-workspace.yaml文件pnpm-workspace.yamlallin-packages/enums路径allin-packages/*配置tests/unit/enums.test.tspackages/shared-types/tests/unit/types.test.tsDisabilityType枚举包含所有7个值DisabilityLevel枚举包含4个数字等级OrderStatus枚举包含5个状态值WorkStatus枚举包含4个状态值allin-packages/enums/tests/unit/enums.test.tstests/unit/export.test.tssrc/index.ts导出的所有枚举allin-packages/enums/tests/unit/export.test.tssrc/index.ts文件,统一导出所有枚举packages/shared-types/src/index.tsexport { DisabilityType } from './enums/disability-type.enum';等allin-packages/enums/src/index.tspnpm typecheckallin-packages/enums目录下运行pnpm typecheckpnpm testallin-packages/enums目录下运行pnpm testallin-packages/enums目录下运行pnpm typecheckdisability-module的package.json中添加对@d8d/allin-enums的依赖"@d8d/allin-enums": "workspace:*"order-module的package.json中添加对@d8d/allin-enums的依赖"@d8d/allin-enums": "workspace:*"docs/examples/enums-usage.mdallin-packages/enums/docs/examples/enums-usage.mdpnpm-workspace.yaml中添加allin-packages/*配置 [Source: docs/stories/007.001.transplant-channel-management-module.story.md]dict_management模块,改为创建枚举常量包 [Source: docs/prd/epic-007-allin-system-transplant.md#设计决策:字典管理模块重构为枚举常量包]allin_2025-11-25.sql中的sys_dict表 [Source: docs/prd/epic-007-allin-system-transplant.md#设计决策:字典管理模块重构为枚举常量包]disability_type='vision' → DisabilityType.VISION = 'vision')[Source: docs/prd/epic-007-allin-system-transplant.md#技术实现要求]allin-packages/enums/ [Source: docs/prd/epic-007-allin-system-transplant.md#技术实现要求]@d8d/allin-enums [Source: docs/prd/epic-007-allin-system-transplant.md#技术实现要求]src/index.ts统一导出所有枚举 [Source: docs/prd/epic-007-allin-system-transplant.md#技术实现要求]enum或const enum定义 [Source: docs/prd/epic-007-allin-system-transplant.md#技术实现要求]packages/shared-types/目录结构 [Source: docs/architecture/source-tree.md#实际项目结构]目录组织:
allin-packages/enums/
├── package.json
├── tsconfig.json
├── vitest.config.ts
├── src/
│ ├── enums/
│ │ ├── disability-type.enum.ts
│ │ ├── disability-level.enum.ts
│ │ ├── order-status.enum.ts
│ │ └── work-status.enum.ts
│ ├── types/ (预留,如有需要)
│ └── index.ts
├── tests/
│ └── unit/
│ ├── enums.test.ts
│ └── export.test.ts
└── # 注意:枚举常量包在workspace中直接引用源码,不需要dist目录
workspace配置:需要在根目录pnpm-workspace.yaml中添加allin-packages/enums [Source: 故事007.001经验]
tests/unit/目录 [Source: docs/architecture/testing-strategy.md#单元测试]packages/shared-types/tests/unit/中的测试模式DisabilityType和DisabilityLevel枚举 [Source: docs/prd/epic-007-allin-system-transplant.md#对后续模块的影响]OrderStatus和WorkStatus枚举 [Source: docs/prd/epic-007-allin-system-transplant.md#对后续模块的影响]tests/unit/目录 [Source: docs/architecture/testing-strategy.md#单元测试]enums.test.ts, export.test.ts [Source: docs/architecture/testing-strategy.md#测试命名约定]枚举值验证测试:
导出验证测试:
src/index.ts可以正确导入所有枚举类型安全测试:
pnpm test(在allin-packages/enums目录下)pnpm test:coveragepnpm typecheck| Date | Version | Description | Author |
|---|---|---|---|
| 2025-12-02 | 1.0 | 初始创建故事007.003 | Bob (Scrum Master) |
此部分由开发代理在实施过程中填写
allin-packages/enums 目录结构allin_2025-11-25.sql 中的 sys_dict 表数据,确认枚举值与数据库一致DisabilityType(vision, hearing, speech, physical, intellectual, mental, multiple)DisabilityLevel(1, 2, 3, 4),处理数字枚举反向映射问题OrderStatus(draft, confirmed, in_progress, completed, cancelled)WorkStatus(not_working, pre_working, working, resigned)package.json:包名 @d8d/allin-enums,workspace依赖pnpm-workspace.yaml 确认已包含 allin-packages/* 配置allin-packages/enums/package.json - 包配置allin-packages/enums/tsconfig.json - TypeScript配置allin-packages/enums/vitest.config.ts - 测试配置allin-packages/enums/src/index.ts - 包入口文件allin-packages/enums/src/enums/disability-type.enum.ts - 残疾类型枚举allin-packages/enums/src/enums/disability-level.enum.ts - 残疾等级枚举allin-packages/enums/src/enums/order-status.enum.ts - 订单状态枚举allin-packages/enums/src/enums/work-status.enum.ts - 工作状态枚举allin-packages/enums/tests/unit/enums.test.ts - 枚举测试allin-packages/enums/tests/unit/export.test.ts - 导出测试docs/stories/007.003.create-allin-enums-package.story.md - 更新状态和Dev Agent Record此部分由QA代理在审查完成后填写