|
|
@@ -618,6 +618,63 @@ const useChannels = () => {
|
|
|
10. 编写组件测试:覆盖订单全生命周期(包含区域相关功能测试)
|
|
|
11. 通过类型检查和基本测试验证
|
|
|
|
|
|
+### 故事8:将Allin系统UI包集成到Web client admin
|
|
|
+**目标**:将史诗008中创建的7个Allin系统UI包集成到Web client admin中,对应史诗007的最后一个任务(故事8:将Allin系统模块集成到packages/server)
|
|
|
+
|
|
|
+**验收标准**:
|
|
|
+1. **依赖配置**:在`web/package.json`中添加所有7个Allin系统UI包的workspace依赖
|
|
|
+ - `@d8d/allin-channel-management-ui`
|
|
|
+ - `@d8d/allin-company-management-ui`
|
|
|
+ - `@d8d/allin-disability-management-ui`
|
|
|
+ - `@d8d/allin-disability-person-management-ui`
|
|
|
+ - `@d8d/allin-order-management-ui`
|
|
|
+ - `@d8d/allin-platform-management-ui`
|
|
|
+ - `@d8d/allin-salary-management-ui`
|
|
|
+
|
|
|
+2. **API客户端初始化**:在`web/src/client/admin/api_init.ts`中添加所有7个Allin系统UI包的API客户端初始化,路径必须与server包中的路由配置完全一致(参考`packages/server/src/index.ts:139-144`)
|
|
|
+ - `channelClientManager.init('/api/v1/channel')` - 对应server中的`/api/v1/channel`
|
|
|
+ - `companyClientManager.init('/api/v1/company')` - 对应server中的`/api/v1/company`
|
|
|
+ - `disabilityClientManager.init('/api/v1/disability')` - 对应server中的`/api/v1/disability`(注意:`disability_person`模块在server中注册为`/api/v1/disability`)
|
|
|
+ - `orderClientManager.init('/api/v1/order')` - 对应server中的`/api/v1/order`
|
|
|
+ - `platformClientManager.init('/api/v1/platform')` - 对应server中的`/api/v1/platform`
|
|
|
+ - `salaryClientManager.init('/api/v1/salary')` - 对应server中的`/api/v1/salary`
|
|
|
+ - **注意**:所有路径使用单数形式,没有`s`后缀,与server包配置保持一致
|
|
|
+
|
|
|
+3. **路由集成**:在`web/src/client/admin/routes.tsx`中添加所有7个UI包的路由配置
|
|
|
+ - `/admin/channels` → `@d8d/allin-channel-management-ui`
|
|
|
+ - `/admin/companies` → `@d8d/allin-company-management-ui`
|
|
|
+ - `/admin/disabilities` → `@d8d/allin-disability-management-ui`
|
|
|
+ - `/admin/disability-persons` → `@d8d/allin-disability-person-management-ui`
|
|
|
+ - `/admin/orders` → `@d8d/allin-order-management-ui`
|
|
|
+ - `/admin/platforms` → `@d8d/allin-platform-management-ui`
|
|
|
+ - `/admin/salaries` → `@d8d/allin-salary-management-ui`
|
|
|
+
|
|
|
+4. **菜单集成**:在`web/src/client/admin/menu.tsx`中添加对应的菜单项
|
|
|
+ - 渠道管理
|
|
|
+ - 公司管理
|
|
|
+ - 残疾人管理
|
|
|
+ - 残疾人个人管理
|
|
|
+ - 订单管理
|
|
|
+ - 平台管理
|
|
|
+ - 薪资管理
|
|
|
+
|
|
|
+5. **权限配置**:为每个菜单项配置相应的权限(参考现有权限模式)
|
|
|
+6. **图标配置**:为每个菜单项配置合适的图标(使用lucide-react图标库)
|
|
|
+7. **API路径配置**:确保API路径与后端路由对应(参考史诗007的server集成)
|
|
|
+8. **集成验证**:验证所有路由正常工作,UI包正确加载,API客户端初始化成功
|
|
|
+9. **测试验证**:通过E2E测试验证集成功能
|
|
|
+
|
|
|
+**技术要点**:
|
|
|
+- 遵循现有路由和菜单集成模式
|
|
|
+- 保持权限系统一致性
|
|
|
+- 确保路由路径与后端API路径对应
|
|
|
+- 验证UI包与后端模块的集成(对应史诗007的故事8)
|
|
|
+
|
|
|
+**与史诗007的对应关系**:
|
|
|
+- 本故事对应史诗007的**故事8:将Allin系统模块集成到packages/server**
|
|
|
+- 确保前端UI包与后端模块的集成时间点对齐
|
|
|
+- 验证前后端集成功能完整性
|
|
|
+
|
|
|
### **区域管理UI说明**
|
|
|
**目标**:复用现有`@d8d/area-management-ui`包,无需重新移植
|
|
|
|
|
|
@@ -727,7 +784,7 @@ const useChannels = () => {
|
|
|
|
|
|
## 完成定义
|
|
|
|
|
|
-- [ ] 所有7个故事完成,验收标准满足
|
|
|
+- [ ] 所有8个故事完成,验收标准满足
|
|
|
- [x] 故事1:平台管理UI(故事008.001已完成)
|
|
|
- [x] 故事2:渠道管理UI(故事008.002已完成)
|
|
|
- [x] 故事3:公司管理UI(故事008.003已完成)
|
|
|
@@ -735,6 +792,7 @@ const useChannels = () => {
|
|
|
- [x] 故事5:残疾人管理UI(故事008.005已完成)
|
|
|
- [x] 故事6:残疾人个人管理UI(故事008.006已完成)
|
|
|
- [x] 故事7:订单管理UI(故事008.007已完成)
|
|
|
+ - [ ] 故事8:将Allin系统UI包集成到Web client admin(对应史诗007故事8)
|
|
|
- [x] 区域管理功能复用`@d8d/area-management-ui`包
|
|
|
- [x] 现有功能通过测试验证
|
|
|
- [x] 集成点正常工作
|
|
|
@@ -744,7 +802,7 @@ const useChannels = () => {
|
|
|
## 验证清单
|
|
|
|
|
|
### 范围验证
|
|
|
-- [ ] 史诗可在7个故事内完成
|
|
|
+- [ ] 史诗可在8个故事内完成
|
|
|
- [ ] 不需要架构文档变更
|
|
|
- [ ] 增强遵循现有模式
|
|
|
- [ ] 集成复杂度可管理
|
|
|
@@ -767,13 +825,13 @@ const useChannels = () => {
|
|
|
|
|
|
"UI模块分析和技术栈分析已完成,关键发现:
|
|
|
|
|
|
-1. **依赖关系分析完成**:7个UI模块的依赖关系已明确(region复用现有包)
|
|
|
+1. **依赖关系分析完成**:7个UI模块的依赖关系已明确(region复用现有包),新增故事8用于集成到Web client admin
|
|
|
2. **技术栈差异分析完成**:源系统使用Ant Design + Jotai,目标系统使用@d8d/shared-ui-components + React Query,存在重大架构差异
|
|
|
3. **命名方案确定**:使用`@d8d/allin-`前缀,`-management-ui`后缀,非多租户版本
|
|
|
4. **目录结构**:在`allin-packages/`目录下创建UI包,与后端模块保持相同目录,遵循[UI包开发规范](../architecture/ui-package-standards.md#包结构规范)
|
|
|
5. **移植顺序建议**:从简单到复杂,先移植基础CRUD页面
|
|
|
6. **技术栈转换方案**:已制定从Ant Design到@d8d/shared-ui-components的详细转换策略,遵循[UI包开发规范](../architecture/ui-package-standards.md)
|
|
|
-7. **故事拆分完成**:按模块拆分为7个故事(按执行顺序编号),每个故事包含组件测试要求,遵循[UI包开发规范](../architecture/ui-package-standards.md#测试规范)
|
|
|
+7. **故事拆分完成**:按模块拆分为7个移植故事+1个集成故事(共8个故事,按执行顺序编号),每个移植故事包含组件测试要求,遵循[UI包开发规范](../architecture/ui-package-standards.md#测试规范)
|
|
|
|
|
|
**新的故事拆分方案(按执行顺序编号)**:
|
|
|
- **故事1**:移植平台管理UI(platform → @d8d/allin-platform-management-ui) - 最简单,无依赖
|
|
|
@@ -783,6 +841,7 @@ const useChannels = () => {
|
|
|
- **故事5**:移植残疾人管理UI(disability → @d8d/allin-disability-management-ui) - 中等复杂度
|
|
|
- **故事6**:移植残疾人个人管理UI(disability_person → @d8d/allin-disability-person-management-ui) - 高复杂度,依赖disability
|
|
|
- **故事7**:移植订单管理UI(order → @d8d/allin-order-management-ui) - 高复杂度,可能依赖其他模块
|
|
|
+- **故事8**:将Allin系统UI包集成到Web client admin - 对应史诗007故事8,完成前后端集成
|
|
|
- **区域管理**:复用现有`@d8d/area-management-ui`包(无需移植)
|
|
|
|
|
|
**每个故事的关键要求**:
|
|
|
@@ -793,7 +852,11 @@ const useChannels = () => {
|
|
|
5. **集成验证**:必须与对应的后端模块集成验证
|
|
|
|
|
|
**执行顺序**:
|
|
|
-按故事编号顺序执行即可:**故事1 → 故事2 → 故事3 → 故事4 → 故事5 → 故事6 → 故事7**
|
|
|
+按故事编号顺序执行即可:**故事1 → 故事2 → 故事3 → 故事4 → 故事5 → 故事6 → 故事7 → 故事8**
|
|
|
+
|
|
|
+**特别说明**:
|
|
|
+- **故事8**必须在所有UI包移植完成后执行,对应史诗007的**故事8**(将Allin系统模块集成到packages/server)
|
|
|
+- 确保前后端集成时间点对齐,验证完整的Allin系统功能
|
|
|
|
|
|
**依赖关系说明**:
|
|
|
- **故事3**(company-management-ui)依赖platform数据,必须在**故事1**(platform-management-ui)之后
|
|
|
@@ -835,4 +898,15 @@ const useChannels = () => {
|
|
|
- 保持API兼容性,制定数据迁移方案
|
|
|
- 注意组件性能,合理使用memoization
|
|
|
|
|
|
-史诗应在保持用户体验一致性的同时实现将UI模块从Ant Design架构移植到@d8d/shared-ui-components架构的标准化独立UI包,每个模块都要有完整的组件测试验证,并完成与现有文件管理UI包的集成。"
|
|
|
+**故事8(Web client admin集成)关键要求**:
|
|
|
+1. **依赖管理**:在`web/package.json`中添加所有7个Allin系统UI包的workspace依赖
|
|
|
+2. **API客户端初始化**:在`web/src/client/admin/api_init.ts`中添加所有7个Allin系统UI包的API客户端初始化,**API路径必须与server包中的路由配置完全一致**(参考`packages/server/src/index.ts:139-144`)
|
|
|
+ - 使用单数形式路径:`/api/v1/channel`、`/api/v1/company`等(没有`s`后缀)
|
|
|
+ - `disability_person`模块对应`/api/v1/disability`路径
|
|
|
+3. **路由配置**:在`web/src/client/admin/routes.tsx`中添加7个路由路径,对应每个UI包
|
|
|
+4. **菜单集成**:在`web/src/client/admin/menu.tsx`中添加对应的菜单项,配置权限和图标
|
|
|
+5. **API路径对齐**:**必须确保前端API路径与后端路由完全对应**(参考史诗007的server集成)
|
|
|
+6. **集成验证**:验证所有路由正常工作,API客户端初始化成功,与后端模块集成完整
|
|
|
+7. **对应关系**:本故事对应史诗007的**故事8**,确保前后端集成同步完成
|
|
|
+
|
|
|
+史诗应在保持用户体验一致性的同时实现将UI模块从Ant Design架构移植到@d8d/shared-ui-components架构的标准化独立UI包,每个模块都要有完整的组件测试验证,并完成与现有文件管理UI包的集成,最后通过故事8将所有UI包集成到Web client admin中。"
|