Files
udmin/.trae/documents/Flow 架构与执行图产出计划.md
ayou 12830b7cf6 fix(router): 修复登录重定向兼容hash路由和普通路由的问题
添加对hash路由的识别处理,优先尝试使用hash路由跳转,失败时回退到普通pathname跳转
docs: 添加Flow架构与执行流程文档
2025-12-03 21:21:24 +08:00

61 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 输出物
- 一份详细的 Flow 架构与执行流程文档,包含可视化图示与文字说明
- 以 Mermaid 图(可直接在 IDE/Markdown 预览)呈现;同时提供 ASCII 简版便于纯文本查看
## 文档与图的组织
- 文件:`docs/flow_architecture.md`
- 结构:分章节“模块架构”“请求/运行编排”“引擎执行图”“数据模型”“事件与日志”“DSL 与 Design 转换”“执行器生态”
- 图格式Mermaidflowchart、sequence、class、er每个图下配文字说明与代码引用file:line
## 图示清单与内容要点
1. 模块架构图Graph LR
- 节点:`flow/{dsl,domain,context,engine,task,executors,mappers,log_handler}``services/{flow_service,flow_run_log_service}``routes/{flows,flow_run_logs}``middlewares/{sse,ws,jwt,http_client}``db,redis,models/{flow,flow_run_log}`
- 边:解析→构建→驱动→事件→日志入库;路由→服务→引擎;执行器←上下文补充
2. 请求/运行编排时序图Sequence
- 参与者:客户端、`routes.flows``flow_service``dsl/mappers``FlowEngine``log_handler``middlewares.sse/ws``models`
- 关键步骤:加载流程→解析 YAML/design_json→构造 `ChainDef/ctx``drive(...)`→推送事件→写入运行日志→返回结果
3. 引擎执行图Flowchart
- 图块选起点→合流屏障检查→任务执行Sync/AsyncFireAndForget/Queued/Bounded→分支选择条件 JSON/Rhai→组内追踪与等待BranchExit/FlowEnd→结束与事件推送
- 特别展示:`group` 信号量(队列/限并发与写回策略variable/http/db
4. DSL/Design 转换图Flowchart
- `DesignSyntax` 校验→条件端口兼容→推断 `kind/task/name`→组装 `groups/members/await_policy`→生成 `ChainDef`
- 同时展示 `mappers.ctx_from_design_json` 将节点配置落到 `ctx.nodes.<id>.<executor>`
5. 数据模型图ER/Class
- 表:`flows(id,name,yaml,design_json,code,remark,created_at,updated_at)``flow_run_logs(id,flow_id,flow_code,input,output,ok,logs,user_id,username,started_at,duration_ms,created_at)`
- 关系:`flow_run_logs.flow_id → flows.id`
6. 事件与日志通道图Graph LR
- SSE/WS`engine.push_and_emit → middlewares.sse/ws → client`
- 入库:`FlowLogHandler(Database|Sse)``flow_run_log_service.create`
7. 执行器生态图Graph LR
- 节点:`http/db/variable/script_rhai/script_js/script_python/condition`
- 输入来源:`ctx.nodes.<id>.*` 与顶层 `ctx.*`;输出写回策略与幂等注意点
## 信息来源与代码引用
- DSL/Design`backend/src/flow/dsl.rs:60-93,138-170,172-203,246-303`
- 领域模型:`backend/src/flow/domain.rs:20-28,31-36,39-47,60-68`
- 上下文与事件:`backend/src/flow/context.rs:29-45`
- 引擎:`backend/src/flow/engine.rs:117-209,213-577`
- 服务编排:`backend/src/services/flow_service.rs:285-305,342-349,351-365,366-399`
- 路由:`backend/src/routes/flows.rs:26-35,101-133`
- 日志服务:`backend/src/services/flow_run_log_service.rs:46-63,74-131`
## 实施步骤
1. 生成 `docs/flow_architecture.md` 骨架,按章节填入概要说明
2. 为每个章节插入 Mermaid 图代码块,并补充 2-4 条关键解释
3. 在图下添加代码引用(`file_path:line_number`
4. 预览并调整布局(节点命名统一、边方向一致、避免交叉线)
5. 输出 ASCII 简版(备选)供纯文本环境查看
## 验证
- 在 IDE/Markdown 预览验证所有 Mermaid 图可渲染
- 随机抽取 3 处代码引用跳转验证准确性
## 后续维护
- 当新增执行器或模式,更新“执行器生态图”和“引擎执行图”
- 当模型字段变更,更新 ER 图并在“请求/运行编排时序图”同步最新流程