Skip to content

Feature Request: daily contract check for API schema drift with test accounts #50

@jackwener

Description

@jackwener

背景

OpenCLI 很适合做 website automation / dynamic data extraction,但这类集成长期维护的一个核心难点,是上游站点的 API response schema 会在没有通知的情况下发生变化。

目前仓库里已经有 scheduled smoke test(CI workflow 每周跑一次),这个方向很好。我在想,后续是否可以更进一步,把“自发现 API 结构变化”和“低成本持续巡检”做成一套更系统的机制。

想要的能力

  1. 增加 daily / nightly cron job

    • 用测试账号在 GitHub Actions 里跑一组稳定的 smoke / E2E checks
    • 覆盖几个代表性站点和关键 user journey
    • 目标不是 full regression,而是尽早发现 integration breakage
  2. 增加 API contract / schema drift detection

    • 对关键接口保留一份 normalized snapshot / schema expectation
    • 每次 CI 或 nightly run 时,对比真实 response 的结构变化
    • 重点关注字段缺失、字段 rename、嵌套层级变化、array/object 互换、nullable 变化等
  3. 报错信息更聚焦“结构变化”

    • 不只是提示 test failed
    • 最好能输出类似:field removed, type changed, path missing 这种 drift summary
    • 这样更方便后续让 LLM / maintainer 快速定位 parser 或 extractor 需要更新的地方
  4. 为后续 LLM-assisted maintenance 留接口

    • 如果 nightly job 发现 drift,是否可以自动产出一份 artifact / report
    • 比如包含 request context、sanitized response shape、diff summary、受影响测试
    • 这样后面无论是人工修还是让 LLM 辅助修,输入都会更完整

一个可能的实现方向

  • 保留现有 smoke tests
  • 再补一层更轻量的 contract tests
  • contract tests 不校验完整 payload value,只校验 shape / required paths / primitive type
  • schedule 可以先从 daily 开始,如果成本高也可以先选几个高风险 provider 跑 nightly
  • 凭证建议用专门的 test account,并尽量把行为限制在 read-only / low-risk flows

Why this matters

对于这类依赖第三方网页和私有 API 的项目,真正难的不是第一次接入,而是长期稳定维护。

如果能有:

  • 定时巡检
  • schema drift detection
  • 清晰的 failure artifact

那后续无论是 maintainer 手动修,还是让 LLM 辅助更新 parser / extractor,都会更可持续。

如果这个方向你觉得合理,我也很期待先从少量关键站点开始试点。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions