# 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 (可选) ```graphql 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! } ``` ## 部署架构 ### 开发环境 ```yaml services: postgres: PostgreSQL 数据库 redis: Redis 缓存 backend: Express.js API 服务 frontend: React 开发服务器 nginx: 反向代理 ``` ### 生产环境 ```yaml 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网站账号共享系统提供了坚实的基础。