公开只读 API(P1-2/P1-3)+ 全套文档对齐(P1-1) #11

Merged
shangfangjian merged 3 commits from docs-public-api-fixes into main 2026-09-21 21:38:59 +08:00
Collaborator

改动

任务 1(P1-2)比赛上下文公开

  • GET /matches/{id}/context 移除 require_admin:公开站详情页「近况/交锋」数据来源,匿名 401 导致前端静默空态。响应结构不变,不触发 LLM。
  • 测试:匿名 200(存在)/404(不存在)/响应形状 + 路由依赖声明检查(matches 路由无 require_admin)+ 判别力守卫(ingest 路由必须检出,防检测器恒真)。

任务 2(P1-3)联赛列表公开

  • GET /leagues 公开只读,响应保持 [{id,code,name,country},...],不含配置/密钥字段。
  • 前端 useLeagues:优先请求 /api/v1/leagues,失败/空回退本地五大联赛常量;已知代码保留中文标签,新联赛按 API 名称追加。

任务 3(P1-1)文档对齐

  • 数据源仅 bzzoiro(README/01/02/03/05/06/07 删除 understat/api-football 现行表述,仅留历史注记;移除失效 API_FOOTBALL_KEY)
  • 专家 = form/stats/home_away/standings/h2h(injuries→standings 全量替换)
  • 表 = 12 张(补 standings/app_settings/schedules + 4 张治理表,标注 3 张预留未启用)
  • API 文档:鉴权模型三档表、公开 vs 需管理员区分、ingest task/limit/season 契约
  • 目录树与真实 src/、frontend/src 一致(移除不存在的 retry.py)
  • docs/08 文首标注历史/过时

验证

  • pytest:263 passed, 1 skipped(新增 6 项)
  • 前端:tsc + vite build 通过

禁止项确认

  • 未回退任何安全修复/工程债成果;未动 bzzoiro/admin_settings 结构、预测算法、未引入 Redis
  • 已知遗留:src/llm/prompts/agents/aggregator_v1.md 的 agent_weights 模板仍含 injuries 占位符(validation 会忽略未知专家并告警)——属预测链路 prompt,按约定未改动
## 改动 ### 任务 1(P1-2)比赛上下文公开 - `GET /matches/{id}/context` 移除 require_admin:公开站详情页「近况/交锋」数据来源,匿名 401 导致前端静默空态。响应结构不变,不触发 LLM。 - 测试:匿名 200(存在)/404(不存在)/响应形状 + 路由依赖声明检查(matches 路由无 require_admin)+ 判别力守卫(ingest 路由必须检出,防检测器恒真)。 ### 任务 2(P1-3)联赛列表公开 - `GET /leagues` 公开只读,响应保持 `[{id,code,name,country},...]`,不含配置/密钥字段。 - 前端 `useLeagues`:优先请求 `/api/v1/leagues`,失败/空回退本地五大联赛常量;已知代码保留中文标签,新联赛按 API 名称追加。 ### 任务 3(P1-1)文档对齐 - 数据源仅 bzzoiro(README/01/02/03/05/06/07 删除 understat/api-football 现行表述,仅留历史注记;移除失效 API_FOOTBALL_KEY) - 专家 = form/stats/home_away/standings/h2h(injuries→standings 全量替换) - 表 = 12 张(补 standings/app_settings/schedules + 4 张治理表,标注 3 张预留未启用) - API 文档:鉴权模型三档表、公开 vs 需管理员区分、ingest task/limit/season 契约 - 目录树与真实 src/、frontend/src 一致(移除不存在的 retry.py) - docs/08 文首标注历史/过时 ## 验证 - pytest:263 passed, 1 skipped(新增 6 项) - 前端:tsc + vite build 通过 ## 禁止项确认 - 未回退任何安全修复/工程债成果;未动 bzzoiro/admin_settings 结构、预测算法、未引入 Redis - 已知遗留:src/llm/prompts/agents/aggregator_v1.md 的 agent_weights 模板仍含 injuries 占位符(validation 会忽略未知专家并告警)——属预测链路 prompt,按约定未改动
WorkBuddy added 2 commits 2026-09-21 20:56:42 +08:00
- GET /matches/{id}/context 移除 require_admin:公开站详情页「近况/交锋」
  数据来源,匿名 401 会导致前端静默空态;响应结构不变,不触发 LLM
- GET /leagues 改公开只读:公开站联赛筛选动态加载;仅返回
  id/code/name/country 四个展示字段,不含配置或密钥信息
- 前端新增 useLeagues hook:优先请求 /api/v1/leagues,失败/空回退
  本地五大联赛常量(已知代码保留中文标签,新联赛按 API 名称追加)
- 新增 tests/test_public_readonly_api.py(6 项):匿名 200/404、响应形状、
  路由依赖声明检查(matches 路由无 require_admin)+ 判别力守卫
  (ingest 路由必须检出 require_admin,防检测器恒真)
- 数据源:全部文档统一为 bzzoiro 唯一来源,删除 understat/api-football
  作为现行数据源的表述(仅保留历史注记);.env.example/docs/06 移除
  失效的 API_FOOTBALL_KEY
- 多 Agent:injuries 阵容完整性 → standings 联赛排名
  (README/01/04 的专家表、数据流图、no_data 示例、agent_weights、
  prompt 清单全部对齐 form/stats/home_away/standings/h2h)
- 数据库:6 张表 → 12 张表,补 standings/app_settings/schedules 与
  4 张治理表说明(标注 raw_events/data_quality_checks/data_lineage
  为预留未启用,ingest_failures 已启用),predictions 补 agent_weights 列
- API 文档(03):新增鉴权模型三档表;context/standings/leagues 公开端点
  补全;predictions/eval/backtest 标注需管理员;ingest/bzzoiro 补
  task/limit/season 参数契约,删除 understat/injuries 端点小节
- 目录树(README/01/07):与真实 src/、frontend/src 结构一致
  (core 7 文件、data 7 文件、移除不存在的 retry.py)
- 采集命令(02/05):understat 回填 → task=stats/standings;
  补管理员凭据提示;docs/08 文首标注历史/过时
WorkBuddy added 1 commit 2026-09-21 21:02:22 +08:00
- docs/06 新增「生产上线检查清单」10 项:APP_ENV / SECRET_KEY 强随机 /
  管理鉴权二选一 / 数据库强密码 / HTTPS+Cookie Secure /
  TRUST_PROXY_HEADERS+X-Forwarded-For / Nginx limit_req 限流前置
  (应用内限流与 KeyRing 单进程限制) / uvicorn 单 worker /
  /health 与 /health/ready / alembic 迁移已内置
- README 在部署说明后加同名精简清单,链接到 docs/06 详情
- 全部条目均对齐真实实现(security_check 弱值黑名单、auth.py
  secure=production、deps.py TRUST_PROXY 解析、app.py 双健康检查、
  compose/Dockerfile 内置迁移);纯文档,未改业务逻辑
Author
Collaborator

新增提交 6bdb1f8:生产上线检查清单(README + docs/06,10 项,对齐 security_check/auth Cookie Secure/TRUST_PROXY/健康检查/内置迁移等真实实现,纯文档无业务逻辑改动)。

新增提交 6bdb1f8:生产上线检查清单(README + docs/06,10 项,对齐 security_check/auth Cookie Secure/TRUST_PROXY/健康检查/内置迁移等真实实现,纯文档无业务逻辑改动)。
shangfangjian merged commit 7a5c695b89 into main 2026-09-21 21:38:59 +08:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: shangfangjian/Profeto#11