Ver Fonte

📝 docs(story): update web multi-tenant UI integration and core module consolidation stories

- add detailed tasks for web multi-tenant UI package integration
- update core module consolidation story with revised directory structure
- add package exports configuration details for core module
- include change log entries for story updates
- add notes on testing requirements and integration patterns
yourname há 1 mês atrás
pai
commit
e274d11bfc

+ 140 - 0
docs/stories/008.002.web-multi-tenant-ui-integration.story.md

@@ -0,0 +1,140 @@
+# Story 008.002: Web多租户UI包全面集成
+
+## Status
+Draft
+
+## Story
+**As a** 系统管理员
+**I want** 将web应用中所有管理界面改为使用多租户UI包
+**so that** 实现完整的租户数据隔离和租户管理功能,为后续按需拼装单租户或多租户系统提供基础
+
+## Acceptance Criteria
+1. 按照现有用户管理UI包的集成模式,将web中所有管理界面改为使用多租户UI包
+2. 移除web应用中所有本地实现的管理界面页面
+3. 更新API客户端初始化,使用多租户UI包的客户端管理器
+4. 确保所有管理界面功能在多租户环境下正常工作
+5. 验证租户数据隔离和权限控制功能
+6. 现有单租户功能通过回归测试验证
+
+## Tasks / Subtasks
+- [ ] 验证多租户UI包可用性和导出 (AC: 1)
+  - [ ] 检查所有多租户UI包的package.json配置
+  - [ ] 验证每个包都有正确的组件导出(如UserManagement、OrderManagement等)
+  - [ ] 验证每个包都有正确的API客户端导出(如userClient、orderClient等)
+  - [ ] 确认包名和版本与server包一致
+- [ ] 更新web路由配置,导入所有多租户UI包 (AC: 1)
+  - [ ] 在web/src/client/admin/routes.tsx中导入多租户UI包组件
+  - [ ] 更新路由配置,使用多租户UI包组件替换本地页面组件
+  - [ ] 验证路由配置正确性
+- [ ] 更新API客户端初始化配置 (AC: 3)
+  - [ ] 在web/src/client/api_init.ts中导入所有多租户UI包的客户端管理器
+  - [ ] 初始化所有多租户API客户端
+  - [ ] 验证客户端初始化正确性
+- [ ] 移除本地实现的管理界面页面 (AC: 2)
+  - [ ] 删除web/src/client/admin/pages/目录下的本地管理页面文件
+  - [ ] 清理不再使用的本地组件和导入
+  - [ ] 验证页面移除后系统正常运行
+- [ ] 更新web应用的package.json依赖 (AC: 1)
+  - [ ] 将所有单租户UI包依赖更新为多租户UI包依赖
+  - [ ] 确保依赖包名与代码导入一致
+  - [ ] 验证依赖版本兼容性
+- [ ] 验证多租户功能完整性 (AC: 4, 5)
+  - [ ] 测试所有管理界面在多租户环境下的功能
+  - [ ] 验证租户数据隔离机制
+  - [ ] 验证权限控制功能
+  - [ ] 验证租户上下文传递
+- [ ] 执行回归测试 (AC: 6)
+  - [ ] 运行现有单租户功能回归测试
+  - [ ] 验证向后兼容性
+  - [ ] 确保性能无明显下降
+
+## Dev Notes
+
+### 技术栈信息 [Source: architecture/tech-stack.md]
+- **前端框架**: React 19.1.0 + TypeScript
+- **状态管理**: TanStack Query v5.83.0
+- **路由**: React Router
+- **UI组件**: shadcn/ui组件库
+- **构建工具**: Vite 7.0.0
+
+### 项目结构信息 [Source: architecture/source-tree.md]
+- **Web应用位置**: `web/`
+- **路由配置**: `web/src/client/admin/routes.tsx`
+- **API客户端初始化**: `web/src/client/api_init.ts`
+- **多租户UI包位置**: `packages/*-management-ui-mt/`
+- **本地页面位置**: `web/src/client/admin/pages/`
+
+### 多租户UI包列表 [基于实际包检查]
+实际存在的多租户UI包(已确认):
+- `@d8d/user-management-ui-mt` - 多租户用户管理界面
+- `@d8d/auth-management-ui-mt` - 多租户认证管理界面
+- `@d8d/advertisement-management-ui-mt` - 多租户广告管理界面
+- `@d8d/advertisement-type-management-ui-mt` - 多租户广告分类管理界面
+- `@d8d/order-management-ui-mt` - 多租户订单管理界面
+- `@d8d/goods-management-ui-mt` - 多租户商品管理界面
+- `@d8d/goods-category-management-ui-mt` - 多租户商品分类管理界面
+- `@d8d/supplier-management-ui-mt` - 多租户供应商管理界面
+- `@d8d/merchant-management-ui-mt` - 多租户商户管理界面
+- `@d8d/file-management-ui-mt` - 多租户文件管理界面
+- `@d8d/delivery-address-management-ui-mt` - 多租户地址管理界面
+- `@d8d/area-management-ui-mt` - 多租户区域管理界面
+
+**注意**: 所有多租户UI包已确认存在,需要验证其导出配置和API客户端可用性。
+
+### 现有集成模式 [Source: docs/prd/epic-008-server-web-multi-tenant-integration.md#现有集成模式]
+- 当前用户管理已使用包模式:`import { UserManagement } from '@d8d/user-management-ui'`
+- API客户端初始化模式:`userClientManager.init('/api/v1/users')`
+- 需要按照相同模式将所有管理界面改为多租户版本
+
+### 路由配置模式 [Source: web/src/client/admin/routes.tsx]
+```typescript
+{
+  path: 'users',
+  element: <UserManagement />,  // 使用多租户UI包
+}
+```
+
+### API客户端初始化模式 [Source: web/src/client/api_init.ts]
+```typescript
+import { userClientManager } from '@d8d/user-management-ui-mt/api';
+userClientManager.init('/api/v1/users');
+```
+
+### 测试要求
+- 使用Vitest进行集成测试 [Source: architecture/tech-stack.md#新技术添加]
+- 验证所有管理界面功能在多租户环境下的正确性
+- 确保租户数据隔离机制正常工作
+- 执行回归测试确保现有功能不受影响
+
+### 基于故事008.001实现经验的注意事项
+- **包命名一致性**: 确保web应用使用的多租户UI包名与server端使用的多租户模块包名一致
+- **导出验证**: 基于故事008.001经验,需要验证每个多租户UI包都有正确的组件和API客户端导出
+- **依赖管理**: 需要更新web应用的package.json,将所有单租户UI包依赖替换为多租户版本
+- **API客户端模式**: 多租户UI包使用与单租户包相同的RPC客户端架构,无需额外配置
+- **租户上下文**: 前端无需处理租户上下文,由后端认证中间件自动处理(`c.set('tenantId', user.tenantId)`)
+- **向后兼容性**: 保持现有API接口路径不变,确保现有单租户功能不受影响
+- **测试策略**: 基于故事008.001经验,需要验证包导入、组件渲染和API客户端初始化
+
+## Change Log
+| Date | Version | Description | Author |
+|------|---------|-------------|--------|
+| 2025-11-18 | 1.1 | 基于故事008.001实现经验更新任务和注意事项 | Bob (Scrum Master) |
+| 2025-11-18 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
+
+## Dev Agent Record
+*This section is populated by the development agent during implementation*
+
+### Agent Model Used
+*To be filled by dev agent*
+
+### Debug Log References
+*To be filled by dev agent*
+
+### Completion Notes List
+*To be filled by dev agent*
+
+### File List
+*To be filled by dev agent*
+
+## QA Results
+*Results from QA Agent QA review of the completed story implementation*

+ 44 - 21
docs/stories/009.001.core-module-mt-creation.story.md

@@ -10,27 +10,26 @@ Draft
 
 ## Acceptance Criteria
 1. 创建@d8d/core-module-mt包,包含所有三个模块的功能
-2. 在包内保持三个模块的独立目录结构:modules/user、modules/auth、modules/file
+2. 在包内保持三个模块的独立目录结构:user-module-mt、auth-module-mt、file-module-mt
 3. 所有现有功能正常工作,包括实体关系、服务层、中间件和Schema
 4. 构建和测试通过,确保无回归
 5. 其他包完全不需要修改代码,只需更新依赖版本
 
 ## Tasks / Subtasks
 - [ ] 创建@d8d/core-module-mt包的基础结构 (AC: 1)
-  - [ ] 创建package.json,定义包名和依赖
-  - [ ] 创建src目录结构:modules/user、modules/auth、modules/file、shared
-  - [ ] 创建包入口文件src/index.ts
+  - [ ] 查看原有三个包的配置文件(package.json、tsconfig.json、vitest.config.ts),聚合依赖版本和配置
+  - [ ] 创建统一的package.json,合并三个包的依赖关系和exports配置
 - [ ] 直接cp原有包内容到新包,过滤掉dist和node_modules目录 (AC: 2)
-  - [ ] 从packages/user-module-mt复制内容到packages/core-module-mt/src/modules/user
-  - [ ] 从packages/auth-module-mt复制内容到packages/core-module-mt/src/modules/auth
-  - [ ] 从packages/file-module-mt复制内容到packages/core-module-mt/src/modules/file
+  - [ ] 从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)
   - [ ] 修改模块间的内部导入路径,使用相对路径
-  - [ ] 将共享中间件移动到shared/middleware目录
   - [ ] 确保模块间的依赖关系在包内正确解析
-- [ ] 更新包入口导出所有功能 (AC: 1)
-  - [ ] 在src/index.ts中导出所有模块的实体、服务、Schema和中间件
+- [ ] 配置包导出路径 (AC: 1)
+  - [ ] 在package.json的exports中配置各模块的导出路径
   - [ ] 确保导出接口与原有包保持一致
 - [ ] 验证功能完整性 (AC: 3, 4)
   - [ ] 运行现有测试确保所有功能正常工作
@@ -68,23 +67,43 @@ Draft
 - **中间件**: 所有路由依赖authMiddleware
 - **Schema**: 多个模块依赖UserSchemaMt和FileSchema
 
-### 包结构设计 [Source: docs/epic-009-multi-tenant-core-module-consolidation.md]
+### 包结构设计 [基于原有包结构分析]
 ```
 @d8d/core-module-mt/
-├── src/
-│   ├── modules/                # 模块层
-│   │   ├── user/               # 用户模块(原user-module-mt)
-│   │   ├── auth/               # 认证模块(原auth-module-mt)
-│   │   ├── file/               # 文件模块(原file-module-mt)
-│   │   └── index.ts
-│   ├── shared/                 # 共享层
+├── user-module-mt/            # 用户模块(保持原包完整结构)
+│   ├── src/
+│   │   ├── entities/
+│   │   ├── services/
+│   │   ├── schemas/
+│   │   ├── routes/
+│   │   └── index.mt.ts
+│   └── tests/
+├── auth-module-mt/            # 认证模块(保持原包完整结构)
+│   ├── src/
+│   │   ├── entities/
+│   │   ├── services/
+│   │   ├── schemas/
+│   │   ├── routes/
 │   │   ├── middleware/
-│   │   │   ├── auth.middleware.mt.ts
-│   │   │   └── index.ts
+│   │   └── index.mt.ts
+│   └── tests/
+├── file-module-mt/            # 文件模块(保持原包完整结构)
+│   ├── src/
+│   │   ├── entities/
+│   │   ├── services/
+│   │   ├── schemas/
+│   │   ├── routes/
 │   │   └── index.ts
-│   └── 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]
@@ -103,6 +122,10 @@ Draft
 ## 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