# Steam Monitor MVP ## 需求确认 - 产品:《帝国幻想乡~TOHOTOPIA》 - Steam AppID:`3774440` - 信息源:Steam 评测、Steam 讨论区主题和回复 - 刷新:每 30 分钟;第一轮全量,后续增量 - 分类模型:OpenRouter `deepseek/deepseek-v4-pro` - 密钥:`.env` / 环境变量 `OPENROUTER_API_KEY` - Dashboard:展示分类、原始链接、是否建议回复、处理状态、制作人/处理人备注 ## 当前计划 - [x] T1 建立 Python/FastAPI + SQLite MVP。 - [x] T2 实现 Steam 评测 API 抓取。 - [x] T3 实现 Steam 讨论区主题和回复抓取。 - [x] T4 实现 SQLite 去重、处理状态和同步游标。 - [x] T5 实现 OpenRouter 结构化分类。 - [x] T6 实现 dashboard、手动同步、状态更新。 - [x] T7 本机 smoke test 并启动局域网服务。 - [ ] T8 接入下一个社区平台。 ## 执行记录 - 2026-05-16:创建任务记录,开始项目骨架实现。 - 2026-05-16:完成 Python/FastAPI + SQLite MVP,实现 Steam 评测、讨论区主题和回复抓取,dashboard 展示、手动同步、后台 30 分钟增量同步、处理状态更新。 - 2026-05-16:本机 smoke test 抓取 384 条:评测 132、讨论主题 75、回复 177。未配置 `OPENROUTER_API_KEY`,模型分析按预期进入 error,配置 `.env` 后可补跑。 - 2026-05-16:服务已启动在 `http://127.0.0.1:8000`。 - 2026-05-16:用户补充 `.env` 后发现“补跑分析”视觉无反应。定位为旧 uvicorn 进程未读新 `.env`,且补跑接口同步等待模型调用。已改为按钮立即返回、后台每批 20 条补跑,并在 dashboard 显示“已分析 / 待补跑”。 - 2026-05-16:服务改为局域网监听 `0.0.0.0:8000`,当前局域网地址曾检测为 `http://10.27.16.17:8000`。 - 2026-05-16:修复讨论区排序问题。根因是 Steam 讨论区 `published_at` 未解析,已支持 `x 小时以前`、`3 月 7 日 下午 4:52`、`2025 年 8 月 9 日 下午 3:29` 并回填 252 条讨论区记录。 - 2026-05-16:按用户要求补跑 2026-05-01 之后内容。共 209 条:评测 132、讨论主题 26、讨论回复 51,最终全部 `done`。 - 2026-05-16:Dashboard 页头新增“最近更新时间”,优先取最近成功同步完成时间,缺失时取最新采集时间。 ## 恢复入口 - 方案文档:`任务/方案/steam社区监控一期计划.md` - README:`README.md` - CLI:`python -m app.cli sync --full`、`python -m app.cli analyze-pending --since 2026-05-01 --limit 20` - Dashboard:`python -m uvicorn app.main:app --host 0.0.0.0 --port 8000` - 当前服务:局域网监听 `0.0.0.0:8000` ## 当前状态 - 已完成 Steam 一期 MVP。 - 当前数据文件:`data/tohotopia_monitor.sqlite3`。 - 当前 dashboard 无登录认证,局域网可访问者可查看和修改处理状态。 - 当前排序:建议回复优先;同组内按发布时间新到旧。 - 当前后台任务:FastAPI 启动后每 30 分钟增量同步。 - 当前 OpenRouter key:来自 `.env` 的 `OPENROUTER_API_KEY`。 ## 下一阶段入口 添加其它社区平台时: - 先读 `AGENTS.md`、`README.md`、本任务文档和 `任务/方案/steam社区监控一期计划.md`。 - 新平台采集器应输出 `app.models.RawItem`。 - 继续复用 `raw_items`、`analysis_results`、`work_items`。 - 新平台不要把平台私有字段直接塞到 dashboard 查询条件里;先进入 `raw_json` 和统一字段。 - 需要登录态、API、反爬或浏览器自动化的平台,先验证当前事实再实现。