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

3.3 KiB
Raw Blame History

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 流程:导出

触发条件:

  • 点击导出 SVGPNG

步骤:

  1. 检查图表实例是否可用
  2. 组装时间戳文件名
  3. SVG临时创建 SVG 渲染器导出
  4. PNGpixelRatio=2 导出
  5. 触发浏览器下载

7. 小程序流程:文件上传与默认映射

触发条件:

  • 用户点击“文件上传”

步骤:

  1. 选择 csv/xls/xlsx 文件
  2. 按后缀分流解析:
    • csv:文本解析
    • xls/xlsxSheetJS 解析首个工作表
  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. 错误后页面仍可恢复继续操作