# D8D Starter 现有系统架构文档 ## 介绍 本文档记录了 D8D Starter 代码库的当前状态,包括技术债务、变通方案和实际使用模式。它作为 AI 代理进行增强开发时的参考文档。 ### 文档范围 全面记录整个系统架构 ### 变更日志 | 日期 | 版本 | 描述 | 作者 | | ---------- | ---- | -------------------- | -------- | | 2024-09-14 | 1.0 | 初始现有系统分析 | Winston | ## 快速参考 - 关键文件和入口点 ### 理解系统的关键文件 - **主入口**: `server.js` - Node.js 服务器启动文件 - **配置**: `src/server/data-source.ts` - 数据库配置 - **核心业务逻辑**: `src/server/api/` - API 路由处理 - **数据库模型**: `src/server/modules/` - TypeORM 实体 - **前端入口**: `src/client/index.tsx` - React 应用入口 ## 高级架构 ### 技术摘要 ### 实际技术栈 (来自 package.json) | 类别 | 技术 | 版本 | 备注 | | ---------- | ------------ | -------- | ------------------------- | | 运行时 | Node.js | 20.18.3 | ES 模块 | | 框架 | Hono | 4.8.5 | Web 框架 | | 前端框架 | React | 19.1.0 | 最新版本 | | 构建工具 | Vite | 7.0.0 | 开发服务器和构建工具 | | 数据库 | MySQL | 8.0.36 | 通过 TypeORM | | ORM | TypeORM | 0.3.25 | 数据库操作 | | 样式 | Tailwind CSS | 4.1.11 | 原子化 CSS 框架 | | 状态管理 | React Query | 5.83.0 | 服务端状态管理 | | 认证 | JWT | 9.0.2 | JSON Web Token | ### 仓库结构现状检查 - **类型**: Monorepo (前后端在同一仓库) - **包管理器**: pnpm (通过 pnpm-lock.yaml) - **构建系统**: Vite + 自定义服务器配置 ## 源码树和模块组织 ### 项目结构 (实际) ```text d8d-starter/ ├── src/ │ ├── client/ # 前端 React 代码 │ │ ├── admin/ # 管理后台界面 │ │ ├── home/ # 用户主页界面 │ │ ├── components/ # 共享组件 │ │ ├── hooks/ # React Hooks │ │ └── lib/ # 工具库 │ ├── server/ # 后端 Node.js 代码 │ │ ├── api/ # API 路由处理 │ │ │ ├── auth/ # 认证相关路由 │ │ │ ├── users/ # 用户管理路由 │ │ │ └── roles/ # 角色管理路由 │ │ ├── modules/ # 业务模块 │ │ ├── middleware/ # 中间件 │ │ ├── types/ # TypeScript 类型定义 │ │ └── utils/ # 工具函数 │ └── share/ # 前后端共享代码 ├── dist/ # 构建输出目录 ├── scripts/ # 构建和部署脚本 └── config/ # 配置文件 ``` ### 关键模块及其用途 - **用户管理**: `src/server/modules/users/` - 处理所有用户操作 - **认证系统**: `src/server/api/auth/` - JWT 认证实现 - **数据库连接**: `src/server/data-source.ts` - TypeORM 数据源配置 - **API 路由**: `src/server/api.ts` - 主 API 路由配置 - **前端路由**: `src/client/admin/routes.tsx` - React Router 配置 ## 数据模型和 API ### 数据模型 - **用户模型**: 参见 `src/server/modules/users/user.entity.ts` - **角色模型**: 参见 `src/server/modules/users/role.entity.ts` - **相关类型**: TypeScript 定义在 `src/share/types/` ### API 规范 - **OpenAPI 文档**: 通过 `/ui` 端点提供 Swagger UI - **API 版本**: v1 (`/api/v1/` 前缀) - **认证方式**: Bearer Token (JWT) ## 技术债务和已知问题 ### 关键技术债务 1. **生产环境模板处理**: `server.js` 中的模板处理逻辑较为复杂,需要简化 2. **错误处理**: 错误处理中间件需要更完善的错误分类和日志记录 3. **环境配置**: 缺少完整的 `.env` 文件示例,环境变量管理需要改进 4. **类型安全**: 部分代码使用了 `any` 类型,需要更严格的类型定义 ### 变通方案和注意事项 - **开发环境**: Vite 开发服务器与 Hono 服务器集成较为复杂 - **生产构建**: 需要分别构建客户端和服务端代码 - **数据库同步**: 开发环境下默认启用数据库同步 (`synchronize: true`) - **静态资源**: 生产环境使用 sirv 中间件提供静态文件服务 ## 集成点和外部依赖 ### 外部服务 | 服务 | 用途 | 集成类型 | 关键文件 | | -------- | -------- | -------- | ---------------------------- | | MySQL | 数据库 | TypeORM | `src/server/data-source.ts` | | Redis | 缓存 | 未实现 | (计划中) | | MinIO | 对象存储 | 未实现 | (计划中) | ### 内部集成点 - **前后端通信**: REST API 在端口 8080 - **认证集成**: JWT token 通过 Authorization header 传递 - **数据库集成**: TypeORM 提供数据库抽象层 ## 开发和部署 ### 本地开发设置 1. 运行 `docker-compose up` 启动依赖服务 2. 运行 `npm run dev` 启动开发服务器 3. 访问 `http://localhost:8080` ### 构建和部署流程 - **开发构建**: `npm run dev` (Vite 开发服务器) - **生产构建**: `npm run build` (分别构建客户端和服务端) - **生产启动**: `npm start` (Node.js 生产服务器) ## 测试现状 ### 当前测试覆盖率 - **单元测试**: 未配置测试框架 - **集成测试**: 无 - **E2E 测试**: 无 - **手动测试**: 主要 QA 方法 ### 运行测试 ```bash # 目前没有配置测试命令 ``` ## 附录 - 有用命令和脚本 ### 常用命令 ```bash npm run dev # 启动开发服务器 npm run build # 生产环境构建 npm start # 启动生产服务器 docker-compose up # 启动依赖服务 ``` ### 调试和故障排除 - **日志**: 查看控制台输出获取应用日志 - **调试模式**: 设置 `DEBUG=*` 环境变量获取详细日志 - **数据库**: 通过 phpMyAdmin (端口 38090) 管理数据库 ## 开发注意事项 ### 代码风格和约定 - **TypeScript**: 严格模式启用,建议使用严格类型 - **导入别名**: 使用 `@/` 作为 `src/` 的别名 - **错误处理**: 使用统一的错误处理中间件 - **API 设计**: 遵循 RESTful 原则,使用 OpenAPI 规范 ### 性能考虑 - **数据库连接**: 使用连接池管理数据库连接 - **静态资源**: 生产环境使用压缩中间件 - **SSR 渲染**: 支持服务端渲染,但当前未完全启用 ### 安全考虑 - **环境变量**: 敏感配置通过环境变量管理 - **认证**: JWT token 认证,需要实现更完善的权限控制 - **输入验证**: 使用 Zod 进行请求参数验证 这个文档提供了 D8D Starter 项目的完整架构概览,包括当前的技术债务和需要注意的事项。随着项目的演进,这个文档应该定期更新以反映最新的系统状态。