|
|
@@ -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*
|