Files
16gagent/docs/architecture-agent.md
T
2026-06-06 10:40:48 +08:00

7.3 KiB

Architecture Agent

SF-02 — Automated Architecture Generation from PRD

Overview

The Architecture Agent consumes a structured PRD (from SF-01) and generates a complete technical architecture including tech stack selection, system diagram, database schema, API design, module decomposition, and directory structure.

It is domain-aware: architecture decisions are tailored to the PRD's domain (pet, ecommerce, education, enterprise, fitness, note, etc.) and platform constraints (iOS, Android, miniapp, web, desktop).

Quick Start

# From PRD file (SF-01 output)
node scripts/architecture-agent.mjs --input prd-example.json --pretty

# From one-sentence requirement (auto-invokes SF-01)
node scripts/architecture-agent.mjs --input-text "做一个电商小程序" --output architecture.json

Architecture

┌─────────────────────────────────────────────────┐
│              SF-02 Architecture Agent             │
│                                                  │
│  PRD ──▶ 1. Tech Stack Resolver                  │
│              Platform → Stack mapping            │
│              Extra features → stack adjustments  │
│                                                  │
│          2. Module Decomposer                     │
│              Feature → Module grouping           │
│              Keyword-based clustering            │
│              Domain-specific additions           │
│                                                  │
│          3. Database Designer                     │
│              API paths → resource tables         │
│              Domain → table schemas              │
│              Always: users table                 │
│                                                  │
│          4. API Designer                          │
│              Endpoint → resource grouping        │
│              Enriched endpoints                  │
│                                                  │
│          5. Architecture Diagramer                │
│              ASCII art 3-tier diagram            │
│              Client → API → DB flow              │
│                                                  │
│          6. Directory Structure                   │
│              Monorepo template                   │
│              apps/ + server/ + packages/         │
│              Module-specific directories         │
│                                                  │
│          7. Data Flow Mapper                      │
│              Page → API → DB trace               │
│                                                  │
│          8. Deployment Strategy                   │
│              Environments + CI/CD                │
│              Docker/native/build                  │
│                                                  │
│          ──────────────▶ Architecture JSON       │
└─────────────────────────────────────────────────┘

Output Schema

{
  "projectName": "PetCare",
  "domain": "pet",
  "techStack": {
    "frontend": "React Native 0.76 + Expo / Flutter 3.x",
    "backend": "NestJS + Prisma",
    "database": "PostgreSQL 15 + Redis 7 + MinIO(文件存储)",
    "deployment": "Docker Compose + Nginx / K8s(规模化)",
    "considerations": []
  },
  "architectureDiagram": "┌─────────────────────── ... ASCII art ...",
  "dataFlows": [
    {
      "page": "首页",
      "route": "/home",
      "description": "宠物卡片、今日提醒...",
      "dataFlow": ["GET /api/pets → ..."],
      "direction": "Client → API Gateway → Backend → Database → Response → Client"
    }
  ],
  "modules": [
    {
      "name": "pet",
      "label": "宠物管理",
      "features": ["宠物档案", "健康日程"],
      "responsibilities": ["提供 宠物档案 相关功能", "提供 健康日程 相关功能"]
    }
  ],
  "databaseSchema": [
    {
      "table": "users",
      "description": "用户表",
      "fields": [
        { "name": "id", "type": "UUID", "constraints": "PK, DEFAULT gen_random_uuid()" }
      ]
    }
  ],
  "apiDesign": [
    {
      "resource": "pets",
      "basePath": "/api/pets",
      "endpoints": [
        { "method": "GET", "path": "/api/pets", "description": "..." }
      ]
    }
  ],
  "directoryStructure": [
    "petcare/",
    "├── apps/",
    "├── server/",
    "└── docker-compose.yml"
  ],
  "deployment": {
    "environments": ["development", "staging", "production"],
    "strategy": "Docker Compose + Nginx / K8s(规模化)",
    "services": ["API Server (NestJS)", "PostgreSQL 15", "Redis 7"],
    "ci": "GitHub Actions → Build → Test → Deploy"
  }
}

Tech Stack Selection

Automatic stack selection based on platforms:

Platforms Frontend Backend Database
wechat-miniapp 微信小程序原生 / Taro 云函数 / Node.js 云数据库 + MySQL
miniapp uni-app 3.x Node.js + Koa2/NestJS PostgreSQL + Redis
ios SwiftUI Vapor / Node.js PostgreSQL + Redis
android Jetpack Compose Spring Boot / Ktor PostgreSQL + Redis
web React 19 + Vite NestJS / Fastify PostgreSQL + Redis
mobile+web React Native / Flutter NestJS + Prisma PostgreSQL + Redis + MinIO
default React 19 + Vite NestJS + Prisma PostgreSQL + Redis

Extra feature adjustments:

  • wechat-pay / alipay → payment SDK integration note
  • logistics-tracking → logistics API note
  • real-time → WebSocket (Socket.io)
  • ai-powered → AI service (OpenAI / 文心)

Database Design

Domain-specific table generation:

Domain Tables
pet users, pets, schedules, daily_logs
ecommerce users, products, orders, order_items, logistics
education users, courses, lessons, exercises, user_progress
enterprise users, departments, approvals, approval_steps, attendance
fitness users, checkins, training_plans
note users, notes, tags, note_tags
generic users, items

All schemas include proper foreign keys, indexes, and constraints.

Module Decomposition

Features are grouped into modules by keyword matching:

Pattern Module
用户/登录/注册/权限 auth
设置/偏好/配置 settings
通知/提醒/推送 notification
上传/文件/图片 storage
统计/报告/分析 analytics
支付/订单/购物车 payment
审批/流程/考勤 workflow

Domain-specific modules are injected automatically (e.g., product + order for ecommerce).

Downstream Integration

Architecture JSON is designed for:

  • SF-03 (Design Agent): Reads pages, dataFlows → UI wireframes
  • SF-04 (Dev Agent): Reads directoryStructure, modules, databaseSchema → project scaffolding
  • SF-05 (QA Agent): Reads apiDesign, dataFlows → test plans

Test Coverage

57 tests across 16 suites.

node --test test/architecture-agent.test.mjs