第二章:系统架构设计 - AI 架构师的设计思路

本章节我将展示如何让 Kiro 从需求文档生成专业的系统架构设计,体验 AI 架构师的设计思维。

在上一章中,我们已经通过 Spec Coding 获得了一份专业的需求文档。现在是时候让 AI 架构师登场,为我们的智能测试平台设计一个可扩展、高性能的系统架构。

第一步:向 Kiro 提出架构设计需求

我使用了这样的提示词:

基于上一章生成的需求文档,请为智能测试平台设计完整的系统架构。需要包含:

  1. 整体架构图和技术栈选择
  2. 前后端分离的详细设计
  3. 数据库设计方案
  4. API 接口规范
  5. 部署架构建议

重点考虑:可扩展性、性能、安全性、开发效率

第二步:Kiro 生成的架构设计文档

整体架构设计

┌─────────────────────────────────────────────────────────────┐
│                    智能测试平台架构图                          │
├─────────────────────────────────────────────────────────────┤
│  前端层 (Frontend Layer)                                    │
│  ┌─────────────────────────────────────────────────────┐    │
│  │  React 18 + TypeScript + Tailwind CSS              │    │
│  │  ├── 用户认证模块                                    │    │
│  │  ├── 测试用例管理                                    │    │
│  │  ├── API 测试界面                                   │    │
│  │  ├── UI 自动化测试                                  │    │
│  │  ├── AI 聊天助手                                    │    │
│  │  └── 实时监控面板                                    │    │
│  └─────────────────────────────────────────────────────┘    │
│                           │                                  │
│                    HTTPS/WebSocket                          │
│                           │                                  │
├─────────────────────────────────────────────────────────────┤
│  API 网关层 (API Gateway)                                   │
│  ┌─────────────────────────────────────────────────────┐    │
│  │  Nginx + 负载均衡                                    │    │
│  │  ├── SSL 终端                                       │    │
│  │  ├── 请求路由                                        │    │
│  │  ├── 限流控制                                        │    │
│  │  └── 静态资源服务                                     │    │
│  └─────────────────────────────────────────────────────┘    │
├─────────────────────────────────────────────────────────────┤
│  应用服务层 (Application Layer)                              │
│  ┌─────────────────────────────────────────────────────┐    │
│  │  FastAPI + Python 3.11                             │    │
│  │  ├── 认证服务 (JWT)                                 │    │
│  │  ├── 测试管理服务                                    │    │
│  │  ├── API 测试引擎                                   │    │
│  │  ├── UI 测试引擎 (Playwright)                       │    │
│  │  ├── AI 服务 (LangChain)                           │    │
│  │  ├── 报告生成服务                                    │    │
│  │  └── WebSocket 服务                                │    │
│  └─────────────────────────────────────────────────────┘    │
├─────────────────────────────────────────────────────────────┤
│  任务队列层 (Task Queue Layer)                              │
│  ┌─────────────────────────────────────────────────────┐    │
│  │  Celery + Redis                                     │    │
│  │  ├── 异步测试执行                                    │    │
│  │  ├── 定时任务调度                                    │    │
│  │  ├── 报告生成任务                                    │    │
│  │  └── 通知推送任务                                    │    │
│  └─────────────────────────────────────────────────────┘    │
├─────────────────────────────────────────────────────────────┤
│  数据存储层 (Data Storage Layer)                            │
│  ┌─────────────────────────────────────────────────────┐    │
│  │  SQLite (开发) / PostgreSQL (生产)                  │    │
│  │  ├── 用户数据                                        │    │
│  │  ├── 测试用例数据                                    │    │
│  │  ├── 执行历史                                        │    │
│  │  └── 报告数据                                        │    │
│  └─────────────────────────────────────────────────────┘    │
│  ┌─────────────────────────────────────────────────────┐    │
│  │  Redis 缓存                                         │    │
│  │  ├── 会话存储                                        │    │
│  │  ├── 任务队列                                        │    │
│  │  └── 实时数据缓存                                     │    │
│  └─────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────┘

技术栈选择与理由

前端技术栈

后端技术栈

AI 集成

数据库设计方案

-- 用户管理表
CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    email VARCHAR(255) UNIQUE NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    full_name VARCHAR(255),
    role VARCHAR(50) DEFAULT 'tester',
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 测试项目表
CREATE TABLE projects (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name VARCHAR(255) NOT NULL,
    description TEXT,
    owner_id INTEGER REFERENCES users(id),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 测试用例表
CREATE TABLE test_cases (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title VARCHAR(255) NOT NULL,
    description TEXT,
    steps TEXT,
    expected_result TEXT,
    priority VARCHAR(20) DEFAULT 'medium',
    status VARCHAR(20) DEFAULT 'active',
    project_id INTEGER REFERENCES projects(id),
    created_by INTEGER REFERENCES users(id),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- API 测试表
CREATE TABLE api_tests (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name VARCHAR(255) NOT NULL,
    method VARCHAR(10) NOT NULL,
    url VARCHAR(500) NOT NULL,
    headers TEXT, -- JSON 格式
    body TEXT,
    expected_status INTEGER,
    expected_response TEXT,
    project_id INTEGER REFERENCES projects(id),
    created_by INTEGER REFERENCES users(id),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- UI 测试表
CREATE TABLE ui_tests (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name VARCHAR(255) NOT NULL,
    script TEXT NOT NULL, -- Playwright 脚本
    target_url VARCHAR(500),
    browser VARCHAR(50) DEFAULT 'chromium',
    project_id INTEGER REFERENCES projects(id),
    created_by INTEGER REFERENCES users(id),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 测试执行历史表
CREATE TABLE test_executions (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    test_type VARCHAR(20) NOT NULL, -- 'api', 'ui', 'manual'
    test_id INTEGER NOT NULL,
    status VARCHAR(20) NOT NULL, -- 'running', 'passed', 'failed'
    result TEXT, -- JSON 格式的详细结果
    duration INTEGER, -- 执行时间(毫秒)
    executed_by INTEGER REFERENCES users(id),
    executed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 测试报告表
CREATE TABLE test_reports (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name VARCHAR(255) NOT NULL,
    project_id INTEGER REFERENCES projects(id),
    total_tests INTEGER DEFAULT 0,
    passed_tests INTEGER DEFAULT 0,
    failed_tests INTEGER DEFAULT 0,
    report_data TEXT, -- JSON 格式
    generated_by INTEGER REFERENCES users(id),
    generated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

API 接口规范

认证相关接口

# 用户注册
POST /api/auth/register
{
    "email": "user@example.com",
    "password": "password123",
    "full_name": "Test User"
}

# 用户登录
POST /api/auth/login
{
    "email": "user@example.com",
    "password": "password123"
}

# 获取用户信息
GET /api/auth/me
Authorization: Bearer <token>

测试用例管理接口

# 获取测试用例列表
GET /api/test-cases?project_id=1&page=1&limit=20

# 创建测试用例
POST /api/test-cases
{
    "title": "登录功能测试",
    "description": "验证用户登录功能",
    "steps": "1. 输入用户名\n2. 输入密码\n3. 点击登录",
    "expected_result": "成功登录到系统",
    "priority": "high",
    "project_id": 1
}

# 更新测试用例
PUT /api/test-cases/{id}

# 删除测试用例
DELETE /api/test-cases/{id}

API 测试接口

# 执行 API 测试
POST /api/api-tests/execute
{
    "method": "GET",
    "url": "https://api.example.com/users",
    "headers": {"Authorization": "Bearer token"},
    "expected_status": 200
}

# 获取 API 测试历史
GET /api/api-tests/history?test_id=1

UI 测试接口

# 执行 UI 测试
POST /api/ui-tests/execute
{
    "script": "await page.goto('https://example.com'); await page.click('#login');",
    "browser": "chromium"
}

# 获取测试截图
GET /api/ui-tests/screenshot/{execution_id}

部署架构建议

开发环境

# docker-compose.dev.yml
version: '3.8'
services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    volumes:
      - ./frontend:/app

  backend:
    build: ./backend
    ports:
      - "8000:8000"
    volumes:
      - ./backend:/app
    environment:
      - DATABASE_URL=sqlite:///./test.db
      - REDIS_URL=redis://redis:6379

  redis:
    image: redis:alpine
    ports:
      - "6379:6379"

  celery:
    build: ./backend
    command: celery -A app.celery_app worker --loglevel=info
    volumes:
      - ./backend:/app
    depends_on:
      - redis

生产环境

# docker-compose.prod.yml
version: '3.8'
services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./ssl:/etc/ssl

  frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile.prod

  backend:
    build:
      context: ./backend
      dockerfile: Dockerfile.prod
    environment:
      - DATABASE_URL=postgresql://user:pass@postgres:5432/testdb
      - REDIS_URL=redis://redis:6379

  postgres:
    image: postgres:15
    environment:
      - POSTGRES_DB=testdb
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
    volumes:
      - postgres_data:/var/lib/postgresql/data

  redis:
    image: redis:alpine

  celery:
    build:
      context: ./backend
      dockerfile: Dockerfile.prod
    command: celery -A app.celery_app worker --loglevel=info

volumes:
  postgres_data:

第三步:架构设计亮点分析

1. 微服务化设计

2. 性能优化

3. 安全考虑

4. 可扩展性

总结

通过 Spec Coding,我们获得了一个专业的系统架构设计。AI 架构师不仅考虑了技术实现,还兼顾了性能、安全、可扩展性等多个维度。

在下一章中,我们将开始前端框架的搭建,看看 AI 如何帮助我们快速搭建现代化的 React 应用。


下期预告:第三章将展示如何使用 Kiro 快速搭建 React + TypeScript + Tailwind CSS 的前端项目,包括项目初始化、组件库配置、路由设计等内容。

讨论交流:欢迎在评论区分享你的想法和问题!


↙↙↙阅读原文可查看相关链接,并与作者交流