Bläddra i källkod

📝 docs(epic-008): 更新Allin系统UI模块移植史诗文档

更新史诗008文档,详细规划了将Allin系统UI模块从Ant Design架构移植到shadcn/ui架构的方案,包括:
1. 模块依赖关系分析和技术栈差异分析
2. 命名规范和目录结构设计
3. 技术栈转换详细方案(组件、API、状态管理、表单)
4. 故事拆分和移植顺序建议
5. 文件上传集成方案
6. 组件测试要求和验证清单

🤖 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 1 vecka sedan
förälder
incheckning
3f07c96837
1 ändrade filer med 32 tillägg och 29 borttagningar
  1. 32 29
      docs/prd/epic-008-allin-ui-modules-transplant.md

+ 32 - 29
docs/prd/epic-008-allin-ui-modules-transplant.md

@@ -15,23 +15,24 @@
   4. disability_person管理页面 - 残疾人个人管理界面
   5. order管理页面 - 订单管理界面
   6. platform管理页面 - 平台管理界面
-  7. region管理页面 - 区域管理界面
-  8. salary管理页面 - 薪资管理界面
+  7. salary管理页面 - 薪资管理界面
+  **注**:region管理页面已有`@d8d/area-management-ui`包提供,直接复用即可,无需移植
 
 - **技术栈**:Next.js、React 19、Ant Design 5、Jotai、Tailwind CSS、自定义fetch API
 - **集成点**:通过自定义API客户端与后端API集成,使用Jotai进行状态管理
 
 ### 增强详情
 
-- **新增/变更内容**:将8个现有UI模块从allin_system-master/client移植到allin-packages目录下的独立UI包
+- **新增/变更内容**:将7个现有UI模块从allin_system-master/client移植到allin-packages目录下的独立UI包
 - **集成方式**:每个UI模块将重构为独立的npm包,遵循@d8d/allin-命名规范,通过workspace依赖管理
 - **技术栈转换**:从Ant Design + Jotai转换为shadcn/ui + React Query + Hono RPC
 - **成功标准**:
-  1. 8个UI模块成功移植为独立UI包
+  1. 7个UI模块成功移植为独立UI包
   2. 保持原有功能完整性
   3. 遵循现有UI包结构模式
   4. 通过组件测试和集成测试验证
   5. 与史诗007移植的后端模块无缝集成
+  6. 区域管理功能复用现有`@d8d/area-management-ui`包
 
 ## 模块分析结果
 
@@ -73,6 +74,7 @@
    - 依赖:Ant Design组件、自定义API客户端、树形结构
    - 功能:区域树形管理、CRUD操作
    - 复杂度:中等(树形结构)
+   - **重要说明**:已有`@d8d/area-management-ui`包提供相同功能,直接复用即可
 
 8. **salary管理页面** (`app/admin/dashboard/salary/page.tsx`)
    - 依赖:Ant Design组件、自定义API客户端、复杂表单验证
@@ -91,7 +93,7 @@
 | disability_person | `@d8d/allin-disability-person-management-ui` | `disability-person-management-ui` | `@d8d/allin-disability-module` | 残疾人个人管理UI |
 | order | `@d8d/allin-order-management-ui` | `order-management-ui` | `@d8d/allin-order-module` | 订单管理UI |
 | platform | `@d8d/allin-platform-management-ui` | `platform-management-ui` | `@d8d/allin-platform-module` | 平台管理UI |
-| region | `@d8d/allin-region-management-ui` | `region-management-ui` | `@d8d/geo-areas` | 区域管理UI |
+| region | **复用现有`@d8d/area-management-ui`** | - | `@d8d/geo-areas` | 区域管理UI(已有现成包) |
 | salary | `@d8d/allin-salary-management-ui` | `salary-management-ui` | `@d8d/allin-salary-module` | 薪资管理UI |
 
 **命名原则**:
@@ -114,7 +116,7 @@
 │   ├── disability-person-management-ui/ # 残疾人个人管理UI
 │   ├── order-management-ui/           # 订单管理UI
 │   ├── platform-management-ui/        # 平台管理UI
-│   ├── region-management-ui/          # 区域管理UI
+│   # 区域管理UI已有`@d8d/area-management-ui`,无需创建新包
 │   ├── salary-management-ui/          # 薪资管理UI
 │   ├── channel-module/                # 后端模块(已存在)
 │   ├── company-module/                # 后端模块(已存在)
@@ -394,7 +396,7 @@ const useChannels = () => {
 1. **基础UI包**:先移植简单的CRUD页面(channel、platform)
 2. **中等复杂度**:移植有依赖关系的页面(company、salary)
 3. **高复杂度**:最后移植复杂页面(disability_person、order)
-4. **特殊处理**:region页面需要与`@d8d/geo-areas`包集成
+4. **特殊处理**:region页面已有`@d8d/area-management-ui`包,直接复用
 
 **具体顺序**:
 1. `allin-platform-management-ui`(最简单)
@@ -404,7 +406,7 @@ const useChannels = () => {
 5. `allin-disability-management-ui`(中等复杂度)
 6. `allin-disability-person-management-ui`(高复杂度)
 7. `allin-order-management-ui`(高复杂度)
-8. `allin-region-management-ui`(特殊集成)
+**注**:region管理UI已有`@d8d/area-management-ui`包,无需移植
 
 #### 兼容性保证
 - **保持**:业务逻辑、数据模型、用户交互流程
@@ -505,31 +507,32 @@ const useChannels = () => {
 7. 编写组件测试:验证基础功能
 8. 通过类型检查和基本测试验证
 
-### 故事7:移植区域管理UI(region → @d8d/allin-region-management-ui)
-**目标**:移植区域管理页面,与`@d8d/geo-areas`包集成
+### **区域管理UI说明**
+**目标**:复用现有`@d8d/area-management-ui`包,无需重新移植
 
-**验收标准**:
-1. 创建`allin-packages/region-management-ui`目录结构
-2. 完成组件转换:树形区域管理组件
-3. **区域包集成**:与`@d8d/geo-areas`包深度集成
-4. 完成API客户端转换:树形数据API
-5. 完成状态管理转换:树形结构状态
-6. 完成表单转换:树形节点表单
-7. 配置package.json:依赖`@d8d/geo-areas`
-8. 编写组件测试:验证树形操作
-9. 通过类型检查和基本测试验证
+**现状分析**:
+1. **已有包**:`@d8d/area-management-ui`已提供完整的区域管理功能
+2. **技术栈**:与目标技术栈一致(shadcn/ui + React Query + Hono RPC)
+3. **功能匹配**:提供树形区域管理、CRUD操作、搜索等功能
+4. **集成点**:与`@d8d/geo-areas`后端模块已集成
+
+**实施策略**:
+1. **直接复用**:在Allin系统中直接使用`@d8d/area-management-ui`包
+2. **依赖配置**:在需要区域选择功能的UI包中添加对`@d8d/area-management-ui`的依赖
+3. **组件集成**:使用`AreaSelector`、`AreaTree`等现有组件
+4. **无需移植**:节省开发工作量,保持技术栈一致性
 
-### 故事8:移植薪资管理UI(salary → @d8d/allin-salary-management-ui)
+### 故事7:移植薪资管理UI(salary → @d8d/allin-salary-management-ui)
 **目标**:移植薪资管理页面,包含复杂表单验证
 
 **验收标准**:
 1. 创建`allin-packages/salary-management-ui`目录结构
 2. 完成组件转换:薪资表格、复杂表单组件
-3. **区域包集成**:区域选择器组件
+3. **区域包集成**:集成`@d8d/area-management-ui`的区域选择器组件
 4. 完成API客户端转换:薪资计算API
 5. 完成状态管理转换:数值计算状态
 6. 完成表单转换:复杂数值验证
-7. 配置package.json:依赖`@d8d/geo-areas`
+7. 配置package.json:依赖`@d8d/area-management-ui`
 8. 编写组件测试:验证数值计算和验证
 9. 通过类型检查和基本测试验证
 
@@ -627,15 +630,15 @@ const useChannels = () => {
 
 ## 完成定义
 
-- [ ] 所有8个故事完成,验收标准满足
+- [ ] 所有7个故事完成,验收标准满足
   - [ ] 故事1:渠道管理UI
   - [ ] 故事2:公司管理UI
   - [ ] 故事3:残疾人管理UI
   - [ ] 故事4:残疾人个人管理UI
   - [ ] 故事5:订单管理UI
   - [ ] 故事6:平台管理UI
-  - [ ] 故事7:区域管理UI
-  - [ ] 故事8:薪资管理UI
+  - [ ] 故事7:薪资管理UI
+- [ ] 区域管理功能复用`@d8d/area-management-ui`包
 - [ ] 现有功能通过测试验证
 - [ ] 集成点正常工作
 - [ ] 文档更新适当
@@ -644,7 +647,7 @@ const useChannels = () => {
 ## 验证清单
 
 ### 范围验证
-- [ ] 史诗可在8个故事内完成
+- [ ] 史诗可在7个故事内完成
 - [ ] 不需要架构文档变更
 - [ ] 增强遵循现有模式
 - [ ] 集成复杂度可管理
@@ -682,8 +685,8 @@ const useChannels = () => {
 - **故事4**:移植残疾人个人管理UI(disability_person → @d8d/allin-disability-person-management-ui)
 - **故事5**:移植订单管理UI(order → @d8d/allin-order-management-ui)
 - **故事6**:移植平台管理UI(platform → @d8d/allin-platform-management-ui)
-- **故事7**:移植区域管理UI(region → @d8d/allin-region-management-ui)
-- **故事8**:移植薪资管理UI(salary → @d8d/allin-salary-management-ui
+- **故事7**:移植薪资管理UI(salary → @d8d/allin-salary-management-ui)
+- **区域管理**:复用现有`@d8d/area-management-ui`包(无需移植
 
 **每个故事的关键要求**:
 1. **技术栈转换**:必须完成组件、API客户端、状态管理、表单的完整转换