SOLO 与 API-First 集成指南
本指南详细介绍如何将SOLO工作模式与现有的API-First开发流程完美融合,实现从产品需求到API交付的完整闭环。
🎯 集成目标
现有API-First流程
SOLO增强后的完整流程
🔄 阶段对接详解
1. PRODUCT → API需求
SOLO产品阶段增强API需求分析:
markdown
<!-- .solo/docs/PRD.md 示例 -->
# 用户管理API - 产品需求文档
## API需求分析
### 核心API端点
1. **用户认证API**
- POST /api/v1/auth/login
- POST /api/v1/auth/logout
- POST /api/v1/auth/refresh
2. **用户管理API**
- GET /api/v1/users
- POST /api/v1/users
- PUT /api/v1/users/{id}
- DELETE /api/v1/users/{id}
### API性能需求
- 响应时间: < 200ms (95th percentile)
- 吞吐量: > 1000 RPS
- 可用性: 99.9%
### API安全需求
- 支持JWT认证
- 实现RBAC权限控制
- 所有端点支持HTTPS
- 防止SQL注入和XSS攻击2. ARCHITECT → OpenAPI设计
SOLO架构阶段生成标准OpenAPI规范:
yaml
# api-spec.yaml (由architect子代理生成)
openapi: 3.0.3
info:
title: User Management API
version: 1.0.0
description: 基于SOLO需求分析的用户管理API
servers:
- url: https://api.example.com/v1
description: 生产环境
- url: https://staging-api.example.com/v1
description: 测试环境
paths:
/users:
get:
tags: [Users]
summary: 获取用户列表
description: 根据PRD-US001需求,支持分页和筛选
parameters:
- name: page
in: query
description: 页码 (默认为1)
schema:
type: integer
minimum: 1
default: 1
- name: limit
in: query
description: 每页条数 (默认为20,最大100)
schema:
type: integer
minimum: 1
maximum: 100
default: 20
- name: role
in: query
description: 按角色筛选
schema:
type: string
enum: [admin, user, guest]
responses:
'200':
description: 成功返回用户列表
content:
application/json:
schema:
$ref: '#/components/schemas/UserListResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'500':
$ref: '#/components/responses/InternalError'
components:
schemas:
User:
type: object
required: [id, email, role]
properties:
id:
type: string
format: uuid
description: 用户唯一标识
email:
type: string
format: email
description: 用户邮箱
role:
type: string
enum: [admin, user, guest]
description: 用户角色
created_at:
type: string
format: date-time
description: 创建时间
updated_at:
type: string
format: date-time
description: 更新时间
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
security:
- BearerAuth: []3. 代码生成 → ENGINEER实现
结合现有工具链和SOLO工程阶段:
bash
# 1. 使用现有OpenAPI Generator生成代码骨架
openapi-generator generate \
-i api-spec.yaml \
-g spring \
-o ./backend \
--additional-properties=packageName=com.example.userapi,artifactId=user-api
# 2. 切换到SOLO工程模式进行TDD实现
/solo__switch engineer
# 3. SOLO Engineer开始TDD循环4. TDD实现与API测试融合
SOLO工程师遵循现有测试策略:
java
// 单元测试 - 遵循现有JUnit规范
@ExtendWith(MockitoExtension.class)
class UserServiceTest {
@Test
@DisplayName("根据PRD-US001,应该支持用户列表分页查询")
void shouldReturnPaginatedUsers() {
// Given - 基于OpenAPI规范的测试数据
PageRequest pageRequest = PageRequest.of(0, 20);
List<User> mockUsers = createMockUsers(50);
Page<User> mockPage = new PageImpl<>(mockUsers.subList(0, 20), pageRequest, 50);
when(userRepository.findAll(pageRequest)).thenReturn(mockPage);
// When
UserListResponse response = userService.getUsers(1, 20, null);
// Then - 验证OpenAPI规范定义的响应格式
assertThat(response.getData()).hasSize(20);
assertThat(response.getPagination().getTotal()).isEqualTo(50);
assertThat(response.getPagination().getPage()).isEqualTo(1);
}
}
// API集成测试 - 使用现有TestContainers
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Testcontainers
class UserApiIntegrationTest {
@Container
static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:15")
.withDatabaseName("userapi_test")
.withUsername("test")
.withPassword("test");
@Test
@DisplayName("GET /api/v1/users 应该返回符合OpenAPI规范的响应")
void shouldReturnUsersAccordingToOpenApiSpec() {
// Given
createTestUsers(25);
// When
ResponseEntity<String> response = restTemplate.getForEntity(
"/api/v1/users?page=1&limit=10", String.class);
// Then - 验证响应符合OpenAPI Schema
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
JsonNode jsonResponse = objectMapper.readTree(response.getBody());
assertThat(jsonResponse.get("data")).isArray();
assertThat(jsonResponse.get("data")).hasSize(10);
assertThat(jsonResponse.get("pagination").get("total").asInt()).isEqualTo(25);
// 验证每个用户对象符合OpenAPI Schema
jsonResponse.get("data").forEach(user -> {
assertThat(user.has("id")).isTrue();
assertThat(user.has("email")).isTrue();
assertThat(user.has("role")).isTrue();
});
}
}5. QA → API质量保证
SOLO QA阶段增强现有测试策略:
bash
# API契约测试 - 使用现有Pact工具
/solo__switch qa
# QA Engineer 会执行:
# 1. API规范一致性检查
# 2. 性能测试
# 3. 安全测试
# 4. 契约测试🛠️ 工具链集成
现有工具保持不变
- OpenAPI Generator: 继续用于代码生成
- Swagger UI: 继续用于API文档展示
- Postman/Insomnia: 继续用于API调试
- 测试框架: JUnit、pytest、Jest等保持不变
SOLO增强的工具能力
bash
# 1. 项目初始化增强
node scripts/project-generator.js
# 新增选项: "SOLO + API-First 集成项目"
# 2. 文档管理增强
node scripts/docs-manager.js
# 自动包含 .solo/ 目录的文档
# 3. 构建流程增强
npm run docs:build
# 自动生成包含SOLO文档的完整文档站CI/CD集成示例
yaml
# .github/workflows/api-with-solo.yml
name: API with SOLO Pipeline
on: [push, pull_request]
jobs:
solo-quality-gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Check SOLO Project Status
run: |
# 检查SOLO文档完整性
test -f .solo/docs/PRD.md || exit 1
test -f .solo/docs/PROJECT_PLAN.md || exit 1
echo "✅ SOLO documents are complete"
- name: Validate OpenAPI Spec
run: |
npx @redocly/cli lint api-spec.yaml
echo "✅ OpenAPI spec is valid"
- name: Generate and Test Code
run: |
# 生成代码
openapi-generator generate -i api-spec.yaml -g spring -o ./generated
# 运行SOLO增强的测试
mvn test
# 检查测试覆盖率
mvn jacoco:report
echo "✅ Tests passed with adequate coverage"
- name: SOLO Quality Report
run: |
# 生成SOLO质量报告
/solo__status > solo-status-report.md
# 上传报告作为artifact
echo "✅ SOLO quality report generated"📊 集成效果对比
集成前 (纯API-First)
开发流程:
API设计 → OpenAPI规范 → 代码生成 → 业务实现 → 测试 → 部署
时间分布:
- API设计: 20%
- 编码实现: 60%
- 测试调试: 15%
- 部署运维: 5%
常见问题:
- 需求理解不一致
- API设计缺乏业务上下文
- 测试覆盖不全面
- 文档和实现脱节集成后 (SOLO + API-First)
开发流程:
需求分析 → 架构设计 → OpenAPI规范 → 代码生成 → TDD实现 → 质量保证 → 部署
时间分布:
- 需求分析: 15%
- 架构设计: 15%
- TDD实现: 50%
- 质量保证: 15%
- 部署运维: 5%
效果改善:
- ✅ 需求明确,减少返工
- ✅ API设计有业务依据
- ✅ TDD保证代码质量
- ✅ 文档与代码同步
- ✅ 全面的质量门控🎯 迁移策略
新项目采用 (推荐)
bash
# 1. 直接使用SOLO+API-First模式
/solo 创建新的API项目
# 2. 按照四阶段流程开发
# 3. 享受完整的工具链支持现有项目迁移
bash
# 1. 为现有项目添加SOLO上下文
mkdir .solo
/solo__status # 分析现有项目状态
# 2. 补充SOLO文档
/solo__switch product # 为现有API补充PRD
/solo__switch architect # 补充架构文档
# 3. 渐进式采用
# 可以只在新功能开发时使用SOLO团队培训计划
第1周: SOLO概念和API-First集成理论
第2周: 动手体验SOLO快速开始指南
第3周: 在实际项目中试点SOLO模式
第4周: 总结经验,优化团队SOLO流程🏆 成功案例
用户管理API项目
项目背景: 为微服务架构提供统一用户认证服务
SOLO应用:
- PRODUCT阶段: 澄清了7个微服务的用户管理需求
- ARCHITECT阶段: 设计了RESTful API和JWT认证方案
- ENGINEER阶段: 通过TDD实现了100%测试覆盖率
- QA阶段: 通过性能测试,支持5000+并发
结果:
- 开发时间缩短30%
- Bug数量减少60%
- API文档与实现100%同步
- 团队对需求理解一致性提升90%
电商订单API项目
项目背景: 重构现有订单系统,提供OpenAPI规范的服务
SOLO应用:
- 基于现有业务逻辑补充了完整的PRD
- 重新设计了RESTful API架构
- 使用TDD方法确保业务逻辑正确性
- 建立了完整的API测试套件
结果:
- API响应时间优化50%
- 系统稳定性提升40%
- 开发文档维护成本降低70%
💡 最佳实践
1. 文档同步策略
bash
# 建立文档自动同步机制
# 1. PRD变更时,自动更新OpenAPI规范
# 2. OpenAPI规范变更时,自动生成代码
# 3. 代码变更时,自动更新测试2. 质量门控设置
yaml
# .solo/config/quality-gates.yaml
quality_gates:
product:
- prd_completeness: 100%
- user_stories_coverage: 100%
architect:
- api_spec_validation: pass
- security_review: pass
engineer:
- test_coverage: 80%
- code_quality: A
qa:
- integration_tests: pass
- performance_benchmarks: pass3. 团队协作模式
角色映射:
- 产品经理 → SOLO Product Manager
- 架构师 → SOLO Architect
- 开发工程师 → SOLO Engineer
- 测试工程师 → SOLO QA Engineer
协作流程:
1. 产品经理使用SOLO完成需求分析
2. 架构师基于PRD设计API规范
3. 开发工程师使用现有工具生成代码,用SOLO进行TDD实现
4. 测试工程师使用SOLO进行全面质量保证🔗 相关资源
文档链接
工具资源
示例项目
🎯 总结: SOLO与API-First的集成不是替代现有流程,而是在其基础上提供更完整的上游需求分析和下游质量保证,形成从产品需求到API交付的完整闭环。这种集成方式让团队既能享受API-First的技术优势,又能获得SOLO的流程标准化收益。