For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: 重做 dashboard 前端:砍掉废数据、加数据可视化、拆分文件、新增伏笔追踪和系统状态页。
Architecture: React 19 + Vite,新增图表库和路由。后端补聚合 API。
Tech Stack: React 19, Vite, react-router-dom v7, Apache ECharts (echarts + echarts-for-react), Pixelarticons (pixelarticons)
Design: 视觉风格和具体图表形式待确认,见 dashboard/frontend/design.md(待更新)
src/
├── main.jsx # 入口,挂载 Router
├── App.jsx # Layout shell(侧边栏 + Router Outlet + SSE)
├── api.js # API 请求(保留,补新端点)
├── index.css # 全局样式
├── components/
│ ├── ChartWrapper.jsx # 图表组件封装(统一风格)
│ ├── Badge.jsx # Badge 组件
│ ├── Pager.jsx # 翻页控制组件(大数据量分窗口浏览)
│ └── DataTable.jsx # 带分页的表格组件(从 MiniTable 提取)
└── pages/
├── OverviewPage.jsx # 总览
├── CharactersPage.jsx # 角色图鉴(实体 + 关系图合并)
├── PacingPage.jsx # 节奏雷达
├── ForeshadowingPage.jsx # 伏笔追踪
├── FilesPage.jsx # 文档浏览(迁移)
└── SystemPage.jsx # 系统状态
/api/stats/chapter-trend # 聚合:每章字数 + 审查得分 + 钩子强度
/api/commits # 最近 N 个 commit 的 meta + projection_status
/api/contracts/summary # MASTER_SETTING 摘要 + 当前卷/章合同存在性
/api/env-status # RAG/Rerank 环境配置状态(PR #50)
/api/env-status/probe # RAG/Rerank 主动探测(PR #50)
Files:
Modify: webnovel-writer/dashboard/app.py
[ ] Step 1: 加 /api/stats/chapter-trend
从 index.db 聚合查询,一次返回每章的字数、审查得分、钩子类型和强度。支持 limit 和 offset 参数,默认返回最近 50 章。
/api/commits读取 .story-system/commits/ 目录下的 commit JSON 文件,返回 chapter、status、projection_status。支持 limit 参数。
/api/contracts/summary读取合同树文件存在性和关键字段(MASTER_SETTING 的 primary_genre/core_tone、volume/chapter/review 合同数量)。
从 PR #50 提取 /api/env-status 和 /api/env-status/probe 代码。
Files:
dashboard/frontend/package.jsondashboard/frontend/src/main.jsxdashboard/frontend/src/App.jsxdashboard/frontend/src/api.jsCreate: dashboard/frontend/src/components/*.jsx
[ ] Step 1: 安装依赖
npm install echarts echarts-for-react react-router-dom pixelarticons
[ ] Step 2: 提取公共组件
从现有 App.jsx 提取 Badge、DataTable(原 MiniTable)、Pager(翻页控制)。
Pager 组件要点:
适配 500+ 章数据量
[ ] Step 3: 改造 main.jsx 加路由
每个 page 组件 lazy import + React Router。
只保留:侧边栏导航 + SSE 连接 + Router Outlet。所有页面逻辑移到 pages/。
补新端点的 fetch 函数(chapter-trend, commits, contracts-summary, env-status, env-probe)。
Files:
dashboard/frontend/src/pages/OverviewPage.jsx功能:
删除:
大数据量适配:
字数按卷分组,不一次性铺开所有章节
[ ] Step 1: 实现 + 构建验证 + Commit
Files:
dashboard/frontend/src/pages/CharactersPage.jsx功能:
关系图谱时间轴要点:
first_appearance / chapter 过滤显示当前章节号 + 当前可见节点数
[ ] Step 1: 实现 + Commit
Files:
dashboard/frontend/src/pages/PacingPage.jsx功能:
大数据量适配:
所有组件支持翻页 + "跳到最新"
[ ] Step 1: 实现 + Commit
Files:
dashboard/frontend/src/pages/ForeshadowingPage.jsx功能:
大数据量适配:
横轴范围自动适配(不铺满 1-500)
[ ] Step 1: 实现 + Commit
Files:
dashboard/frontend/src/pages/SystemPage.jsx功能:
RAG 环境状态(embed/rerank key、vector_db 大小、rag_mode)+ 诊断按钮
[ ] Step 1: 实现 + Commit
Files:
dashboard/frontend/src/pages/FilesPage.jsxModify: dashboard/frontend/src/App.jsx
[ ] Step 1: 迁移 FilesPage(逻辑不变)
[ ] Step 2: 最终清理 App.jsx(删除所有已迁移的组件和常量)
[ ] Step 3: 前端构建 + 启动验证所有 6 页 + Commit
| 旧导航 | 新导航 | 图标 (Pixelarticons) | 变化 |
|---|---|---|---|
| 📊 数据总览 | 总览 | chart-bar |
删全量视图,加可视化 |
| 👤 设定词典 | 角色图鉴 | users |
合并关系图谱,2D 替 3D,加时间轴 |
| 🕸️ 关系图谱 | (合并到角色) | — | 删除独立页面 |
| 📝 章节一览 | 节奏雷达 | trending-up |
新页面 |
| 📁 文档浏览 | 文档浏览 | folder |
不变 |
| 🔥 追读力 | 伏笔追踪 | bookmark |
新页面 |
| (无) | 系统状态 | sliders |
新页面 |