Files
sankey/APP_FLOW.md
2026-02-13 22:26:53 +08:00

125 lines
3.3 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.

# APP_FLOW.md
## 1. Scope
本文件定义当前版本所有用户可见流程,覆盖 Web 与小程序两端。
关联文档:
- PRD.md
- FRONTEND_GUIDELINES.md
- BACKEND_STRUCTURE.md
## 2. 页面与路由清单
- `Web /`:主工作区(顶部工具栏 + 数据选择器 + 信息日志 + 桑基图预览)
- `Miniapp /pages/index/index`:小程序可用页(上传、映射、预览、导出)
## 3. Web 流程:首次加载
触发条件:
- 用户打开 `/`
步骤:
1. 渲染页面结构并初始化 ECharts
2. 尝试读取 `/data/example0.xlsx`
3. 解析文件并应用默认列映射
4. 构建 Sankey 数据并渲染预览
决策点:
- 若样例文件加载失败,显示错误信息,但页面仍可继续上传文件
成功结果:
- 用户无需上传即可看到可操作示例图
失败结果:
- 页面给出明确错误提示,保持可恢复
## 4. Web 流程:文件上传(点击/拖拽)
触发条件:
- 点击上传并选择文件,或将文件拖入上传区
步骤:
1. 校验后缀:`csv/xls/xlsx`
2. 解析为 `RawTable`
3. 应用默认映射或恢复持久化映射
4. 重建聚合并刷新图表
5. 更新上传提示文案(文件名 + 行数)
决策点:
- 不支持的后缀直接报错
- 解析异常显示错误并保留上一次有效状态
## 5. Web 流程:列映射与预览配置
触发条件:
- 用户修改数据列、描述列、方向、gap、padding、主题、汇聚对齐等配置
步骤:
1. 更新映射或显示配置
2. 触发重建逻辑
3. 刷新图表与信息日志
4. 持久化配置到 localStorage
决策点:
- `source data` 未选:阻断构建并提示
- `target description` 为空:阻断构建并提示
- 非法数值/空描述:跳过行并写入告警
## 6. Web 流程:导出
触发条件:
- 点击导出 `SVG``PNG`
步骤:
1. 检查图表实例是否可用
2. 组装时间戳文件名
3. SVG临时创建 SVG 渲染器导出
4. PNG`pixelRatio=2` 导出
5. 触发浏览器下载
## 7. 小程序流程:文件上传与默认映射
触发条件:
- 用户点击“文件上传”
步骤:
1. 选择 `csv/xls/xlsx` 文件
2. 按后缀分流解析:
- `csv`:文本解析
- `xls/xlsx`SheetJS 解析首个工作表
3. 应用默认映射规则
4. 重建 Sankey 聚合并更新日志
5. 触发 canvas 重绘
决策点:
- 若 xlsx 模块不可用,提示先在开发者工具执行“构建 npm”
- 解析失败显示错误,不会导致页面失效
## 8. 小程序流程:列映射与预览
触发条件:
- 用户点击任意列项调整 source/target 映射
步骤:
1. 更新映射状态
2. 调用聚合构建
3. 更新统计(节点数、连线数、跳过行)
4. 更新“信息日志”
5. 重绘 canvas 预览
## 9. 小程序流程:导出
触发条件:
- 点击导出 PNG 或 SVG
步骤:
1. PNG
- 将 canvas 导出临时图片
- 保存到系统相册
2. SVG
- 复用布局算法生成 SVG 字符串
- 写入用户目录 `.svg` 文件
- 优先尝试打开文档;若失败则复制文件路径
决策点:
- 无可用数据时阻断导出并提示
- 相册权限不足时提示用户授权
## 10. Flow Completion Checklist
流程视为完成需满足:
1. 成功路径可端到端执行
2. 失败路径有明确且可定位的错误信息
3. 错误后页面仍可恢复继续操作