Skip to content

补齐首发前自动化缺口 #107

@g1331

Description

@g1331

背景

当前仓库已经具备较完整的基础自动化能力,包括:

  • pnpm lint
  • pnpm exec tsc --noEmit
  • pnpm test:run
  • pnpm e2e
  • Docker 镜像构建与部署工作流
  • Dependabot 锁文件修复
  • PR 代码审查机器人

结合当前仓库状态与本地验证结果,核心功能、构建、测试、E2E 已经可以正常通过,但首个正式版本发布前,仍有几项自动化保护不足,建议集中补齐。

当前缺口

1. PR 门禁缺少生产构建检查

当前 CI 会执行 lint、格式检查、TypeScript 检查、Vitest 和部分 Playwright E2E,但没有在 PR 门禁中显式执行 pnpm build

影响:某些仅在 Next.js 生产构建阶段暴露的问题,可能在合并后或打 tag 时才暴露。

2. 部署后的自动验证过浅

当前部署工作流主要验证:

  • 容器是否运行
  • /api/health 是否可访问

/api/health 当前返回的是轻量静态健康信息,不能代表以下链路已经正常:

  • 数据库连接与读写
  • 管理端鉴权
  • 代理主链路 /api/proxy/v1/*
  • 上游联通性

影响:部署成功不等于服务已经真正可用。

3. 缺少安全扫描自动化

当前工作流中没有看到以下类型的自动检查:

  • 仓库与提交内容的 secret scan
  • 依赖漏洞扫描
  • Docker 镜像漏洞扫描

影响:作为处理 API Key、上游密钥与代理流量的系统,首发前应具备最基本的安全自动化门禁。

4. 可访问性与视觉回归测试没有接入默认 CI

仓库中已经存在:

  • tests/a11y
  • tests/visual

但当前默认 Playwright 配置只执行 tests/e2e

影响:管理台 UI 在后续迭代中更容易出现无感回归,可访问性问题也难以及时发现。

5. 数据库迁移一致性缺少自动校验

当前仓库已经维护 Drizzle migration 与 snapshot,但 CI 没有自动校验 schema、migration、snapshot 是否同步。

影响:后续迁移演进时,容易出现本地可用但迁移元数据不一致的问题。

6. 代理核心链路缺少稳定性与压力测试自动化

当前测试覆盖已经较强,但仍以单元测试、组件测试和少量 E2E 为主。对于 API Gateway 场景,还缺少以下自动验证:

  • 流式输出稳定性
  • 故障转移连续场景
  • 并发与连接资源占用
  • 慢上游与超时边界

影响:真实负载下的问题更晚暴露。

建议分批处理

第一批:首发前优先完成

  • 在 PR 工作流中加入 pnpm build
  • 为部署工作流增加真实冒烟验证脚本
  • 增加至少一类安全扫描工作流

第二批:首发后尽快补齐

  • tests/a11ytests/visual 接入默认 CI 或单独工作流
  • 增加 Drizzle 迁移一致性校验

第三批:版本稳定期补齐

  • 增加代理主链路压力测试与稳定性测试
  • 增加更贴近生产链路的回放或故障注入测试

Project 管理建议

建议将这个 issue 放入一个单独的 GitHub Project,例如 First Releasev1.0Release Readiness,把首发前需要收口的事项统一集中管理。

推荐的列结构:

  • 待处理
  • 进行中
  • 待验证
  • 已完成

推荐的字段:

  • 优先级
  • 版本
  • 类别,例如 自动化、安全、部署、测试

这样处理的目的不是多人协作分工,而是把首发前的零散事项整理成一块可持续追踪的版本面板,便于查看哪些检查已经完成,哪些还停留在收尾阶段。

验收标准

  • PR 合并前可以自动执行生产构建检查
  • 部署完成后可以自动验证数据库、鉴权与至少一个核心 API 链路
  • 仓库具备至少一项安全扫描自动化门禁
  • 可访问性与视觉回归测试具备明确的 CI 接入策略
  • 数据库迁移一致性具备自动校验
  • 该 issue 已进入首发相关的 GitHub Project 或明确的版本收口列表

备注

当前仓库已经接近首个正式版本可发布状态,这个 issue 记录的是“首发前自动化补强清单”,重点在于把已有工程质量进一步提升为更稳妥的发布保护。

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