Files
ai/ARCHITECTURE.md
2025-07-08 00:52:10 +08:00

9.2 KiB
Raw Blame History

Pandora 系统架构设计

整体架构

Pandora 采用现代化的微服务架构,前后端分离,支持容器化部署。

技术栈

前端: Vue 3 + TypeScript + Tailwind CSS + Vite 后端: Node.js + Express.js + TypeScript + Prisma 数据库: PostgreSQL + Redis 部署: Docker + Docker Compose + Nginx

核心功能模块

  1. 用户认证系统 - 多路径登录、二步验证
  2. 权限管理系统 - 基于角色的访问控制
  3. 账号管理系统 - 网站账号token存储和分配
  4. 后台管理系统 - 用户和权限管理界面

安全特性

  • JWT身份验证
  • 密码加密存储
  • 二步验证(TOTP/邮箱)
  • API限流保护
  • 审计日志记录

部署架构

  • 开发环境: Docker Compose
  • 生产环境: 支持负载均衡和监控
  • 数据库: PostgreSQL主从复制
  • 缓存: Redis集群

数据库设计

核心表结构

  • users: 用户信息
  • paths: 登录路径
  • user_paths: 用户路径权限
  • website_accounts: 网站账号
  • account_assignments: 账号分配
  • sessions: 用户会话
  • audit_logs: 审计日志

API设计

RESTful API设计支持用户管理、权限管理、账号管理等核心功能。

监控和日志

  • 健康检查端点
  • 性能监控
  • 错误追踪
  • 访问日志
┌─────────────────────────────────────────────────────────────┐
│                        用户层                                │
├─────────────────────────────────────────────────────────────┤
│  Domain A (path1.com)  │  Domain B (path2.com)  │  Domain C │
└─────────────────────────────────────────────────────────────┘
                              │
                    ┌─────────────────┐
                    │   Nginx Proxy   │
                    │   (Load Bal.)   │
                    └─────────────────┘
                              │
                    ┌─────────────────┐
                    │   Frontend      │
                    │   (React SPA)   │
                    └─────────────────┘
                              │
                    ┌─────────────────┐
                    │   Backend API   │
                    │   (Express.js)  │
                    └─────────────────┘
                              │
         ┌────────────────────┼────────────────────┐
         │                    │                    │
┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐
│   PostgreSQL    │  │     Redis       │  │   File Storage  │
│   (Main DB)     │  │   (Cache/Session)│  │   (Uploads)     │
└─────────────────┘  └─────────────────┘  └─────────────────┘

技术栈选择

前端技术栈

  • React 18: 现代化的前端框架,支持并发特性
  • TypeScript: 类型安全,提高开发效率和代码质量
  • Vite: 快速的构建工具,支持热重载
  • Tailwind CSS: 实用优先的CSS框架快速构建UI
  • React Router: 客户端路由管理
  • React Query: 数据获取和缓存管理
  • Zustand: 轻量级状态管理
  • React Hook Form: 表单处理
  • React Hot Toast: 通知组件

后端技术栈

  • Node.js: JavaScript运行时
  • Express.js: 轻量级Web框架
  • TypeScript: 类型安全
  • Prisma: 现代化数据库ORM
  • PostgreSQL: 关系型数据库
  • Redis: 缓存和会话存储
  • JWT: 身份验证
  • bcrypt: 密码加密
  • nodemailer: 邮件发送
  • speakeasy: TOTP生成

基础设施

  • Docker: 容器化部署
  • Docker Compose: 多服务编排
  • Nginx: 反向代理和负载均衡
  • Let's Encrypt: SSL证书

安全架构

认证机制

  1. 多因素认证: 支持邮箱验证码和TOTP
  2. JWT Token: 无状态的身份验证
  3. 会话管理: Redis存储会话信息
  4. 密码安全: bcrypt加密支持盐值

权限控制

  1. 基于角色的访问控制(RBAC): 用户、管理员、超级管理员
  2. 路径权限: 用户只能访问被授权的路径
  3. 账号权限: 用户只能访问被分配的账号
  4. API权限: 基于角色的API访问控制

数据安全

  1. 敏感数据加密: 使用AES加密存储token
  2. SQL注入防护: 使用Prisma ORM
  3. XSS防护: 输入验证和输出转义
  4. CSRF防护: Token验证
  5. 限流保护: API访问频率限制

API设计

RESTful API

认证相关:
POST   /api/auth/register     - 用户注册
POST   /api/auth/login        - 用户登录
POST   /api/auth/logout       - 用户登出
POST   /api/auth/verify-email - 邮箱验证
POST   /api/auth/verify-totp  - TOTP验证

用户管理:
GET    /api/users             - 获取用户列表
GET    /api/users/:id         - 获取用户详情
PUT    /api/users/:id         - 更新用户信息
DELETE /api/users/:id         - 删除用户

路径管理:
GET    /api/paths             - 获取路径列表
GET    /api/paths/:id         - 获取路径详情
POST   /api/paths             - 创建路径
PUT    /api/paths/:id         - 更新路径
DELETE /api/paths/:id         - 删除路径

账号管理:
GET    /api/accounts          - 获取账号列表
GET    /api/accounts/:id      - 获取账号详情
POST   /api/accounts          - 创建账号
PUT    /api/accounts/:id      - 更新账号
DELETE /api/accounts/:id      - 删除账号

权限管理:
GET    /api/permissions       - 获取权限列表
POST   /api/permissions       - 分配权限
DELETE /api/permissions/:id   - 撤销权限

GraphQL API (可选)

type Query {
  users: [User!]!
  user(id: ID!): User
  paths: [Path!]!
  accounts: [Account!]!
}

type Mutation {
  createUser(input: CreateUserInput!): User!
  updateUser(id: ID!, input: UpdateUserInput!): User!
  assignPermission(input: AssignPermissionInput!): Permission!
}

部署架构

开发环境

services:
  postgres: PostgreSQL 数据库
  redis: Redis 缓存
  backend: Express.js API 服务
  frontend: React 开发服务器
  nginx: 反向代理

生产环境

services:
  postgres: PostgreSQL 数据库 (主从复制)
  redis: Redis 集群
  backend: Express.js API 服务 (负载均衡)
  frontend: Nginx 静态文件服务
  nginx: 反向代理和SSL终止
  prometheus: 监控服务
  grafana: 监控面板

监控和日志

应用监控

  • 健康检查: 每个服务都有健康检查端点
  • 性能监控: 使用Prometheus收集指标
  • 错误追踪: 集成错误监控服务
  • 日志聚合: 集中化日志管理

安全监控

  • 访问日志: 记录所有API访问
  • 审计日志: 记录敏感操作
  • 异常检测: 检测异常访问模式
  • 实时告警: 安全事件实时通知

扩展性设计

水平扩展

  • 无状态设计: 后端服务无状态,支持水平扩展
  • 数据库分片: 支持数据库水平分片
  • 缓存分层: 多级缓存策略
  • CDN集成: 静态资源CDN加速

功能扩展

  • 插件系统: 支持功能插件扩展
  • API版本控制: 支持API版本管理
  • 多租户: 支持多租户架构
  • 国际化: 支持多语言

性能优化

前端优化

  • 代码分割: 按路由分割代码
  • 懒加载: 组件和图片懒加载
  • 缓存策略: 静态资源缓存
  • 预加载: 关键资源预加载

后端优化

  • 数据库索引: 优化查询性能
  • 连接池: 数据库连接池管理
  • 缓存策略: Redis缓存热点数据
  • 异步处理: 非关键操作异步处理

故障恢复

高可用性

  • 服务冗余: 关键服务多实例部署
  • 数据库备份: 定期数据库备份
  • 故障转移: 自动故障转移机制
  • 灾难恢复: 完整的灾难恢复计划

数据保护

  • 数据备份: 定期数据备份
  • 版本控制: 数据版本管理
  • 加密存储: 敏感数据加密
  • 访问控制: 严格的数据访问控制

开发流程

代码管理

  • Git工作流: 基于Git的版本控制
  • 代码审查: 强制代码审查
  • 自动化测试: 单元测试和集成测试
  • CI/CD: 持续集成和部署

质量保证

  • 代码规范: ESLint和Prettier
  • 类型检查: TypeScript严格模式
  • 测试覆盖: 高测试覆盖率
  • 安全扫描: 定期安全扫描

这个架构设计确保了系统的安全性、可扩展性和可维护性为Pandora网站账号共享系统提供了坚实的基础。