Draft
As a 订单管理员 I want 能够成功更新订单状态 so that 准确跟踪订单进度
orderFormSchema 包含 orderPersons.min(1) 验证orderPersons 为可选或移除OrderForm.tsx:219-220 的编辑订单逻辑orderPersonsui-package-standards.md,考虑使用条件渲染两个独立的Form组件allin-packages/order-management-ui/allin-packages/order-module/web/src/client/admin/allin-packages/order-management-ui/src/components/OrderManagement.tsxallin-packages/order-management-ui/src/api/orderClient.tsallin-packages/order-management-ui/src/components/OrderForm.tsx根据代码分析,发现以下具体问题:
不必要的人员验证(核心问题):
OrderForm.tsx:70orderPersons: z.array(personInfoSchema).min(1, '至少选择一名人员')编辑订单逻辑问题:
OrderForm.tsx:219-220data(包含orderPersons)给更新API创建和编辑模式混淆:
表单验证错误处理:
OrderForm.tsx:358form.handleSubmit(onSubmit, (errors) => console.debug('表单验证错误:', errors))<FormMessage />组件显示核心问题: 编辑订单和创建订单使用了相同的表单schema,但业务需求不同。编辑订单不应该要求人员信息。
orderClient.ts 分析,更新路由为 update[':id']['$put']UpdateOrderRequest = InferRequestType<typeof orderClient.update[':id']['$put']>['json']UpdateOrderResponse = InferResponseType<typeof orderClient.update[':id']['$put'], 200>create.$postlist.$getdetail[':id']['$get']delete[':id']['$delete']activate[':orderId']['$post']close[':orderId']['$post']data-testid 属性tests/ 文件夹与源码并列规范: 当组件需要支持创建和编辑两种表单模式时,必须使用条件渲染两个独立的Form组件,避免在单个Form组件上动态切换props。
// ✅ 正确:条件渲染两个独立的Form组件
{isCreateForm ? (
<Form {...createForm}>
{/* 创建表单内容 */}
</Form>
) : (
<Form {...updateForm}>
{/* 编辑表单内容 */}
</Form>
)}
规范: 必须使用RPC推断类型,而不是直接导入schema类型,避免Date/string类型不匹配问题。
// ✅ 正确:使用RPC推断类型(推荐)
export type UpdateOrderRequest = InferRequestType<typeof orderClient.update[':id']['$put']>['json'];
// ❌ 错误:直接导入schema类型(可能导致Date/string不匹配)
import type { UpdateOrderSchema } from '@d8d/allin-order-module/schemas';
规范: 必须为关键交互元素添加 data-testid 属性,避免使用文本查找导致的测试冲突。
需要添加的test ID:
data-testid="order-update-form"data-testid="order-update-submit-button"data-testid="order-status-select"data-testid="order-work-status-select"修复编辑订单schema验证:
orderPersons 信息orderPersons 验证错误无法显示是正常的(没有相关UI元素)修复编辑订单提交逻辑:
orderPersons 字段给更新请求遵循UI包开发规范:
检查测试覆盖:
allin-packages/order-management-ui/src/components/OrderManagement.tsxallin-packages/order-management-ui/src/components/OrderForm.tsxallin-packages/order-management-ui/src/api/orderClient.tsallin-packages/order-management-ui/src/api/types.tsallin-packages/order-management-ui/tests/integration/order.integration.test.tsxallin-packages/order-module/src/routes/order-crud.routes.tstests/integration/ 文件夹必须为相关控件添加 data-testid 属性:
data-testid="order-edit-form"data-testid="order-edit-submit-button"data-testid="order-status-select"data-testid="order-work-status-select"data-testid="order-edit-button-{id}"data-testid="form-error-message"| Date | Version | Description | Author |
|---|---|---|---|
| 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 |
此部分由开发代理在实施过程中填写
待填写
待填写
待填写
待填写
此部分由QA代理在审查完成后填写