009.001.core-module-mt-creation.story.md 7.2 KB

Story 009.001: Core Module MT Creation

Status

Completed

Story

As a 系统架构师 I want 创建@d8d/core-module-mt包并将user-module-mt、auth-module-mt、file-module-mt三个包的功能迁移到内部模块目录 so that 消除循环依赖问题,同时保持现有API和功能的完整性

Acceptance Criteria

  1. 创建@d8d/core-module-mt包,包含所有三个模块的功能
  2. 在包内保持三个模块的独立目录结构:user-module-mt、auth-module-mt、file-module-mt
  3. 所有现有功能正常工作,包括实体关系、服务层、中间件和Schema
  4. 构建和测试通过,确保无回归
  5. 其他包完全不需要修改代码,只需更新依赖版本

Tasks / Subtasks

  • 创建@d8d/core-module-mt包的基础结构 (AC: 1)
    • 查看原有三个包的配置文件(package.json、tsconfig.json、vitest.config.ts),聚合依赖版本和配置
    • 创建统一的package.json,合并三个包的依赖关系和exports配置
  • 直接cp原有包内容到新包,过滤掉dist和node_modules目录 (AC: 2)
    • 从packages/user-module-mt复制内容到packages/core-module-mt/user-module-mt(保持src和tests结构)
    • 从packages/auth-module-mt复制内容到packages/core-module-mt/auth-module-mt(保持src和tests结构)
    • 从packages/file-module-mt复制内容到packages/core-module-mt/file-module-mt(保持src和tests结构)
    • 过滤掉所有dist和node_modules目录
    • 过滤掉package.json、tsconfig.json、vitest.config.ts等配置文件
  • 调整内部模块结构和依赖关系 (AC: 2)
    • 修改模块间的内部导入路径,使用相对路径
    • 确保模块间的依赖关系在包内正确解析
  • 配置包导出路径 (AC: 1)
    • 在package.json的exports中配置各模块的导出路径
    • 确保导出接口与原有包保持一致
  • 验证功能完整性 (AC: 3, 4)
    • 运行现有测试确保所有功能正常工作
    • 验证实体关系:UserEntityMt ↔ FileMt(头像文件关联)
    • 验证服务层:AuthService → UserServiceMt
    • 验证中间件:所有路由依赖authMiddleware
    • 验证Schema:多个模块依赖UserSchemaMt和FileSchema
  • 更新依赖和构建配置 (AC: 4)
    • 更新package.json中的依赖关系
    • 配置TypeScript编译选项
    • 确保构建过程正确生成dist目录

Dev Notes

技术栈信息 [Source: architecture/tech-stack.md]

  • 运行时: Node.js 20.18.3
  • 框架: Hono 4.8.5 (RPC类型安全)
  • 数据库: PostgreSQL 17 + TypeORM 0.3.25
  • 构建工具: Vite 7.0.0
  • 测试框架: Vitest 2.x + Testing Library 13.x + hono/testing

项目结构信息 [Source: architecture/source-tree.md]

  • 包管理: pnpm workspace模式
  • 包架构层次: 基础设施层 → 业务模块层 → 多租户模块层 → 前端界面层 → 应用层
  • 多租户包位置: packages/目录下的*-mt后缀包
  • 现有相关包:
    • packages/user-module-mt/
    • packages/auth-module-mt/
    • packages/file-module-mt/
  • 新包位置: packages/core-module-mt/

集成点信息 [Source: docs/epic-009-multi-tenant-core-module-consolidation.md]

  • 实体关系: UserEntityMt ↔ FileMt(头像文件关联)
  • 服务层: AuthService → UserServiceMt
  • 中间件: 所有路由依赖authMiddleware
  • Schema: 多个模块依赖UserSchemaMt和FileSchema

包结构设计 [基于原有包结构分析]

@d8d/core-module-mt/
├── user-module-mt/            # 用户模块(保持原包完整结构)
│   ├── src/
│   │   ├── entities/
│   │   ├── services/
│   │   ├── schemas/
│   │   ├── routes/
│   │   └── index.mt.ts
│   └── tests/
├── auth-module-mt/            # 认证模块(保持原包完整结构)
│   ├── src/
│   │   ├── entities/
│   │   ├── services/
│   │   ├── schemas/
│   │   ├── routes/
│   │   ├── middleware/
│   │   └── index.mt.ts
│   └── tests/
├── file-module-mt/            # 文件模块(保持原包完整结构)
│   ├── src/
│   │   ├── entities/
│   │   ├── services/
│   │   ├── schemas/
│   │   ├── routes/
│   │   └── index.ts
│   └── tests/
└── package.json               # 聚合后的统一配置,包含各模块的exports

Exports配置设计 [基于原有包exports分析]

  • 用户模块导出: 保持原有导出路径,如 @d8d/core-module-mt/user-module-mt/entities
  • 认证模块导出: 保持原有导出路径,如 @d8d/core-module-mt/auth-module-mt/middleware
  • 文件模块导出: 保持原有导出路径,如 @d8d/core-module-mt/file-module-mt/services
  • 其他包引用方式不变: 只需将依赖从 @d8d/user-module-mt 改为 @d8d/core-module-mt/user-module-mt

测试

测试标准 [Source: architecture/coding-standards.md]

  • 测试框架: Vitest + Testing Library + hono/testing
  • 测试位置: __tests__ 文件夹与源码并列
  • 覆盖率目标: 核心业务逻辑 > 80%
  • 测试类型: 单元测试、集成测试

测试要求

  • 验证所有现有功能正常工作
  • 确保模块间依赖关系正确
  • 测试实体关系和服务层调用
  • 验证中间件功能
  • 确保Schema验证正确

Change Log

Date Version Description Author
2025-11-18 1.4 移除包入口文件,直接使用原包的exports配置 Bob (Scrum Master)
2025-11-18 1.3 简化包结构:core包下不加src,直接放三个包,保持原结构 Bob (Scrum Master)
2025-11-18 1.2 简化包结构:直接按原包结构放置,保持测试独立 Bob (Scrum Master)
2025-11-18 1.1 更新任务:添加依赖版本聚合和配置文件过滤 Bob (Scrum Master)
2025-11-18 1.0 初始故事创建 Bob (Scrum Master)

Dev Agent Record

Agent Model Used

  • Claude Code Agent (d8d-model)

Debug Log References

  • 成功创建core-module-mt聚合包结构
  • 修复模块间导入路径问题(从相对路径改为包名导入)
  • 所有119个测试通过验证
  • 类型检查和构建成功

Completion Notes List

  • ✅ 创建了@d8d/core-module-mt聚合包
  • ✅ 成功迁移user-module-mt、auth-module-mt、file-module-mt三个模块
  • ✅ 解决了模块间循环依赖问题
  • ✅ 保持了所有现有API和功能的完整性
  • ✅ 所有测试通过(119个测试)
  • ✅ 类型检查通过
  • ✅ 构建成功
  • ✅ 多租户隔离功能正常工作

File List

  • packages/core-module-mt/package.json (聚合包配置)
  • packages/core-module-mt/tsconfig.json (TypeScript配置)
  • packages/core-module-mt/user-module-mt/ (用户模块)
  • packages/core-module-mt/auth-module-mt/ (认证模块)
  • packages/core-module-mt/file-module-mt/ (文件模块)

QA Results

  • 测试覆盖率: 所有119个测试通过
  • 功能验证: 认证、用户管理、文件管理功能完整
  • 多租户隔离: 租户数据隔离、认证隔离功能正常
  • 构建验证: TypeScript编译和打包成功
  • 依赖管理: 模块间依赖关系正确解析