| 版本 | 日期 | 描述 | 作者 |
|---|---|---|---|
| 2.0 | 2025-09-14 | 增强架构文档 | Winston |
| 2.1 | 2025-09-19 | 添加数据库定时备份策略 | Winston |
| 2.2 | 2025-09-19 | 更新测试策略文档引用 | Winston |
| 2.3 | 2025-09-20 | 根据实际项目结构更新测试架构和共享目录 | Winston |
本文档定义了D8D Starter项目的架构增强方案,基于对现有代码的深度分析。主要目标是将技术实现转化为明确的业务价值主张,同时保持与现有系统的完全兼容。
注意: 本项目的详细架构文档已拆分为多个子文档,位于 docs/architecture/ 目录中。如需查看完整的架构文档结构,请参阅 架构文档索引。
全面定义系统增强的架构方法和集成策略
| 日期 | 版本 | 描述 | 作者 |
|---|---|---|---|
| 2024-09-14 | 1.0 | 初始现有系统分析 | Winston |
| 2025-09-14 | 2.0 | 增强架构文档 | Winston |
| 2025-09-19 | 2.1 | 添加数据库定时备份策略 | Winston |
| 2025-09-19 | 2.2 | 更新测试策略文档引用 | Winston |
| 2025-09-20 | 2.3 | 根据实际项目结构更新测试架构和共享目录 | Winston |
✅ 技术文档完整:
⚠️ 需要补充:
any类型需要修复| 类别 | 当前技术 | 版本 | 在增强中的用途 | 备注 |
|---|---|---|---|---|
| 运行时 | Node.js | 20.18.3 | 服务器运行时环境 | ES模块支持 |
| 框架 | Hono | 4.8.5 | Web框架和API路由 | RPC类型安全 |
| 前端框架 | React | 19.1.0 | 用户界面构建 | 最新版本 |
| 构建工具 | Vite | 7.0.0 | 开发服务器和构建 | 热重载支持 |
| 数据库 | PostgreSQL | 15 | 数据持久化存储 | 通过TypeORM |
| ORM | TypeORM | 0.3.25 | 数据库操作抽象 | 实体管理 |
| 样式 | Tailwind CSS | 4.1.11 | 原子化CSS框架 | 设计一致性 |
| 状态管理 | React Query | 5.83.0 | 服务端状态管理 | 数据同步 |
| 认证 | JWT | 9.0.2 | 用户认证和安全 | Bearer Token |
| 技术 | 版本 | 用途 | Rationale | 集成方法 |
|---|---|---|---|---|
| Vitest | 2.x | 单元测试框架 | 填补测试空白,确保代码质量,更好的TypeORM支持 | 集成到现有构建流程 |
| Testing Library | 13.x | React组件测试 | 提供组件级测试能力 | 与React项目集成 |
| hono/testing | 内置 | API端点测试 | 验证API功能和集成 | Hono官方测试工具,更好的类型安全 |
| node-cron | latest | 定时任务调度 | Node.js定时任务调度库 | 集成到应用启动流程 |
用户模型:
id: number - 主键标识符username: string - 唯一用户名(主要登录标识)email: string | null - 可选邮箱地址password: string - 加密密码(bcrypt哈希)roles: Role[] - 用户角色多对多关系优化重点: 保持现有数据模型不变,仅优化查询性能和验证逻辑
实际项目组件组织:
src/client/
├── admin/ # 管理后台应用
│ ├── components/ # 管理后台专用组件
│ │ ├── ProtectedRoute.tsx # 路由保护组件
│ │ ├── ErrorPage.tsx # 错误页面
│ │ └── NotFoundPage.tsx # 404页面
│ ├── hooks/ # 管理后台Hooks
│ │ └── AuthProvider.tsx # 认证状态管理
│ ├── layouts/ # 布局组件
│ │ └── MainLayout.tsx # 主布局
│ ├── pages/ # 页面组件
│ │ ├── Dashboard.tsx # 仪表板
│ │ ├── Login.tsx # 登录页面
│ │ └── Users.tsx # 用户管理
│ ├── routes.tsx # 路由配置
│ └── index.tsx # 管理后台入口
├── home/ # 用户前台应用
├── components/ # 共享UI组件
│ └── ui/ # shadcn/ui组件库(50+组件)
│ ├── button.tsx # 按钮组件
│ ├── input.tsx # 输入框组件
│ ├── table.tsx # 表格组件
│ └── ... # 其他组件
├── hooks/ # 共享Hooks
├── lib/ # 工具库
├── utils/ # 工具函数
└── api.ts # API客户端配置
技术栈配置:
实际后端项目结构:
src/server/
├── api/ # API路由层
│ ├── auth/ # 认证相关路由
│ │ ├── login.ts # 登录路由
│ │ ├── logout.ts # 登出路由
│ │ └── register.ts # 注册路由
│ ├── users/ # 用户管理路由
│ │ ├── index.ts # 用户列表路由
│ │ ├── [id].ts # 用户详情路由
│ │ └── __tests__/ # 路由测试
│ ├── roles/ # 角色管理路由
│ └── __integration_tests__/ # 集成测试
├── modules/ # 业务模块层
│ ├── auth/ # 认证业务模块
│ │ ├── auth.service.ts # 认证服务
│ │ └── __tests__/ # 认证测试
│ ├── users/ # 用户业务模块
│ │ ├── user.entity.ts # 用户实体
│ │ ├── user.service.ts # 用户服务
│ │ └── __tests__/ # 用户测试
├── utils/ # 工具层
│ ├── generic-crud.service.ts # 通用CRUD服务
│ ├── generic-crud.routes.ts # 通用CRUD路由
│ ├── errorHandler.ts # 错误处理
│ ├── backup.ts # 数据库备份工具
│ ├── restore.ts # 数据库恢复工具
│ ├── logger.ts # 日志工具
│ └── __tests__/ # 工具测试
├── middleware/ # 中间件层
│ ├── auth.ts # 认证中间件
│ └── validation.ts # 验证中间件
├── types/ # 类型定义
├── data-source.ts # 数据库连接配置
└── index.ts # 服务器入口
后端技术栈配置:
src/server/utils/generic-crud.service.tssrc/server/utils/generic-crud.routes.ts/ui 端点graph TD
A[前端React组件] --> B[Hono API路由]
B --> C[通用CRUD服务]
C --> D[TypeORM实体]
C --> E[Zod验证]
B --> F[OpenAPI文档生成]
F --> G[Swagger UI]
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#fff3e0
style D fill:#e8f5e8
/api/v1/),保持向后兼容用户管理端点:
/api/v1/users请求示例:
{
"page": 1,
"pageSize": 10,
"keyword": "搜索词",
"sortBy": "createdAt",
"sortOrder": "DESC"
}
响应示例:
{
"data": [
{
"id": 1,
"email": "user@example.com",
"roles": [{"id": 1, "name": "admin"}]
}
],
"pagination": {
"total": 100,
"current": 1,
"pageSize": 10
}
}
d8d-starter/
├── src/
│ ├── client/ # React前端应用
│ │ ├── admin/ # 管理后台应用
│ │ │ ├── components/ # 管理后台组件
│ │ │ ├── hooks/ # 管理后台Hooks
│ │ │ ├── layouts/ # 布局组件
│ │ │ ├── pages/ # 页面组件
│ │ │ ├── routes.tsx # 路由配置
│ │ │ └── index.tsx # 入口文件
│ │ ├── home/ # 用户前台应用(待开发)
│ │ ├── components/ # 共享UI组件
│ │ │ └── ui/ # shadcn/ui组件库
│ │ ├── hooks/ # 共享Hooks
│ │ ├── lib/ # 工具库
│ │ ├── utils/ # 工具函数
│ │ ├── api.ts # API客户端
│ │ └── index.tsx # 前端入口
│ ├── server/ # Hono后端应用
│ │ ├── api/ # API路由
│ │ ├── modules/ # 业务模块
│ │ ├── middleware/ # 中间件
│ │ └── index.ts # 服务器入口
│ └── share/ # 前后端共享代码
│ └── types.ts # TypeScript类型定义
├── tests/
│ └── e2e/ # E2E测试 (Playwright)
└── package.json
实际开发命令:
# 安装依赖
pnpm install
# 启动完整开发环境(前后端同时运行)
pnpm dev
# 运行测试
pnpm test # 运行API测试 (Vitest)
pnpm test:api # 运行API测试
pnpm test:components # 运行组件测试
pnpm test:integration # 运行集成测试 (同test:components)
pnpm test:e2e # 运行E2E测试
pnpm test:e2e:chromium # 运行Chrome E2E测试
pnpm test:e2e:ui # 运行E2E测试UI模式
pnpm test:e2e:debug # 运行E2E调试模式
# 代码质量检查
pnpm lint # ESLint检查
pnpm typecheck # TypeScript类型检查
pnpm test:coverage # 生成测试覆盖率报告
# 数据库相关
pnpm db:backup # 数据库备份
pnpm db:restore # 数据库恢复
pnpm db:backup:list # 列出备份文件
pnpm db:backup:latest # 获取最新备份
pnpm db:backup:cleanup # 清理旧备份
pnpm db:migrate # 数据库迁移
pnpm db:seed # 数据库种子数据
pnpm db:reset # 重置数据库
环境配置:
# 前端环境变量 (Vite)
VITE_API_BASE_URL=http://localhost:3000/api
# 后端环境变量
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres
JWT_SECRET=your-jwt-secret-key
NODE_ENV=development
__tests__ 文件夹与源码并列实际测试结构:
tests/
└── e2e/ # E2E测试 (Playwright)
├── fixtures/ # 测试夹具数据
│ ├── test-users.json # 测试用户数据
│ ├── roles.json # 角色数据
│ └── test-data.ts # TypeScript测试数据
├── pages/ # 页面对象模型
│ └── admin/ # 管理后台页面对象
│ ├── login.page.ts # 登录页面对象
│ ├── dashboard.page.ts # 仪表板页面对象
│ └── user-management.page.ts # 用户管理页面对象
├── specs/ # 测试规范
│ └── admin/ # 管理后台E2E测试
│ ├── dashboard.spec.ts # 仪表板测试
│ ├── login.spec.ts # 登录测试
│ ├── settings.spec.ts # 设置测试
│ └── users.spec.ts # 用户管理测试
├── utils/ # 测试工具
│ └── test-setup.ts # 测试设置工具
├── global-setup.ts # 全局设置
├── global-teardown.ts # 全局清理
└── playwright.config.ts # Playwright配置
前端测试位置:
src/client/
├── __integration_tests__/ # 前端集成测试
│ └── admin/ # 管理后台集成测试
│ ├── dashboard.test.tsx # 仪表板集成测试
│ ├── login.test.tsx # 登录集成测试
│ └── users.test.tsx # 用户管理集成测试
└── admin/
└── pages/
└── __tests__/ # 页面单元测试
├── Users.test.tsx # 用户页面单元测试
└── debug.test.tsx # 调试页面单元测试
后端测试位置:
src/server/
├── api/
│ ├── auth/ # 认证API
│ │ └── __tests__/ # 认证测试
│ │ └── auth.integration.test.ts # 认证集成测试
│ └── users/ # 用户API
│ └── __tests__/ # 用户测试
│ └── users.integration.test.ts # 用户集成测试
├── modules/
│ └── users/ # 用户业务模块
│ └── __tests__/ # 用户服务测试
│ └── user.service.test.ts # 用户服务单元测试
└── utils/
├── __tests__/ # 工具单元测试
│ ├── backup.test.ts # 备份工具测试
│ └── restore.test.ts # 恢复工具测试
└── __integration_tests__/ # 工具集成测试
└── backup.integration.test.ts # 备份集成测试
测试框架配置:
__tests__ 文件夹与源码并列✅ 技术栈验证: Node.js + Hono + React + TypeORM 验证通过 ✅ 架构模式: 分层架构、模块化设计验证通过 ✅ 代码质量: 类型安全、错误处理需要增强 ✅ 安全性: 基础安全措施存在,需要加强 ✅ 测试覆盖: 完整的测试基础设施已建立(Vitest + Testing Library + Playwright) ✅ 部署策略: Docker部署成熟稳定 ✅ 备份策略: 数据库定时备份方案已设计
基于此架构文档,开始实现以下故事:
开始实现时注意:
docs/architecture.md (本文件)docs/architecture/ (包含组件架构、API设计、技术栈等子文档)docs/prd.mddocs/architecture/testing-strategy.md/ui 端点访问文档状态: 正式版 下次评审: 2025-10-14