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 notelogistics-tracking→ logistics API notereal-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