Files
llm-intelligence/docs/plans/2026-05-13-daily-report-v1-implementation-plan.md
2026-05-13 20:13:02 +08:00

297 lines
7.3 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.
# 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:
- 推送成功