name: 数据订单流程优化 overview: 根据新的业务流程需求,对数据订单相关接口进行优化,新增审批状态和onboard状态,实现完整的订单分析-审批-生成-完成流程。 todos:
stateDiagram-v2
[*] --> pending: 新增订单
pending --> analyzing: 发起分析
analyzing --> pending_approval: 分析通过
analyzing --> manual_review: 分析有问题
manual_review --> analyzing: 修改后重新分析
pending_approval --> processing: 审批通过
pending_approval --> rejected: 审批驳回
processing --> onboard: 数据流程完成回调
onboard --> completed: 标记完成
rejected --> [*]
completed --> [*]
| 状态值 | 状态名称 | 说明 |
|--------|----------|------|
| pending | 待处理 | 新增订单初始状态 |
| analyzing | 分析中 | 正在进行 LLM 分析 |
| pending_approval | 待审批 | 分析通过,等待人工审批 |
| manual_review | 待人工处理 | 分析有问题,需人工修改 |
| processing | 加工中 | 审批通过,自动生成资源中 |
| onboard | 数据产品就绪 | 数据流程完成,产品可用 |
| completed | 已完成 | 订单最终完成 |
| rejected | 已驳回 | 审批被驳回 |
修改内容:
STATUS_PENDING_APPROVAL = "pending_approval" 和 STATUS_ONBOARD = "onboard"更新 STATUS_LABELS 映射
# 新增状态常量
STATUS_PENDING_APPROVAL = "pending_approval" # 待审批
STATUS_ONBOARD = "onboard" # 数据产品就绪
修改内容:
(A) 修改 analyze_order 方法
pending_approval (而非 processing)分析有问题时保持 manual_review
# 修改第 1530-1535 行的逻辑
if can_connect:
order.update_status(DataOrder.STATUS_PENDING_APPROVAL) # 改为待审批
else:
order.update_status(DataOrder.STATUS_MANUAL_REVIEW)
(B) 修改 approve_order 方法
pending_approval 状态的审批(C) 新增 update_order 方法
pending 或保持 manual_review(D) 新增 generate_order_resources 方法
(E) 新增 set_order_onboard 方法
onboard(F) 新增 mark_order_completed 方法
onboard 状态标记为最终完成修改内容:
(A) 修改 approve_order 路由
pending_approval 状态(B) 新增 PUT /orders/<order_id> 更新订单接口
@bp.route("/orders/<int:order_id>", methods=["PUT"])
def update_order(order_id: int):
"""更新数据订单(支持修改描述和提取结果)"""
请求体:
{
"title": "新标题(可选)",
"description": "新描述(可选)",
"extracted_domains": ["域1", "域2"],
"extracted_fields": ["字段1", "字段2"],
"extraction_purpose": "用途(可选)"
}
(C) 新增 POST /orders/<order_id>/onboard 回调接口
@bp.route("/orders/<int:order_id>/onboard", methods=["POST"])
def onboard_order(order_id: int):
"""数据工厂回调:设置订单为数据产品就绪状态"""
请求体:
{
"product_id": 123,
"dataflow_id": 456,
"processed_by": "n8n-workflow"
}
(D) 修改 complete_order 接口逻辑
onboard 状态标记完成数据库表 data_orders 的 status 字段已经是 VARCHAR(50),可以直接存储新的状态值,无需 DDL 变更。但建议更新表注释:
-- 更新状态字段注释
COMMENT ON COLUMN public.data_orders.status IS
'订单状态:pending/analyzing/pending_approval/manual_review/processing/onboard/completed/rejected';
| 操作 | 方法 | 路径 | 变更类型 |
|------|------|------|----------|
| 更新订单 | PUT | /orders/{id} | 新增 |
| 设置onboard | POST | /orders/{id}/onboard | 新增 |
| 审批通过 | POST | /orders/{id}/approve | 修改逻辑 |
| 标记完成 | POST | /orders/{id}/complete | 修改逻辑 |
| 订单分析 | POST | /orders/{id}/analyze | 修改逻辑 |
审批通过后,generate_order_resources 方法将:
graph_analysis.matched_domains 确定输入的 BusinessDomain 节点result_dataflow_id