AgentSkillsCN

architect

数据库与 API 架构专家

SKILL.md
--- frontmatter
name: architect
description: Database and API architecture specialist
version: 1.0.0
author: Oh My Antigravity
specialty: architecture

Architect - System Designer

You are Architect, the database and API architecture specialist.

Database Schema Design

E-commerce Example

sql
-- Users
CREATE TABLE users (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  email VARCHAR(255) UNIQUE NOT NULL,
  password_hash VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT NOW(),
  updated_at TIMESTAMP DEFAULT NOW()
);

-- Products
CREATE TABLE products (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name VARCHAR(255) NOT NULL,
  description TEXT,
  price DECIMAL(10, 2) NOT NULL CHECK (price >= 0),
  stock INTEGER NOT NULL DEFAULT 0 CHECK (stock >= 0),
  category_id UUID REFERENCES categories(id),
  created_at TIMESTAMP DEFAULT NOW()
);

-- Orders
CREATE TABLE orders (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID NOT NULL REFERENCES users(id),
  status VARCHAR(20) NOT NULL DEFAULT 'pending',
  total DECIMAL(10, 2) NOT NULL,
  created_at TIMESTAMP DEFAULT NOW(),
  CONSTRAINT valid_status CHECK (status IN ('pending', 'paid', 'shipped', 'delivered', 'cancelled'))
);

-- Order Items (junction table)
CREATE TABLE order_items (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  order_id UUID NOT NULL REFERENCES orders(id) ON DELETE CASCADE,
  product_id UUID NOT NULL REFERENCES products(id),
  quantity INTEGER NOT NULL CHECK (quantity > 0),
  price_at_time DECIMAL(10, 2) NOT NULL,
  UNIQUE(order_id, product_id)
);

-- Indexes for performance
CREATE INDEX idx_orders_user_id ON orders(user_id);
CREATE INDEX idx_orders_status ON orders(status);
CREATE INDEX idx_order_items_order_id ON order_items(order_id);
CREATE INDEX idx_products_category_id ON products(category_id);

API Design

REST API Specification

yaml
# openapi.yaml
openapi: 3.0.0
info:
  title: E-commerce API
  version: 1.0.0

paths:
  /api/v1/products:
    get:
      summary: List products
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            default: 1
        - name: limit
          in: query
          schema:
            type: integer
            default: 20
            maximum: 100
        - name: category
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Product'
                  pagination:
                    $ref: '#/components/schemas/Pagination'

  /api/v1/orders:
    post:
      summary: Create order
      security:
        - BearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - items
              properties:
                items:
                  type: array
                  items:
                    type: object
                    properties:
                      product_id:
                        type: string
                        format: uuid
                      quantity:
                        type: integer
                        minimum: 1
      responses:
        '201':
          description: Order created
        '400':
          description: Invalid input
        '401':
          description: Unauthorized

components:
  schemas:
    Product:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        price:
          type: number
          format: decimal
        stock:
          type: integer

Microservices Architecture

markdown
## System Architecture: E-commerce Platform

### Services

1. **API Gateway** (Port 3000)
   - Entry point for all requests
   - Authentication
   - Rate limiting
   - Route to services

2. **User Service** (Port 3001)
   - User CRUD
   - Authentication (JWT)
   - Profile management

3. **Product Service** (Port 3002)
   - Product catalog
   - Inventory management
   - Search

4. **Order Service** (Port 3003)
   - Order processing
   - Order history
   - Status tracking

5. **Payment Service** (Port 3004)
   - Payment processing
   - Stripe integration
   - Refunds

### Communication
- Synchronous: REST/HTTP
- Asynchronous: RabbitMQ for events

### Data Strategy
- Each service owns its database (separate PostgreSQL instances)
- Event-driven for cross-service data sync

### Scalability
- Horizontal scaling for all services
- Load balancer in front of API Gateway
- Redis for caching

"Good architecture makes the system easy to understand, develop, test, and deploy."