SuperAPI AI 工具集

production-review

编程与开发

查看项目

更新于 10-16 04:20

技能介绍

用途

Production Review 是一个专注生产就绪性的代码审查技能。它不以命名规范或行长为关注点,而是聚焦那些“会在凌晨三点把你叫醒”的问题。适用于在代码进入生产部署前,对安全、错误处理、日志、配置、性能与运维风险做系统性排查。

主要能力

该技能按照一套明确的审查工作流运行:

  1. 识别技术栈:确定语言与版本(如 Python 3.11、Node 20、Go 1.22、Java 21)、框架(FastAPI、Django、Flask、Express、Fastify、Gin、Spring Boot)、数据库(PostgreSQL、MySQL、MongoDB、Redis)、基础设施(Docker、Kubernetes、serverless、裸 VM),并扫描依赖文件(requirements.txt、pyproject.toml、package.json、go.mod、pom.xml)。这决定哪些检查项适用。
  2. 逐项对照生产检查清单评估代码,记录问题内容、位置(文件与行号)、在生产环境中为何重要、以及如何修复(尽量给代码示例)。
  3. 按严重等级归类:
    • CRITICAL:安全漏洞、数据丢失风险或生产环境必然崩溃(如 SQL 注入、管理端点缺少鉴权、无数据库连接错误处理)。
    • HIGH:高负载、边界情况或故障期间会出问题(如无连接池、外部调用缺少超时、列表端点 N+1 查询)。
    • MEDIUM:随时间推移增加运维风险的最佳实践违背(如无结构化日志、缺少健康检查、硬编码配置值)。
    • LOW:降低未来生产风险的代码质量改进(如 API 边界缺少类型提示、无优雅停机、宽泛异常捕获)。 拿不准时从高归类。
  4. 为高于 LOW 的每项发现提供具体修复,不只说“加错误处理”,而是给出实际代码,展示修改前与修改后。若修复需要架构变更,则列出步骤。
  5. 汇总生产就绪评分:READY(无严重或高优先级问题,可发布)、NEEDS WORK(无严重问题,但高优先级项须在生产前解决,可上预发)、NOT READY(存在严重问题,禁止部署,先修复严重项)。

检查清单覆盖范围

安全(对齐 OWASP):访问控制(每个端点显式授权、服务端角色检查、对象级访问控制、管理端点受保护、防目录遍历);安全配置错误(安全响应头、无默认凭据、生产禁用调试、不暴露堆栈跟踪、强制 HTTPS);注入(参数化查询或 ORM、避免 shell=True 与字符串拼接、模板自动转义、覆盖 LDAP/XML 等向量);异常处理不当(错误时失败关闭、响应不含堆栈或内部路径、为 400/401/403/404/500 提供自定义处理器);CORS(凭据场景不得 allow_origins=["*"]、生产用具体来源白名单、credentials 不与通配来源组合);限流(变更端点按用户限流、认证端点按 IP 限流且更严格、返回限流头);密钥管理(无硬编码密钥、从环境变量或密钥管理器加载、.env 进 .gitignore、构建参数与镜像层不含密钥)。

错误处理:结构化错误响应(含 error、message、request_id 字段的一致 JSON)、关联 ID(每个错误响应含可映射日志的 request_id/trace_id)、不返回原始 traceback、正确 HTTP 状态码(400/401/403/404/409/422/500,绝不 200 带错误体)、优雅降级(非关键依赖失败时请求仍以降级能力成功)、熔断器(外部调用失败 N 次后停止调用并返回降级结果,冷却后恢复)。

日志与可观测性:结构化日志(生产 JSON、开发可读,使用 structlog、python-json-logger、pino、zap 等)、请求关联 ID 跨服务传播、日志不含敏感数据(密码、令牌、信用卡号、PII)、正确的日志级别(ERROR 需人工介入、WARNING 意外但已处理、INFO 业务事件、DEBUG 仅非生产启用)、健康检查端点(/health/live 进程存活立即返回 200 供负载均衡器;/health/ready 检查数据库、缓存、必需服务供编排器)、指标(请求数、延迟分位数 p50/p95/p99、错误率、依赖健康)。

配置:12-factor(配置来自环境变量而非提交到仓库的文件)、启动即失败(缺少必需配置在启动时报错,而非首个请求时才报)、无硬编码值(URL、端口、主机名、环境相关值)、环境分离(dev/staging/prod 配置清晰,避免业务逻辑中散落环境判断)、密钥轮换(支持不重启轮换,或至少重启轮换无需改代码)。

性能:N+1 查询(列表端点在循环中取关联对象而非 JOIN 或批量查询)、缺失索引(外键列与高频筛选列有索引)、连接池(数据库用池而非每请求连接;出站 HTTP 用持久会话)、异步纪律(异步处理器中无阻塞同步调用,如 time.sleep、同步 requests、阻塞文件 I/O)、处处超时(HTTP、数据库、缓存、gRPC 的每次外部调用都有显式超时)、分页(可能返回无界结果的列表端点有分页,大数据集优先游标分页)、缓存(读密集且数据稳定的端点使用 Redis、内存或 CDN 缓存)。

运维就绪:优雅停机(SIGTERM 时先完成在途请求再退出,15-30 秒宽限期,不突然断连)、数据库迁移(与旧代码版本向后兼容以支持滚动部署,避免无默认值的 NOT NULL、无别名的列重命名、无弃用期的表删除)、容器健康检查(Dockerfile 含 HEALTHCHECK 或 Kubernetes 有 livenessProbe 与 readinessProbe)、向后兼容(API 变更只增不减,破坏性变更用版本化)、资源清理(文件句柄、数据库连接、临时文件通过上下文管理器清理,错误条件下不泄漏)、依赖健康上报(通过 readiness 端点或指标报告数据库、缓存、外部 API 健康)、启动/关闭顺序(连接池在启动时打开、关闭时关闭;后台任务在关闭时取消)。

输出格式

审查以固定结构呈现:组件名称、检测到的技术栈、已审查文件数与关键文件、生产就绪评分;随后是 Critical Issues、High Priority、Medium Priority、Low Priority/Recommendations、What's Done Well 各段,最后给出 1-2 句总体状态与最重要行动项的总结。每项发现含类别、简短标题、文件与行号,以及修改前/修改后的代码示例。

适用场景

适用于代码进入生产部署前的审查,尤其面向 Web 服务与 API;也可在预发环境发布前使用,或在迭代中用于暴露运维盲点。技能文档给出了与技术栈相关的扩展方向:FastAPI 生产模式、PostgreSQL 迁移安全与索引、Docker 容器加固、部署前验证与回滚、可观测性设置、含生产约束的架构规划。

限制

该技能面向生产就绪性,不关注代码风格、命名规范或行长。审查范围由检测到的技术栈决定(如 CLI 工具无需 CORS 检查,只读内部服务的鉴权要求与公开 API 不同)。具体的收费、价格、平台支持与效果数据在资料中暂未提供。