|
@@ -0,0 +1,181 @@
|
|
|
|
|
+# Story 006.002: 将现有独立模块改为适配器模式
|
|
|
|
|
+
|
|
|
|
|
+## Status
|
|
|
|
|
+Draft
|
|
|
|
|
+
|
|
|
|
|
+## Story
|
|
|
|
|
+**As a** 开发者,
|
|
|
|
|
+**I want** 将现有的独立模块(user-module、auth-module、file-module)改为适配器模式,重新导出 `@d8d/core-module` 中的代码,
|
|
|
|
|
+**so that** 我们可以简化依赖关系,统一代码管理到 core-module 中,提高代码维护性。
|
|
|
|
|
+
|
|
|
|
|
+## Acceptance Criteria
|
|
|
|
|
+1. [ ] 现有独立模块成功改为适配器模式
|
|
|
|
|
+2. [ ] 所有导出正确重定向到 `core-module`
|
|
|
|
|
+3. [ ] 依赖关系简化,只依赖 `@d8d/core-module`
|
|
|
|
|
+4. [ ] 功能测试通过,无回归问题
|
|
|
|
|
+5. [ ] TypeScript 类型检查无错误
|
|
|
|
|
+6. [ ] 文档更新,说明新的架构
|
|
|
|
|
+
|
|
|
|
|
+## Tasks / Subtasks
|
|
|
|
|
+- [ ] 备份现有独立模块的完整代码(如果需要)(AC: 1)
|
|
|
|
|
+ - [ ] 备份 `packages/user-module/src` 目录
|
|
|
|
|
+ - [ ] 备份 `packages/auth-module/src` 目录
|
|
|
|
|
+ - [ ] 备份 `packages/file-module/src` 目录
|
|
|
|
|
+- [ ] 将 `user-module` 改为适配器模式 (AC: 1, 2, 3)
|
|
|
|
|
+ - [ ] 清空现有 `packages/user-module/src` 目录中的完整代码
|
|
|
|
|
+ - [ ] 创建适配器文件:`packages/user-module/src/index.ts`,重新导出 `@d8d/core-module/user-module`
|
|
|
|
|
+ - [ ] 创建 `packages/user-module/src/schemas/index.ts`,重新导出 `@d8d/core-module/user-module/schemas`
|
|
|
|
|
+ - [ ] 更新 `packages/user-module/package.json`:简化依赖关系,只依赖 `@d8d/core-module`
|
|
|
|
|
+- [ ] 将 `auth-module` 改为适配器模式 (AC: 1, 2, 3)
|
|
|
|
|
+ - [ ] 清空现有 `packages/auth-module/src` 目录中的完整代码
|
|
|
|
|
+ - [ ] 创建适配器文件:`packages/auth-module/src/index.ts`,重新导出 `@d8d/core-module/auth-module`
|
|
|
|
|
+ - [ ] 创建 `packages/auth-module/src/schemas/index.ts`,重新导出 `@d8d/core-module/auth-module/schemas`
|
|
|
|
|
+ - [ ] 更新 `packages/auth-module/package.json`:简化依赖关系,只依赖 `@d8d/core-module`
|
|
|
|
|
+- [ ] 将 `file-module` 改为适配器模式 (AC: 1, 2, 3)
|
|
|
|
|
+ - [ ] 清空现有 `packages/file-module/src` 目录中的完整代码
|
|
|
|
|
+ - [ ] 创建适配器文件:`packages/file-module/src/index.ts`,重新导出 `@d8d/core-module/file-module`
|
|
|
|
|
+ - [ ] 创建 `packages/file-module/src/schemas/index.ts`,重新导出 `@d8d/core-module/file-module/schemas`
|
|
|
|
|
+ - [ ] 更新 `packages/file-module/package.json`:简化依赖关系,只依赖 `@d8d/core-module`
|
|
|
|
|
+- [ ] 验证适配器模式功能正常 (AC: 4, 5)
|
|
|
|
|
+ - [ ] 确保所有导出都正确重定向到 `core-module`
|
|
|
|
|
+ - [ ] 运行测试验证功能:`cd packages/user-module && pnpm test`
|
|
|
|
|
+ - [ ] 运行测试验证功能:`cd packages/auth-module && pnpm test`
|
|
|
|
|
+ - [ ] 运行测试验证功能:`cd packages/file-module && pnpm test`
|
|
|
|
|
+ - [ ] 检查类型定义正确:`cd packages/user-module && pnpm typecheck`
|
|
|
|
|
+ - [ ] 检查类型定义正确:`cd packages/auth-module && pnpm typecheck`
|
|
|
|
|
+ - [ ] 检查类型定义正确:`cd packages/file-module && pnpm typecheck`
|
|
|
|
|
+- [ ] 更新文档 (AC: 6)
|
|
|
|
|
+ - [ ] 说明新的架构模式
|
|
|
|
|
+ - [ ] 提供导入示例
|
|
|
|
|
+ - [ ] 更新 README 文件
|
|
|
|
|
+
|
|
|
|
|
+## Dev Notes
|
|
|
|
|
+
|
|
|
|
|
+### 项目结构信息 [Source: architecture/source-tree.md#实际项目结构]
|
|
|
|
|
+- 项目采用 monorepo 结构,包含小程序(mini)、Web应用(web)和模块化包架构
|
|
|
|
|
+- 包管理使用 pnpm workspace 管理多包依赖关系
|
|
|
|
|
+- 包架构层次:
|
|
|
|
|
+ - **基础设施层**: shared-types → shared-utils → shared-crud
|
|
|
|
|
+ - **测试基础设施**: shared-test-util
|
|
|
|
|
+ - **业务模块层**: user-module → auth-module → file-module → geo-areas
|
|
|
|
|
+ - **应用层**: server (重构后)
|
|
|
|
|
+- 当前独立模块位置:
|
|
|
|
|
+ - `packages/user-module/` - 用户管理模块 (@d8d/user-module)
|
|
|
|
|
+ - `packages/auth-module/` - 认证管理模块 (@d8d/auth-module)
|
|
|
|
|
+ - `packages/file-module/` - 文件管理模块 (@d8d/file-module)
|
|
|
|
|
+- 新创建的 core-module 位置:
|
|
|
|
|
+ - `packages/core-module/` - 核心模块聚合包 (@d8d/core-module)
|
|
|
|
|
+ - 包含:`user-module/`, `auth-module/`, `file-module/`, `system-config-module/`
|
|
|
|
|
+
|
|
|
|
|
+### 技术栈信息 [Source: architecture/tech-stack.md]
|
|
|
|
|
+- 运行时:Node.js 20.18.3
|
|
|
|
|
+- 框架:Hono 4.8.5 (Web框架和API路由,RPC类型安全)
|
|
|
|
|
+- 数据库:PostgreSQL 17 (通过TypeORM)
|
|
|
|
|
+- ORM:TypeORM 0.3.25 (数据库操作抽象,实体管理)
|
|
|
|
|
+- 包管理:pnpm workspace
|
|
|
|
|
+
|
|
|
|
|
+### 编码标准 [Source: architecture/coding-standards.md]
|
|
|
|
|
+- 代码风格:TypeScript严格模式,一致的缩进和命名
|
|
|
|
|
+- linting规则:已配置ESLint,支持TypeScript和React
|
|
|
|
|
+- 测试模式:完整的测试框架已配置(Vitest + Testing Library + Playwright)
|
|
|
|
|
+
|
|
|
|
|
+### 测试策略 [Source: architecture/testing-strategy.md]
|
|
|
|
|
+- **测试框架**: Vitest + Testing Library + hono/testing + Playwright
|
|
|
|
|
+- **测试位置**: `__tests__` 文件夹与源码并列
|
|
|
|
|
+- **覆盖率目标**: 核心业务逻辑 > 80%
|
|
|
|
|
+- **测试类型**: 单元测试、集成测试、E2E测试
|
|
|
|
|
+- **业务模块包测试位置**:
|
|
|
|
|
+ - 单元测试:`packages/*-module/tests/unit/**/*.test.ts`
|
|
|
|
|
+ - 集成测试:`packages/*-module/tests/integration/**/*.test.ts`
|
|
|
|
|
+- **测试执行命令**:
|
|
|
|
|
+ - 运行所有测试:`cd packages/user-module && pnpm test`
|
|
|
|
|
+ - 运行单元测试:`cd packages/user-module && pnpm test:unit`
|
|
|
|
|
+ - 运行集成测试:`cd packages/auth-module && pnpm test:integration`
|
|
|
|
|
+ - 生成覆盖率报告:`cd packages/user-module && pnpm test:coverage`
|
|
|
|
|
+
|
|
|
|
|
+### 适配器模式设计
|
|
|
|
|
+当前架构:
|
|
|
|
|
+1. **多租户版本**:
|
|
|
|
|
+ - 完整代码在 `core-module-mt` 中
|
|
|
|
|
+ - `user-module-mt`、`auth-module-mt`、`file-module-mt` 只是适配器,重新导出 `@d8d/core-module-mt` 中的代码
|
|
|
|
|
+
|
|
|
|
|
+2. **非多租户版本(当前)**:
|
|
|
|
|
+ - `user-module`、`auth-module`、`file-module` 包含完整代码
|
|
|
|
|
+ - 依赖多个基础设施包
|
|
|
|
|
+
|
|
|
|
|
+3. **目标架构**:
|
|
|
|
|
+ - 完整代码移到 `core-module` 中(通过 Story 1 创建)
|
|
|
|
|
+ - 现有独立模块改为适配器模式,重新导出 `@d8d/core-module` 中的代码
|
|
|
|
|
+ - 简化依赖关系,统一代码管理
|
|
|
|
|
+
|
|
|
|
|
+### 文件路径参考
|
|
|
|
|
+- `packages/core-module/user-module/src/index.ts` - core-module 中的用户模块入口
|
|
|
|
|
+- `packages/core-module/auth-module/src/index.ts` - core-module 中的认证模块入口
|
|
|
|
|
+- `packages/core-module/file-module/src/index.ts` - core-module 中的文件模块入口
|
|
|
|
|
+- `packages/core-module/user-module/src/schemas/index.ts` - core-module 中的用户模式
|
|
|
|
|
+- `packages/core-module/auth-module/src/schemas/index.ts` - core-module 中的认证模式
|
|
|
|
|
+- `packages/core-module/file-module/src/schemas/index.ts` - core-module 中的文件模式
|
|
|
|
|
+
|
|
|
|
|
+### 依赖关系简化
|
|
|
|
|
+当前独立模块依赖多个包:
|
|
|
|
|
+- `@d8d/shared-types`
|
|
|
|
|
+- `@d8d/shared-utils`
|
|
|
|
|
+- `@d8d/shared-crud`
|
|
|
|
|
+- 其他业务模块
|
|
|
|
|
+
|
|
|
|
|
+改为适配器模式后,只需依赖:
|
|
|
|
|
+- `@d8d/core-module`
|
|
|
|
|
+
|
|
|
|
|
+### 测试要求
|
|
|
|
|
+- 确保所有现有测试通过
|
|
|
|
|
+- 验证适配器正确重定向到 core-module
|
|
|
|
|
+- 检查类型定义兼容性
|
|
|
|
|
+- 确保无回归问题
|
|
|
|
|
+
|
|
|
|
|
+### 兼容性要求
|
|
|
|
|
+- 现有功能保持不变
|
|
|
|
|
+- 现有导入路径保持不变:`import { UserService } from '@d8d/user-module';`
|
|
|
|
|
+- 数据库 schema 保持不变,不影响现有数据
|
|
|
|
|
+- 性能无影响
|
|
|
|
|
+
|
|
|
|
|
+## Testing
|
|
|
|
|
+### 测试标准 [Source: architecture/testing-strategy.md]
|
|
|
|
|
+- **测试框架**: Vitest
|
|
|
|
|
+- **测试位置**: `__tests__` 文件夹与源码并列
|
|
|
|
|
+- **覆盖率目标**: 核心业务逻辑 > 80%
|
|
|
|
|
+- **测试类型**: 单元测试、集成测试
|
|
|
|
|
+
|
|
|
|
|
+### 适配器模式特定测试要求
|
|
|
|
|
+1. **导出验证测试**: 验证适配器正确重新导出所有 core-module 的导出
|
|
|
|
|
+2. **类型兼容性测试**: 确保类型定义与 core-module 完全兼容
|
|
|
|
|
+3. **功能回归测试**: 确保所有现有功能测试通过
|
|
|
|
|
+4. **依赖关系测试**: 验证 package.json 依赖关系正确简化
|
|
|
|
|
+
|
|
|
|
|
+### 测试执行流程
|
|
|
|
|
+1. 运行单元测试:`cd packages/user-module && pnpm test:unit`
|
|
|
|
|
+2. 运行集成测试:`cd packages/auth-module && pnpm test:integration`
|
|
|
|
|
+3. 运行所有测试:`cd packages/file-module && pnpm test`
|
|
|
|
|
+4. 类型检查:`cd packages/user-module && pnpm typecheck`
|
|
|
|
|
+
|
|
|
|
|
+## Change Log
|
|
|
|
|
+| Date | Version | Description | Author |
|
|
|
|
|
+|------|---------|-------------|--------|
|
|
|
|
|
+| 2025-12-02 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
|
|
|
|
|
+
|
|
|
|
|
+## Dev Agent Record
|
|
|
|
|
+*This section is populated by the development agent during implementation*
|
|
|
|
|
+
|
|
|
|
|
+### Agent Model Used
|
|
|
|
|
+*Record the specific AI agent model and version used for development*
|
|
|
|
|
+
|
|
|
|
|
+### Debug Log References
|
|
|
|
|
+*Reference any debug logs or traces generated during development*
|
|
|
|
|
+
|
|
|
|
|
+### Completion Notes List
|
|
|
|
|
+*Notes about the completion of tasks and any issues encountered*
|
|
|
|
|
+
|
|
|
|
|
+### File List
|
|
|
|
|
+*List all files created, modified, or affected during story implementation*
|
|
|
|
|
+
|
|
|
|
|
+## QA Results
|
|
|
|
|
+*Results from QA Agent QA review of the completed story implementation*
|