|
|
@@ -922,4 +922,307 @@ shadcn-admin-template/
|
|
|
"dev:api": "turbo run dev --filter=api"
|
|
|
}
|
|
|
}
|
|
|
-```
|
|
|
+```
|
|
|
+
|
|
|
+## 12. Development Workflow
|
|
|
+
|
|
|
+定义全栈应用程序的开发设置和工作流:
|
|
|
+
|
|
|
+### 12.1 Local Development Setup
|
|
|
+
|
|
|
+#### Prerequisites
|
|
|
+```bash
|
|
|
+# 检查Node.js版本
|
|
|
+node --version # 需要 >= 20.18.3
|
|
|
+
|
|
|
+# 检查Docker和Docker Compose
|
|
|
+docker --version
|
|
|
+docker-compose --version
|
|
|
+
|
|
|
+# 检查MySQL和Redis客户端
|
|
|
+mysql --version
|
|
|
+redis-cli --version
|
|
|
+```
|
|
|
+
|
|
|
+#### Initial Setup
|
|
|
+```bash
|
|
|
+# 克隆项目
|
|
|
+git clone <repository-url>
|
|
|
+cd shadcn-admin-template
|
|
|
+
|
|
|
+# 安装依赖
|
|
|
+npm install
|
|
|
+
|
|
|
+# 复制环境变量文件
|
|
|
+cp .env.example .env
|
|
|
+
|
|
|
+# 启动开发环境
|
|
|
+npm run dev
|
|
|
+
|
|
|
+# 或者启动特定服务
|
|
|
+npm run dev:admin # 只启动管理后台
|
|
|
+npm run dev:api # 只启动API服务
|
|
|
+```
|
|
|
+
|
|
|
+#### Development Commands
|
|
|
+```bash
|
|
|
+# 启动所有服务
|
|
|
+npm run dev
|
|
|
+
|
|
|
+# 启动前端开发服务器(管理后台)
|
|
|
+cd apps/admin && npm run dev
|
|
|
+
|
|
|
+# 启动后端开发服务器
|
|
|
+cd apps/api && npm run dev
|
|
|
+
|
|
|
+# 运行测试
|
|
|
+npm run test
|
|
|
+
|
|
|
+# 运行类型检查
|
|
|
+npm run type-check
|
|
|
+
|
|
|
+# 运行代码检查
|
|
|
+npm run lint
|
|
|
+```
|
|
|
+
|
|
|
+### 12.2 Environment Configuration
|
|
|
+
|
|
|
+#### Required Environment Variables
|
|
|
+```bash
|
|
|
+# 前端 (.env.local)
|
|
|
+VITE_API_URL=http://localhost:8080
|
|
|
+VITE_APP_NAME=shadcn管理后台
|
|
|
+
|
|
|
+# 后端 (.env)
|
|
|
+NODE_ENV=development
|
|
|
+PORT=8080
|
|
|
+JWT_SECRET=your-super-secret-jwt-key
|
|
|
+JWT_EXPIRES_IN=7d
|
|
|
+
|
|
|
+# 数据库连接
|
|
|
+DB_HOST=localhost
|
|
|
+DB_PORT=3306
|
|
|
+DB_USERNAME=root
|
|
|
+DB_PASSWORD=your-mysql-password
|
|
|
+DB_DATABASE=d8dai
|
|
|
+
|
|
|
+# Redis连接
|
|
|
+REDIS_HOST=localhost
|
|
|
+REDIS_PORT=6379
|
|
|
+REDIS_PASSWORD=
|
|
|
+
|
|
|
+# MinIO连接
|
|
|
+MINIO_ENDPOINT=localhost
|
|
|
+MINIO_PORT=9000
|
|
|
+MINIO_ACCESS_KEY=minioadmin
|
|
|
+MINIO_SECRET_KEY=minioadmin
|
|
|
+MINIO_BUCKET=uploads
|
|
|
+
|
|
|
+# 共享环境变量
|
|
|
+APP_NAME=shadcn-admin-template
|
|
|
+LOG_LEVEL=info
|
|
|
+```
|
|
|
+
|
|
|
+#### 开发环境快速启动脚本
|
|
|
+```bash
|
|
|
+#!/bin/bash
|
|
|
+# scripts/start-dev.sh
|
|
|
+
|
|
|
+echo "启动开发环境..."
|
|
|
+
|
|
|
+# 启动Docker服务
|
|
|
+docker-compose up -d
|
|
|
+
|
|
|
+# 等待数据库就绪
|
|
|
+echo "等待数据库就绪..."
|
|
|
+sleep 10
|
|
|
+
|
|
|
+# 运行数据库迁移
|
|
|
+cd apps/api && npx typeorm migration:run
|
|
|
+
|
|
|
+# 启动开发服务器
|
|
|
+cd ../.. && npm run dev
|
|
|
+```
|
|
|
+
|
|
|
+## 13. Deployment Architecture
|
|
|
+
|
|
|
+基于平台选择定义部署策略:
|
|
|
+
|
|
|
+### 13.1 部署策略
|
|
|
+
|
|
|
+**前端部署:**
|
|
|
+- **平台:** 多八多云端容器环境(8080端口)
|
|
|
+- **构建命令:** `npm run build`
|
|
|
+- **输出目录:** `dist/`
|
|
|
+- **CDN/边缘:** 容器内Nginx反向代理
|
|
|
+
|
|
|
+**后端部署:**
|
|
|
+- **平台:** 多八多云端容器环境(8080端口)
|
|
|
+- **构建命令:** `npm run build`
|
|
|
+- **部署方式:** Node.js进程管理(PM2)
|
|
|
+
|
|
|
+### 13.2 CI/CD流水线
|
|
|
+
|
|
|
+```yaml
|
|
|
+# .github/workflows/ci.yaml
|
|
|
+name: CI Pipeline
|
|
|
+
|
|
|
+on:
|
|
|
+ push:
|
|
|
+ branches: [main, develop]
|
|
|
+ pull_request:
|
|
|
+ branches: [main]
|
|
|
+
|
|
|
+jobs:
|
|
|
+ test:
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v4
|
|
|
+
|
|
|
+ - name: Setup Node.js
|
|
|
+ uses: actions/setup-node@v3
|
|
|
+ with:
|
|
|
+ node-version: '20'
|
|
|
+ cache: 'npm'
|
|
|
+
|
|
|
+ - name: Install dependencies
|
|
|
+ run: npm ci
|
|
|
+
|
|
|
+ - name: Run type check
|
|
|
+ run: npm run type-check
|
|
|
+
|
|
|
+ - name: Run linting
|
|
|
+ run: npm run lint
|
|
|
+
|
|
|
+ - name: Run tests
|
|
|
+ run: npm run test
|
|
|
+
|
|
|
+ build:
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ needs: test
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v4
|
|
|
+
|
|
|
+ - name: Setup Node.js
|
|
|
+ uses: actions/setup-node@v3
|
|
|
+ with:
|
|
|
+ node-version: '20'
|
|
|
+ cache: 'npm'
|
|
|
+
|
|
|
+ - name: Install dependencies
|
|
|
+ run: npm ci
|
|
|
+
|
|
|
+ - name: Build applications
|
|
|
+ run: npm run build
|
|
|
+
|
|
|
+ - name: Upload artifacts
|
|
|
+ uses: actions/upload-artifact@v3
|
|
|
+ with:
|
|
|
+ name: build-artifacts
|
|
|
+ path: |
|
|
|
+ apps/admin/dist
|
|
|
+ apps/api/dist
|
|
|
+```
|
|
|
+
|
|
|
+### 13.3 环境配置
|
|
|
+
|
|
|
+| 环境 | 前端URL | 后端URL | 用途 |
|
|
|
+|------|---------|---------|------|
|
|
|
+| 开发 | http://localhost:3000 | http://localhost:8080 | 本地开发 |
|
|
|
+| 测试 | http://test.example.com | http://api.test.example.com | 预生产测试 |
|
|
|
+| 生产 | http://app.example.com | http://api.example.com | 生产环境 |
|
|
|
+
|
|
|
+## 14. Security and Performance
|
|
|
+
|
|
|
+定义全栈应用程序的安全和性能考虑:
|
|
|
+
|
|
|
+### 14.1 安全要求
|
|
|
+
|
|
|
+**前端安全:**
|
|
|
+- **CSP头:** `default-src 'self'; script-src 'self' 'unsafe-inline'`
|
|
|
+- **XSS防护:** 输入验证和输出编码
|
|
|
+- **安全存储:** HTTP-only cookies存储敏感信息
|
|
|
+
|
|
|
+**后端安全:**
|
|
|
+- **输入验证:** Zod schema验证所有输入
|
|
|
+- **速率限制:** 每分钟100次请求限制
|
|
|
+- **CORS策略:** 仅允许信任的域名
|
|
|
+
|
|
|
+**认证安全:**
|
|
|
+- **令牌存储:** HTTP-only cookies + secure标志
|
|
|
+- **会话管理:** JWT短期令牌 + Redis刷新令牌
|
|
|
+- **密码策略:** 最小长度8位,包含数字和特殊字符
|
|
|
+
|
|
|
+### 14.2 性能优化
|
|
|
+
|
|
|
+**前端性能:**
|
|
|
+- **包大小目标:** < 500KB gzipped
|
|
|
+- **加载策略:** 代码分割和懒加载
|
|
|
+- **缓存策略:** Service Worker缓存静态资源
|
|
|
+
|
|
|
+**后端性能:**
|
|
|
+- **响应时间目标:** < 100ms P95
|
|
|
+- **数据库优化:** 索引优化和查询缓存
|
|
|
+- **缓存策略:** Redis缓存频繁访问数据
|
|
|
+
|
|
|
+## 15. Testing Strategy
|
|
|
+
|
|
|
+定义全栈应用程序的全面测试方法:
|
|
|
+
|
|
|
+### 15.1 测试金字塔
|
|
|
+
|
|
|
+```
|
|
|
+ E2E Tests
|
|
|
+ / \\
|
|
|
+Integration Tests
|
|
|
+ / \\
|
|
|
+Frontend Unit Backend Unit
|
|
|
+```
|
|
|
+
|
|
|
+### 15.2 测试组织
|
|
|
+
|
|
|
+**前端测试:**
|
|
|
+```
|
|
|
+apps/admin/tests/
|
|
|
+├── unit/ # 单元测试
|
|
|
+├── components/ # 组件测试
|
|
|
+├── hooks/ # Hook测试
|
|
|
+└── __mocks__/ # 测试mock
|
|
|
+```
|
|
|
+
|
|
|
+**后端测试:**
|
|
|
+```
|
|
|
+apps/api/tests/
|
|
|
+├── unit/ # 单元测试
|
|
|
+├── integration/ # 集成测试
|
|
|
+└── __mocks__/ # 测试mock
|
|
|
+```
|
|
|
+
|
|
|
+**E2E测试:**
|
|
|
+```
|
|
|
+tests/e2e/
|
|
|
+├── auth/ # 认证流程测试
|
|
|
+├── users/ # 用户管理测试
|
|
|
+└── support/ # 测试支持
|
|
|
+```
|
|
|
+
|
|
|
+## 16. Coding Standards
|
|
|
+
|
|
|
+为AI代理定义最小但关键的标准。专注于防止常见错误的项目特定规则。这些将被开发代理使用。
|
|
|
+
|
|
|
+### 16.1 关键全栈规则
|
|
|
+
|
|
|
+**类型共享:** 始终在packages/shared中定义类型并从那里导入
|
|
|
+**API调用:** 永远不要直接进行HTTP调用 - 使用服务层
|
|
|
+**环境变量:** 仅通过配置对象访问,永远不要直接使用process.env
|
|
|
+**错误处理:** 所有API路由必须使用标准错误处理程序
|
|
|
+**状态更新:** 永远不要直接改变状态 - 使用适当的状态管理模式
|
|
|
+
|
|
|
+### 16.2 命名约定
|
|
|
+
|
|
|
+| 元素 | 前端 | 后端 | 示例 |
|
|
|
+|------|------|------|------|
|
|
|
+| 组件 | PascalCase | - | `UserProfile.tsx` |
|
|
|
+| Hooks | camelCase带'use' | - | `useAuth.ts` |
|
|
|
+| API路由 | - | kebab-case | `/api/user-profile` |
|
|
|
+| 数据库表 | - | snake_case | `user_profiles` |
|