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

111 lines
4.5 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.

# PRD.md
## 1. 文档目的
本文件定义「星程桑基图」的产品需求合同v0.2),用于约束范围、功能验收标准与成功标准。
关联文档:
- APP_FLOW.md
- TECH_STACK.md
- FRONTEND_GUIDELINES.md
- BACKEND_STRUCTURE.md
- IMPLEMENTATION_PLAN.md
## 2. 产品概述
星程桑基图是一个本地优先的数据可视化工具,用户上传 `csv/xls/xlsx` 后,通过列映射规则生成桑基图,支持实时预览、主题切换与 `PNG/SVG` 导出。
## 3. 目标用户
- 数据分析师:快速从表格生成流向关系图。
- 业务运营人员:无需编程即可配置 source/target 映射。
- 演示与汇报人员:导出图用于文档与汇报。
## 4. 核心问题
- 表格到桑基图映射过程复杂,人工制作耗时。
- Excel 存在“合并单元格语义”(下方空值继承上方值),常规可视化工具处理不稳定。
- 需要稳定导出图像用于跨平台传播。
## 5. 产品目标Goals
- G1用户可在 3 分钟内完成一次从上传到导出的全流程。
- G2支持目标描述列的“向下补全”语义并正确聚合。
- G3在映射配置变更后即时刷新预览避免重复上传。
- G4导出结果可直接用于 PPT/文档PNG、SVG
## 6. 非目标Non-Goals
- 不做账号体系、登录、权限。
- 不做云端存储、多人协作、历史版本。
- 不做后端 API 与数据库(见 BACKEND_STRUCTURE.md
- 不做三级/多级桑基图编辑器(当前仅由列拼接形成单级 source->target 关系)。
- 不做账号体系下的小程序云同步与跨端协作。
- 不追求 Web 与小程序像素级一致,只要求关键流程一致可用。
## 7. 功能范围与验收标准
### F1 文件上传与默认样例
需求:支持点击与拖拽上传;首次进入自动加载样例文件。
验收标准:
- 支持扩展名:`.csv/.xls/.xlsx`
- 首次加载时,若用户未上传文件,自动读取 `data/example0.xlsx`
- 上传成功后,显示文件名与行数。
- 上传失败时展示明确错误信息。
### F2 列映射配置
需求:支持 source 数据列单选、source 描述列多选、target 描述列多选。
验收标准:
- `source data` 为单选且必选。
- `source description` 可为空;为空时回退为 source data 单元格文本。
- `target description` 为多选且至少选择 1 列。
- 映射变更后无需点击“生成”,图表实时刷新。
### F3 聚合规则
需求:按映射配置构建 `nodes/links` 并做容错。
验收标准:
- source 数值支持千分位解析,如 `12,000`
- 非法 source 数值(空或非数字)跳过并记录告警。
- target 描述列支持“向下补全”(空值继承上一次非空值)。
- source/target 描述为空行跳过并记录告警。
- 相同 `sourceName@@targetName` 累加值。
### F4 预览与交互
需求:提供可视化预览并支持关键配置。
验收标准:
- 支持方向切换:`source->target` / `target->source`(仅交换链接方向)。
- 支持节点间距gap与图内边距padding调整。
- 支持主题选择并应用到节点颜色。
- 支持标签位置、汇聚对齐等关键可视化配置。
### F5 导出
需求:支持导出 `SVG``PNG`
验收标准:
- 文件名格式:`sankey_YYYYMMDD_HHmmss.svg|png`
- PNG 使用 `pixelRatio=2` 导出。
- 若 DOM 可获取 `<svg>`,优先序列化导出 SVG否则使用图表实例导出。
### F6 小程序可用版
需求:提供轻量可用的小程序版本,覆盖上传、映射、预览、导出主流程。
验收标准:
- 支持上传 `csv/xls/xlsx` 并完成解析。
- 支持默认映射、列选择、聚合构建与日志展示。
- 支持原生 canvas 预览。
- 支持导出 PNG保存相册与 SVG生成文件并可访问路径
## 8. 成功标准Success Metrics
- S1核心单元测试稳定通过`npm run test`)。
- S2类型检查与 lint 稳定通过(`npm run type-check && npm run lint`)。
- S3核心样例 `data/example0.xlsx` 可在默认加载后正常出图。
- S4导出文件在本地可打开且内容与当前视图一致。
- S5小程序端可独立完成“上传 -> 映射 -> 预览 -> 导出”闭环。
## 9. 约束与依赖
- 技术实现必须遵循 TECH_STACK.md 固定版本。
- UI 实现必须遵循 FRONTEND_GUIDELINES.md 设计规范。
- 不得在未确认情况下引入新生产依赖。
## 10. 版本状态
- 当前合同版本:`v0.2`
- 最后更新:`2026-02-13`