docs-public-api-fixes
main
GET /matches/{id}/context
GET /leagues
[{id,code,name,country},...]
useLeagues
/api/v1/leagues
- 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 文首标注历史/过时
- 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 内置迁移);纯文档,未改业务逻辑
新增提交 6bdb1f8:生产上线检查清单(README + docs/06,10 项,对齐 security_check/auth Cookie Secure/TRUST_PROXY/健康检查/内置迁移等真实实现,纯文档无业务逻辑改动)。
No dependencies set.
The note is not visible to the blocked user.
改动
任务 1(P1-2)比赛上下文公开
GET /matches/{id}/context移除 require_admin:公开站详情页「近况/交锋」数据来源,匿名 401 导致前端静默空态。响应结构不变,不触发 LLM。任务 2(P1-3)联赛列表公开
GET /leagues公开只读,响应保持[{id,code,name,country},...],不含配置/密钥字段。useLeagues:优先请求/api/v1/leagues,失败/空回退本地五大联赛常量;已知代码保留中文标签,新联赛按 API 名称追加。任务 3(P1-1)文档对齐
验证
禁止项确认
- 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,防检测器恒真)新增提交 6bdb1f8:生产上线检查清单(README + docs/06,10 项,对齐 security_check/auth Cookie Secure/TRUST_PROXY/健康检查/内置迁移等真实实现,纯文档无业务逻辑改动)。