Procházet zdrojové kódy

docs(story-008.007): 优化订单管理UI故事任务,直接集成现有文件选择器组件

- 更新任务3:从创建重复组件改为直接集成现有FileSelector组件
- 添加第7条经验:直接集成现有组件,避免重复工作
- 更新技术栈转换要求:明确直接集成现有组件
- 参考disability-person-management-ui实现模式,遵循DRY原则

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 před 1 měsícem
rodič
revize
223061bab7

+ 14 - 15
docs/stories/008.007.transplant-order-management-ui.story.md

@@ -82,20 +82,17 @@ Draft
   - [ ] 分析源系统资产文件上传逻辑:`allin_system-master/client/app/admin/dashboard/order/OrderAssetModal.tsx`
     - **源文件**:`allin_system-master/client/app/admin/dashboard/order/OrderAssetModal.tsx`
     - **查看要点**:资产文件上传组件、文件处理逻辑、预览功能
-  - [ ] 查看文件管理UI包组件:`packages/file-management-ui/src/components/FileSelector.tsx`
-    - **组件文件**:`packages/file-management-ui/src/components/FileSelector.tsx`
-    - **查看要点**:组件API、事件处理、文件类型限制
-  - [ ] 创建资产文件上传组件:`src/components/AssetUploadField.tsx`
-    - **目标文件**:`allin-packages/order-management-ui/src/components/AssetUploadField.tsx`
-    - **功能**:集成`FileSelector`组件,支持资产文件上传、预览、删除
-    - **参考文件**:`packages/file-management-ui/src/components/FileSelector.tsx`
-  - [ ] 集成资产文件上传到表单:在订单人员资产表单中添加文件上传字段
+  - [ ] **直接集成现有文件管理UI包组件**:参考`disability-person-management-ui`的实现模式
+    - **导入FileSelector组件**:`import { FileSelector } from '@d8d/file-management-ui/components';`
+    - **查看现有实现参考**:`allin-packages/disability-person-management-ui/src/components/DisabilityPersonManagement.tsx:537-547`
+    - **查看要点**:组件API、事件处理、文件类型限制、表单集成
+  - [ ] **集成FileSelector到订单人员资产表单**:在资产关联组件中直接使用FileSelector
     - **字段**:`fileId`(文件ID字段)
-    - **表单集成**:使用`AssetUploadField`组件,表单接收`fileId`参数
-  - [ ] 创建资产文件预览组件:`src/components/AssetPreview.tsx`
-    - **目标文件**:`allin-packages/order-management-ui/src/components/AssetPreview.tsx`
-    - **功能**:使用`FilePreview`组件显示资产文
-    - **参考文件**:`packages/file-management-ui/src/components/FilePreview.tsx`
+    - **表单集成**:直接使用`FileSelector`组件,通过`onChange`回调设置`fileId`值
+    - **文件类型限制**:根据资产类型设置`accept`和`filterType`属性
+  - [ ] **实现资产文件预览**:使用FileSelector的内置预览功能或创建简单预览组件
+    - **方案**:FileSelector组件已包含预览功能,无需额外创建预览组
+    - **如果需要自定义预览**:创建简单的预览组件`src/components/AssetPreview.tsx`,使用文件ID显示资产信息
 
 - [ ] 任务4:实现区域选择器集成 (AC: 4)
   - [ ] 查看区域管理UI包组件:`packages/area-management-ui/src/components/AreaSelect.tsx`
@@ -198,6 +195,8 @@ Draft
 
 6. **测试选择器优化**:必须为关键交互元素添加`data-testid`属性,避免使用文本查找导致的测试冲突。使用kebab-case格式:`{action}-{element}-{purpose}`。
 
+7. **直接集成现有组件**:对于文件上传、区域选择等通用功能,应该直接集成现有的UI包组件(如`@d8d/file-management-ui`的`FileSelector`),而不是重复创建功能相同的组件。参考`disability-person-management-ui`的实现模式。
+
 ### 技术架构信息 [Source: architecture/ui-package-standards.md]
 
 #### 包结构规范
@@ -279,8 +278,8 @@ Draft
 - **状态管理**:Jotai → React Query + React状态
 - **表单处理**:Ant Design Form → React Hook Form + Zod
 - **API客户端**:自定义fetch API → Hono RPC (rpcClient + ClientManager模式)
-- **文件上传**:直接文件上传 → 集成`@d8d/file-management-ui`文件选择器组件
-- **区域选择**:自定义区域选择 → 集成`@d8d/area-management-ui`区域选择器组件
+- **文件上传**:直接文件上传 → **直接集成现有`@d8d/file-management-ui`文件选择器组件**(参考`disability-person-management-ui`实现,无需重复创建组件)
+- **区域选择**:自定义区域选择 → **直接集成现有`@d8d/area-management-ui`区域选择器组件**
 - **枚举常量**:硬编码枚举 → 使用`@d8d/allin-enums`包中的枚举
 
 ### Testing