forked from niuniu/llm-intelligence
297 lines
7.3 KiB
Markdown
297 lines
7.3 KiB
Markdown
# Daily Report V1 Implementation Plan
|
||
|
||
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
|
||
|
||
**Goal:** 将当前“数据库导出式日报”改造成移动端优先、变化驱动、可快速决策的 V1 日报页面,并同步补齐 Dashboard 摘要入口。
|
||
|
||
**Architecture:** 保留现有数据库和采集链路不动,把改造集中在 `scripts/generate_daily_report.go` 的报告语义层与 HTML 模板层。先把“结论、行动建议、头条、免费来源标签、场景推荐”抽成可测试的构建函数,再重写 HTML 模板和前端摘要视图,最后用真实日报生成、Go 测试、前端构建联合验收。
|
||
|
||
**Tech Stack:** Go 1.22、html/template、PostgreSQL、React、TypeScript、CSS
|
||
|
||
---
|
||
|
||
### Task 1: 为日报 V1 语义层补测试
|
||
|
||
**Files:**
|
||
- Modify: `scripts/generate_daily_report_test.go`
|
||
- Test: `scripts/generate_daily_report_test.go`
|
||
|
||
**Step 1: 写失败测试**
|
||
|
||
补 3 组测试:
|
||
- 免费来源标签分组测试:验证 `official_free`、`aggregator_free`、`unknown_free`
|
||
- V1 首页摘要测试:验证会输出一句话结论、行动建议、头条、附录快捷入口
|
||
- 平静日状态测试:验证当事件不足时,首页出现“观察重点 + 稳定推荐”文案
|
||
|
||
**Step 2: 运行失败测试**
|
||
|
||
Run: `go test -tags llm_script ./scripts -run 'TestGenerate|TestBuild'`
|
||
|
||
Expected:
|
||
- 新增测试失败
|
||
- 失败原因是缺少语义层函数或 HTML 中不存在新版文案
|
||
|
||
**Step 3: 最小实现语义函数**
|
||
|
||
在 `scripts/generate_daily_report.go` 中新增:
|
||
- 免费来源分类辅助类型
|
||
- 首页摘要结构
|
||
- 头条 / 建议 / 推荐构建函数
|
||
|
||
**Step 4: 重新运行测试**
|
||
|
||
Run: `go test -tags llm_script ./scripts -run 'TestGenerate|TestBuild'`
|
||
|
||
Expected:
|
||
- 新增测试通过
|
||
|
||
**Step 5: Commit**
|
||
|
||
```bash
|
||
git add scripts/generate_daily_report.go scripts/generate_daily_report_test.go
|
||
git commit -m "feat(report): add v1 report summary builders"
|
||
```
|
||
|
||
### Task 2: 重构日报数据结构以支撑 V1 页面
|
||
|
||
**Files:**
|
||
- Modify: `scripts/generate_daily_report.go`
|
||
- Test: `scripts/generate_daily_report_test.go`
|
||
|
||
**Step 1: 写失败测试**
|
||
|
||
为以下内容补断言:
|
||
- 免费模型按来源可信度分组显示
|
||
- 推荐卡存在证据短句
|
||
- 头条卡存在变化基线或“首次出现”标签
|
||
|
||
**Step 2: 运行失败测试**
|
||
|
||
Run: `go test -tags llm_script ./scripts -run 'TestGenerateHTMLV3|TestBuild'`
|
||
|
||
Expected:
|
||
- HTML 内容不包含新版结构字段
|
||
|
||
**Step 3: 最小实现**
|
||
|
||
在 `ReportV3` 上新增 V1 所需衍生字段,例如:
|
||
- `HeroSummary`
|
||
- `ActionItems`
|
||
- `HeadlineItems`
|
||
- `SceneSections`
|
||
- `FreeBreakdown`
|
||
- `AppendixLinks`
|
||
- `PageMode`
|
||
|
||
并在 `generateReportDataV3` 末尾统一填充。
|
||
|
||
**Step 4: 重新运行测试**
|
||
|
||
Run: `go test -tags llm_script ./scripts -run 'TestGenerateHTMLV3|TestBuild'`
|
||
|
||
Expected:
|
||
- 数据结构相关测试通过
|
||
|
||
**Step 5: Commit**
|
||
|
||
```bash
|
||
git add scripts/generate_daily_report.go scripts/generate_daily_report_test.go
|
||
git commit -m "feat(report): enrich daily report v1 view model"
|
||
```
|
||
|
||
### Task 3: 重写 HTML 模板为移动端优先 V1 首页
|
||
|
||
**Files:**
|
||
- Modify: `scripts/generate_daily_report.go`
|
||
- Test: `scripts/generate_daily_report_test.go`
|
||
|
||
**Step 1: 写失败测试**
|
||
|
||
断言 HTML 包含以下结构关键词:
|
||
- `今日一句话结论`
|
||
- `三条行动建议`
|
||
- `今日头条`
|
||
- `场景推荐`
|
||
- `完整数据附录`
|
||
- 免费来源标签:`官方免费`、`聚合免费`、`待确认`
|
||
|
||
**Step 2: 运行失败测试**
|
||
|
||
Run: `go test -tags llm_script ./scripts -run 'TestGenerateHTMLV3Includes'`
|
||
|
||
Expected:
|
||
- 失败,说明旧模板仍是统计卡 + 表格
|
||
|
||
**Step 3: 最小实现**
|
||
|
||
重写 `generateHTMLV3`:
|
||
- 使用移动端优先布局
|
||
- 加入结论卡、行动建议卡、头条卡、场景推荐、附录入口
|
||
- 保留必要的完整表格,但下沉到附录区
|
||
- 按设计文档落地颜色、字号、标签、平静日/热点日状态
|
||
|
||
**Step 4: 重新运行测试**
|
||
|
||
Run: `go test -tags llm_script ./scripts -run 'TestGenerateHTMLV3Includes'`
|
||
|
||
Expected:
|
||
- 模板结构测试通过
|
||
|
||
**Step 5: Commit**
|
||
|
||
```bash
|
||
git add scripts/generate_daily_report.go scripts/generate_daily_report_test.go
|
||
git commit -m "feat(report): redesign html daily report for v1"
|
||
```
|
||
|
||
### Task 4: 调整 Markdown 让结构与新版日报一致
|
||
|
||
**Files:**
|
||
- Modify: `scripts/generate_daily_report.go`
|
||
- Test: `scripts/generate_daily_report_test.go`
|
||
|
||
**Step 1: 写失败测试**
|
||
|
||
补充 Markdown 断言:
|
||
- 顶部出现“今日结论”“今日行动建议”“今日变化”
|
||
- 免费区出现来源分类摘要
|
||
|
||
**Step 2: 运行失败测试**
|
||
|
||
Run: `go test -tags llm_script ./scripts -run 'TestGenerateMarkdownV3'`
|
||
|
||
Expected:
|
||
- 旧 Markdown 不包含新版结构
|
||
|
||
**Step 3: 最小实现**
|
||
|
||
改写 `generateMarkdownV3` 的章节顺序,至少与 HTML 保持:
|
||
- 结论
|
||
- 行动建议
|
||
- 变化摘要
|
||
- 场景推荐
|
||
- 附录
|
||
|
||
**Step 4: 重新运行测试**
|
||
|
||
Run: `go test -tags llm_script ./scripts -run 'TestGenerateMarkdownV3'`
|
||
|
||
Expected:
|
||
- Markdown 测试通过
|
||
|
||
**Step 5: Commit**
|
||
|
||
```bash
|
||
git add scripts/generate_daily_report.go scripts/generate_daily_report_test.go
|
||
git commit -m "feat(report): align markdown report with v1 structure"
|
||
```
|
||
|
||
### Task 5: 补 Dashboard 摘要卡以对齐新版日报
|
||
|
||
**Files:**
|
||
- Modify: `frontend/src/pages/Dashboard.tsx`
|
||
- Modify: `frontend/src/App.css`
|
||
|
||
**Step 1: 写失败测试或构建前检查**
|
||
|
||
由于当前前端未配置页面测试,先以类型检查和构建作为验收门槛,并在实现前明确 UI 目标:
|
||
- Dashboard 出现一句话摘要
|
||
- 显示报告日期、状态、HTML / Markdown 入口
|
||
- 展示“固定路径回退”提示
|
||
- 视觉上更接近新版日报入口卡
|
||
|
||
**Step 2: 最小实现**
|
||
|
||
在 `Dashboard.tsx` 中:
|
||
- 扩展 `LatestReport` 展示字段
|
||
- 生成更强的信息层级摘要
|
||
- 调整布局让入口更接近移动端日报卡片语义
|
||
|
||
在 `App.css` 中:
|
||
- 为日报入口补新版卡片层级
|
||
- 优化移动端字号和按钮布局
|
||
|
||
**Step 3: 运行构建**
|
||
|
||
Run: `cd frontend && npm run build`
|
||
|
||
Expected:
|
||
- 构建通过
|
||
|
||
**Step 4: Commit**
|
||
|
||
```bash
|
||
git add frontend/src/pages/Dashboard.tsx frontend/src/App.css
|
||
git commit -m "feat(frontend): align dashboard report card with v1 report"
|
||
```
|
||
|
||
### Task 6: 真实生成和联调验证
|
||
|
||
**Files:**
|
||
- Modify: `reports/daily/*`(生成产物)
|
||
- Verify: `scripts/generate_daily_report.go`
|
||
- Verify: `scripts/verify_phase3.sh`
|
||
|
||
**Step 1: 运行脚本测试**
|
||
|
||
Run: `go test -tags llm_script ./scripts`
|
||
|
||
Expected:
|
||
- 脚本相关测试通过
|
||
|
||
**Step 2: 运行后端测试**
|
||
|
||
Run: `go test ./...`
|
||
|
||
Expected:
|
||
- 全部通过
|
||
|
||
**Step 3: 运行前端构建**
|
||
|
||
Run: `cd frontend && npm run build`
|
||
|
||
Expected:
|
||
- 构建通过
|
||
|
||
**Step 4: 真实生成日报**
|
||
|
||
Run: `go run -tags llm_script ./scripts/generate_daily_report.go`
|
||
|
||
Expected:
|
||
- 生成新版 md/html
|
||
- 主产物与归档产物都更新
|
||
|
||
**Step 5: 门禁验证**
|
||
|
||
Run: `bash scripts/verify_phase3.sh`
|
||
|
||
Expected:
|
||
- `PHASE_RESULT: PASS`
|
||
|
||
**Step 6: Commit**
|
||
|
||
```bash
|
||
git add scripts/generate_daily_report.go scripts/generate_daily_report_test.go frontend/src/pages/Dashboard.tsx frontend/src/App.css reports/daily
|
||
git commit -m "feat(report): ship daily report v1 experience"
|
||
```
|
||
|
||
### Task 7: 推送到仓库
|
||
|
||
**Files:**
|
||
- Verify: working tree
|
||
|
||
**Step 1: 检查状态**
|
||
|
||
Run: `git status --short`
|
||
|
||
Expected:
|
||
- 只剩可接受的既有脏文件或已知产物
|
||
|
||
**Step 2: 推送**
|
||
|
||
Run: `git push`
|
||
|
||
Expected:
|
||
- 推送成功
|
||
|