76 lines
6.6 KiB
Plaintext
76 lines
6.6 KiB
Plaintext
[更新时间] 2026-02-13(第四次更新)
|
||
[项目] 星程桑基图
|
||
|
||
一、已完成(Done)
|
||
1. Web 单页主流程已打通:上传 -> 列映射 -> 预览 -> 导出。
|
||
2. 已支持文件格式:csv / xls / xlsx。
|
||
3. 已实现核心聚合规则:
|
||
- source 数值列解析(含千分位)
|
||
- source 描述列拼接(可为空)
|
||
- target 描述列向下补全(合并单元格语义)
|
||
- source-target 键值聚合
|
||
4. 已实现预览配置:方向切换、gap、padding、主题切换。
|
||
5. 已实现导出:PNG/SVG(带时间戳命名)。
|
||
6. 已实现默认样例加载:页面首次进入自动读取 `data/example0.xlsx`。
|
||
7. 已有核心单测(parser + sankey 聚合 + xlsx 读取)。
|
||
8. 小程序端已从视觉骨架升级为可用流程(上传 -> 映射 -> 预览 -> 导出)。
|
||
9. 已实现本地持久化:用户上传文件、映射配置与预览选项会写入 localStorage,刷新后自动恢复。
|
||
10. 已新增“汇聚对齐”配置(Between/Middle/Top/Bottom),可控制 target 侧对齐,且 gap 作为源侧基准。
|
||
11. 已优化“无配置初始化映射”:优先按表头别名自动匹配,缺失时按第二行首个数字列兜底。
|
||
12. 已按 Figma 更新主界面布局与文案:
|
||
- 左侧将“源数据/目标数据”合并为单个“数据选择器”区块,并使用 `select.svg` 标题图。
|
||
- 新增独立“信息日志”面板(`information.svg`),集中显示解析信息、告警、错误与当前映射日志。
|
||
- 预览标题改为 `sankeyview.svg`,并移除预览区域底部告警展示。
|
||
13. 已完成总高度适配窗口:页面改为 `header + content + footer` 的 100vh 自适应布局,内容区按剩余空间伸缩并在必要时内部滚动。
|
||
14. 已修复桑基图底部轻微溢出:图表渲染底部新增固定 8px 安全内边距,并同步目标侧布局高度计算。
|
||
15. 已修复 gap 增大时顶部轻微溢出:图表渲染顶部新增固定 8px 安全内边距,并与上下可用高度计算保持一致。
|
||
16. 已增强日志定位能力:当“源数据不是有效数字 / 源描述为空 / 目标描述为空”时,告警会展示行号、列号、列名及该单元格原始值(目标为空时额外提示无可继承上方值)。
|
||
17. 已增强 iOS 预览尺寸同步:增加 `ResizeObserver` 与 `visualViewport` 监听,确保地址栏变化和容器尺寸变化时桑基图实时 resize。
|
||
18. 已调整移动端布局顺序:单列模式下“桑基图预览”位于“数据选择框”之上。
|
||
19. 已修复 iOS 下 preview-panel 高度异常:引入 `visualViewport` 动态高度变量驱动页面高度,并将移动端内容区改为“预览弹性占满 + 选择区独立滚动”布局。
|
||
20. 已完成手机端控件压缩:隐藏上传文本框;工具条单行滚动显示;预览区 gap/padding 改为下拉(0-30 步长 5 / 0-80 步长 10);方向改为“源/目标”;标签位置改为“内/外/左/右”;汇聚对齐改为“两端/中间/顶部/底部”;控件尽量单行展示。
|
||
21. 已强制手机端仅使用下拉控件模式:手机视口不渲染 gap/padding 滑动条与方向拨杆,仅渲染下拉选择,避免样式条件失效时回退到滑动条模式。
|
||
22. 已扩展到平板单行模式:`<=1024px` 下工具条与预览控件均单行展示(不换行,超出横向滚动),并压缩滑动条宽度以提升一行容纳能力。
|
||
23. 已按 Figma(3764:138) 调整 switch 与下拉样式:switch 改为紧凑胶囊尺寸;下拉统一替换 `list.svg` 箭头并改为 hug/fit-content 宽度,控件宽度随内容变化。
|
||
24. 已恢复手机端上传文本框显示,并缩窄为单行可容纳宽度(固定窄幅 + 文本省略),保持工具条一行布局。
|
||
25. 已进一步压缩手机工具条以避免整体溢出:隐藏工具标签文本、缩小主题/上传按钮与导出按钮、上传框改为弹性窄宽度,工具条取消横向滚动并保持单行。
|
||
26. 已继续收紧 switch/下拉宽度:移除 switch 最小宽度与手机下拉最小宽度,统一按内容自适应(hug)显示。
|
||
27. 已恢复手机端 `export.svg` 主图标显示,并缩小尺寸以兼顾单行工具条布局。
|
||
28. 已为顶部工具栏所有 SVG 图标补充悬停提示(title)与按钮 aria-label,鼠标悬停可显示操作含义。
|
||
29. 已为预览框区域 SVG(预览标题、gap/padding 图标)补充悬停提示,并为相关控件补充 aria-label。
|
||
30. 已统一 pad 与手机的 gap/padding 调节方式:`<=1024px` 统一使用下拉框(与手机一致),仅桌面保留滑动条。
|
||
31. 已启动小程序可用化第一阶段:支持 CSV 上传、默认列自动映射、列选择交互、聚合统计与信息日志展示;聚合规则与 Web 端核心逻辑对齐。
|
||
32. 已完成小程序第二阶段(基础渲染与导出):接入原生 canvas 桑基图绘制、PNG 导出到相册。
|
||
33. 已完成小程序第三阶段(格式与导出补齐):
|
||
- 上传解析支持 `csv/xls/xlsx` 三种格式。
|
||
- 小程序端接入真实 SVG 导出:按当前布局生成 SVG 文件并写入用户目录,优先尝试打开,失败时复制文件路径。
|
||
|
||
二、当前状态(In Progress)
|
||
1. 无进行中的代码重构任务。
|
||
2. 文档体系已补齐为知识库结构:
|
||
- PRD.md
|
||
- APP_FLOW.md
|
||
- TECH_STACK.md
|
||
- FRONTEND_GUIDELINES.md
|
||
- BACKEND_STRUCTURE.md
|
||
- IMPLEMENTATION_PLAN.md
|
||
|
||
三、已知问题 / 风险(Known Issues)
|
||
1. 本地持久化基于 localStorage,受浏览器容量限制;超大文件可能无法完整保存。
|
||
2. Vite 开发配置依赖本机 HTTPS 证书路径,换机器可能无法直接启动。
|
||
3. 当前“目标数据”无独立数值列,数值始终来自 source data 列;若未来业务需要需先改 PRD。
|
||
4. 小程序 xlsx 解析依赖开发者工具“构建 npm”;若未构建将无法读取 xls/xlsx 文件。
|
||
5. 信息日志当前仅展示最近告警(前 8 条),若后续需要完整历史需引入分页或虚拟滚动。
|
||
|
||
四、下一步建议(Next)
|
||
1. 决策是否引入“目标数值列”能力(先更新 PRD 后实现)。
|
||
2. 小程序下一阶段:补充持久化恢复(上传文件与映射配置刷新不丢)。
|
||
3. 补充更多异常用例测试(空文件、超大文件、乱码表头、极端数值)。
|
||
4. 评估并处理 dev HTTPS 证书本地耦合问题,降低新环境接入成本。
|
||
5. 评估“信息日志”是否需要支持导出或清空操作。
|
||
|
||
五、执行约定(Session Memory Rules)
|
||
1. 新会话开始先读取本文件,再读取 6 份规范文档。
|
||
2. 每次功能完成后,必须更新:Done / Known Issues / Next。
|
||
3. 任何范围变化先改 PRD,再改实现与计划。
|