Explorar el Código

📝 docs(story): 更新故事010.004 - 澄清表单验证问题

基于代码分析重新评估问题:
1. `orderPersons`验证错误无法显示是正常的(没有相关UI元素)
2. `console.debug`不是bug,是调试信息
3. 核心问题是schema设计:编辑订单不应该要求人员信息
4. 需要检查测试覆盖情况

具体更新:
- 重新分析问题,澄清表单验证错误显示不是bug
- 更新Tasks/Subtasks,专注于schema设计和测试检查
- 添加版本1.2到Change Log

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

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname hace 1 semana
padre
commit
03701c8dc1
Se han modificado 1 ficheros con 30 adiciones y 30 borrados
  1. 30 30
      docs/stories/010.004.story.md

+ 30 - 30
docs/stories/010.004.story.md

@@ -15,13 +15,9 @@ Draft
 4. 编辑订单对话框不包含人员相关验证逻辑(人员在查看详情中编辑)
 
 ## Tasks / Subtasks
-- [ ] 修复表单验证错误显示问题 (AC: 3)
-  - [ ] 修改 `OrderForm.tsx:358` 的 `form.handleSubmit` 错误处理
-  - [ ] 确保验证错误在界面上显示,而不是只打印到console
-  - [ ] 添加适当的错误消息显示组件
-- [ ] 分离创建和编辑订单的表单逻辑 (AC: 4)
+- [ ] 修复编辑订单schema验证问题 (AC: 4)
   - [ ] 分析当前schema:`orderFormSchema` 包含 `orderPersons.min(1)` 验证
-  - [ ] 创建独立的编辑订单schema,使 `orderPersons` 为可选
+  - [ ] 创建独立的编辑订单schema,使 `orderPersons` 为可选或移除
   - [ ] 或者修改现有schema,根据模式动态调整验证规则
 - [ ] 修复编辑订单提交逻辑 (AC: 1)
   - [ ] 修改 `OrderForm.tsx:219-220` 的编辑订单逻辑
@@ -31,14 +27,15 @@ Draft
   - [ ] 根据 `ui-package-standards.md`,考虑使用条件渲染两个独立的Form组件
   - [ ] 或者为创建和编辑模式使用独立的schema和默认值
   - [ ] 确保表单组件模式符合规范要求
-- [ ] 更新测试用例 (AC: 1-4)
-  - [ ] 更新集成测试,验证编辑订单功能
-  - [ ] 添加表单验证错误显示测试
+- [ ] 检查并更新测试用例 (AC: 1-4)
+  - [ ] 检查当前集成测试是否覆盖编辑订单功能
+  - [ ] 如果需要,添加编辑订单表单验证测试
   - [ ] 验证编辑订单不要求人员信息
+  - [ ] 确保其他字段的验证错误显示正常工作
 - [ ] 进行功能测试 (AC: 1-4)
   - [ ] 手动测试编辑订单状态更新
-  - [ ] 验证表单验证错误现在正确显示
-  - [ ] 确认编辑订单不再要求人员信息
+  - [ ] 验证编辑订单不再要求人员信息
+  - [ ] 确认其他字段的验证错误正确显示
 
 ## Dev Notes
 
@@ -62,26 +59,27 @@ Draft
 ### 当前订单状态更新问题分析(基于代码分析)
 根据代码分析,发现以下具体问题:
 
-1. **表单验证错误不显示**:
-   - 文件: `allin-packages/order-management-ui/src/components/OrderForm.tsx:358`
-   - 问题: `form.handleSubmit(onSubmit, (errors) => console.debug('表单验证错误:', errors))`
-   - 验证错误只打印到console,没有在界面上显示给用户
-
-2. **不必要的人员验证**:
+1. **不必要的人员验证(核心问题)**:
    - 文件: `OrderForm.tsx:70`
    - 问题: `orderPersons: z.array(personInfoSchema).min(1, '至少选择一名人员')`
    - 编辑订单时schema仍然要求至少一名人员,但编辑订单不应该包含人员验证
+   - **注意**: 这个验证错误无法在界面上显示,因为表单中没有人员相关的UI元素
 
-3. **编辑订单逻辑问题**:
+2. **编辑订单逻辑问题**:
    - 文件: `OrderForm.tsx:219-220`
    - 问题: 编辑订单时传递完整的`data`(包含`orderPersons`)给更新API
    - 应该只传递订单基本信息,不包含人员数据
 
-4. **创建和编辑模式混淆**:
+3. **创建和编辑模式混淆**:
    - 创建订单需要人员信息(第223-247行)
    - 编辑订单不应该要求人员信息,但使用了相同的schema
 
-**核心问题**: 编辑订单和创建订单使用了相同的表单schema和验证逻辑,但业务需求不同。
+4. **表单验证错误处理**:
+   - 文件: `OrderForm.tsx:358`
+   - 当前: `form.handleSubmit(onSubmit, (errors) => console.debug('表单验证错误:', errors))`
+   - **注意**: 这个console.debug不是bug,是调试信息。其他字段的错误通过`<FormMessage />`组件显示
+
+**核心问题**: 编辑订单和创建订单使用了相同的表单schema,但业务需求不同。编辑订单不应该要求人员信息。
 
 ### 订单模块API信息 [Source: 代码分析]
 - **订单路由结构**: 根据 `orderClient.ts` 分析,更新路由为 `update[':id']['$put']`
@@ -146,21 +144,22 @@ import type { UpdateOrderSchema } from '@d8d/allin-order-module/schemas';
 - `data-testid="order-work-status-select"`
 
 ### 需要修复的具体问题(基于代码分析)
-1. **修复表单验证错误显示**:
-   - 修改 `OrderForm.tsx:358` 的 `form.handleSubmit` 错误处理
-   - 确保验证错误在界面上显示给用户,而不是只打印到console
+1. **修复编辑订单schema验证**:
+   - 编辑订单不应该要求 `orderPersons` 信息
+   - 需要分离创建和编辑订单的schema验证规则
+   - `orderPersons` 验证错误无法显示是正常的(没有相关UI元素)
 
-2. **分离创建和编辑表单schema**:
-   - 创建独立的编辑订单schema,不包含 `orderPersons` 验证
-   - 或者修改现有schema,使 `orderPersons` 在编辑模式下为可选
-
-3. **修复编辑订单提交逻辑**:
+2. **修复编辑订单提交逻辑**:
    - 编辑订单时只传递订单基本信息给更新API
    - 不传递 `orderPersons` 字段给更新请求
 
-4. **遵循UI包开发规范**:
+3. **遵循UI包开发规范**:
    - 根据规范,应该使用条件渲染两个独立的Form组件
-   - 或者至少使用独立的schema和默认值
+   - 或者为创建和编辑模式使用独立的schema
+
+4. **检查测试覆盖**:
+   - 检查当前测试是否覆盖编辑订单功能
+   - 确保其他字段的验证错误显示测试正常工作
 
 ### 文件位置
 - **主要修改文件**: `allin-packages/order-management-ui/src/components/OrderManagement.tsx`
@@ -197,6 +196,7 @@ import type { UpdateOrderSchema } from '@d8d/allin-order-module/schemas';
 |------|---------|-------------|--------|
 | 2025-12-12 | 1.0 | 故事创建,基于史诗010-04需求 | Scrum Master Bob |
 | 2025-12-12 | 1.1 | 简化故事,专注于修复表单验证错误显示和移除不必要的人员验证 | Scrum Master Bob |
+| 2025-12-12 | 1.2 | 基于代码分析更新:澄清表单验证错误显示不是bug,核心是schema设计问题 | Scrum Master Bob |
 
 ## Dev Agent Record
 *此部分由开发代理在实施过程中填写*