League API 工程
请准确地选择一种主要模式。对于混合请求,在继续之前说明主导模式及次要交付物。
| 模式 | 用途 | 必需的结果 |
|---|---|---|
implement | 添加或更改数据集成 | 源决策 → 适配器契约 → 清理后的夹具/测试 → 实现计划或代码 → 门控 |
audit | 评估现有集成 | 清单 → 证据标签 → 风险矩阵 → 按优先级排列的、针对特定源的修复项 |
debug | 处理失败或误导性的集成 | 复现 → 故障类别 → 传输/模式/缓存/回退检查 → 修复证明 |
research | 选择数据源或检查当前事实 | 带日期的证据地图 → 源评估 → 决策 |
policy | 判断数据使用或产品行为是否允许 | 产品/数据审查 → 政策门控 → 允许、受限或阻止的决定 |
不可协商的门控
拒绝一个设计方案,而不是绕过失败的门控:
- 密钥与隐私: 不得嵌入、持久化或记录 Riot API 密钥、LCU 凭证、Bearer 令牌、Cookie、个人身份信息 (PII) 或真实的玩家历史记录。
- 本地客户端安全: 禁止注入、Hook、进程内存访问、内存扫描、反作弊绕过、隐藏状态提取,或声称拥有独占全屏控制权。环回证书放宽限制仅适用于明确绑定到
127.0.0.1或localhost的客户端;绝不可重用于远程 HTTPS。 - 授权与条款: 不得将未记录的端点或提供商表述为官方支持。在使用前验证适用的条款、归属、再分发、身份验证和速率限制条件。
- 回退的真实性: 回退必须保持总体、范围、时效性、补丁版本、语言环境、队列和数据来源的语义。实质性不同的数据应作为单独的结果,而非静默的替代。
- 不支持的请求: 不得编造 MMR/ELO 估算值、推断隐藏状态,或暴露不可用的玩家信息。返回
policy_blocked或unsupported_context并附带约束说明。
源决策工作流
- 对请求的数据进行分类:本地会话、进行中的比赛、静态/版本化数据、远程账户/比赛/排位数据、聚合趋势数据,或不受支持/隐藏状态。
- 从
source-decision-tree.md开始;根据权威性、访问方式、路由、时效性、稳定性、补丁覆盖范围、延迟、服务条款、隐私、归属、速率限制以及故障行为来筛选候选源。 - 在评分前应用硬性门控。如果一个数据源需要嵌入生产环境密钥、不安全的本地访问、被禁止的数据、未经审查的再分发或不兼容的回退,则将其拒绝。
- 为每个实质性声明记录一个证据类别:
verified-current:直接由带日期的权威数据源或当前可重现的观察结果支持;observed-undocumented:已复现的行为,但未得到权威保证;historical:以前有文档记录或观察到,现在不能假定仍有效;inference:基于推理的结论,在上生产环境前需要验证。
- 使用
adapter-contract.md编写或更新适配器契约,然后采用缓存/回退、测试和金丝雀控制。
故障词汇表
使用一个主要错误类别,并分别保留原始的清理后诊断信息:offline、unauthorized、rate_limited、not_found、no_data、unsupported_context、transport、http_status、parse、schema_drift 或 policy_blocked。
切勿盲目重试 unauthorized、policy_blocked、parse 或 schema_drift。参见 caching-and-fallbacks.md。
审计输出协议
审计会产生一个带日期的工件,包含:
- 范围、数据类别和适配器清单;
- 包含权威性、稳定性、证据类别和条款审查日期的源/端点映射;
- 凭证、隐私、本地访问、路由、版本管理和归属方面的发现;
- 缓存、无数据、重试、模式漂移和回退兼容性方面的发现;
- 风险矩阵:严重性、可能性、受影响的行为、证据和具体的补救措施;
- 按优先级排列的修复项、被阻止的项目和验证标准。
不要将假设标记为已验证。不要仅仅因为某个源成功工作过一次就称其为安全的。
渐进式文档披露
- 官方和本地数据源选择:
riot-web-apis.md、lcu.md、live-client-data.md、data-dragon.md、communitydragon.md。 - 外部数据源和产品政策:
third-party-providers.md、policy-and-product-gates.md。 - 工程控制:
adapter-contract.md、caching-and-fallbacks.md、testing-and-canaries.md。 - 可选的限定范围示例:
case-study-lolcompanion.md。
如果验证器存在,在发布前请在包根目录运行 python scripts/validate.py .。