# 源码树和文件组织 ## 版本信息 | 版本 | 日期 | 描述 | 作者 | |------|------|------|------| | 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston | | 2.5 | 2025-09-24 | 更新技术栈信息,修正数据库类型 | Winston | ## 实际项目结构 ```text d8d-starter/ ├── src/ │ ├── client/ # React前端应用 │ │ ├── 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/ # Home专用组件 (ErrorPage, FilePreview等) │ │ │ ├── hooks/ # Home专用Hooks (AuthProvider) │ │ │ ├── layouts/ # 布局组件 (MainLayout) │ │ │ ├── pages/ # 页面组件 (14个功能页面) │ │ │ ├── routes.tsx # 路由配置 (18个路由) │ │ │ └── index.tsx # Home应用入口 │ │ ├── mobile/ # 移动端应用 (股票训练系统) │ │ │ ├── components/ # 移动端专用组件 │ │ │ │ ├── Classroom/ # 课堂相关组件 │ │ │ │ │ ├── ClassroomLayout.tsx # 课堂布局 │ │ │ │ │ ├── ClassroomProvider.tsx # 课堂状态管理 │ │ │ │ │ ├── TeacherClassControlButton.tsx # 老师课堂控制 │ │ │ │ │ ├── StudentHandUpButton.tsx # 学生举手 │ │ │ │ │ ├── MessageList.tsx # 消息列表 │ │ │ │ │ ├── MessageBubble.tsx # 消息气泡 │ │ │ │ │ └── useClassroom.ts # 课堂Hook │ │ │ │ ├── Exam/ # 考试相关组件 │ │ │ │ │ ├── ExamIndex.tsx # 考试首页 │ │ │ │ │ ├── ExamAdmin.tsx # 考试管理 │ │ │ │ │ ├── ExamCard.tsx # 考试卡片 │ │ │ │ │ └── hooks/useSocketClient.ts # Socket客户端Hook │ │ │ │ ├── stock/ # 股票相关组件 │ │ │ │ │ ├── stock_main.tsx # 股票主组件 │ │ │ │ │ └── components/stock-chart/ # 股票图表组件 │ │ │ │ │ ├── StockChart.tsx # 股票图表 │ │ │ │ │ ├── TradePanel.tsx # 交易面板 │ │ │ │ │ ├── DrawingToolbar.tsx # 绘图工具栏 │ │ │ │ │ └── hooks/useStockSocketClient.ts # 股票Socket Hook │ │ │ │ ├── ErrorPage.tsx # 错误页面 │ │ │ │ ├── NotFoundPage.tsx # 404页面 │ │ │ │ └── ProtectedRoute.tsx # 路由保护组件 │ │ │ ├── hooks/ # 移动端Hooks │ │ │ │ └── AuthProvider.tsx # 认证状态管理 │ │ │ ├── layouts/ # 布局组件 │ │ │ │ └── MainLayout.tsx # 主布局 │ │ │ ├── pages/ # 页面组件 │ │ │ │ ├── ClassroomPage.tsx # 课堂页面 │ │ │ │ ├── StockHomePage.tsx # 股票首页 │ │ │ │ ├── XunlianPage.tsx # 训练页面 │ │ │ │ ├── AuthPage.tsx # 认证页面 │ │ │ │ ├── MemberPage.tsx # 会员页面 │ │ │ │ ├── VideoReplayPage.tsx # 视频回放页面 │ │ │ │ ├── VideoPlayerPage.tsx # 视频播放页面 │ │ │ │ └── WechatCallbackPage.tsx # 微信回调页面 │ │ │ ├── routes.tsx # 路由配置 (15+个路由) │ │ │ └── index.tsx # 移动端应用入口 │ │ ├── components/ # 共享UI组件 │ │ │ └── ui/ # shadcn/ui组件库(50+组件) │ │ │ ├── button.tsx # 按钮组件 │ │ │ ├── input.tsx # 输入框组件 │ │ │ ├── table.tsx # 表格组件 │ │ │ └── ... # 其他组件 │ │ ├── hooks/ # 共享Hooks │ │ ├── lib/ # 工具库 │ │ ├── utils/ # 工具函数 │ │ ├── api.ts # API客户端配置 │ │ └── index.tsx # 前端入口 │ ├── server/ # Hono后端应用 │ │ ├── api/ # API路由 │ │ │ ├── auth/ # 认证相关路由 │ │ │ │ ├── login.ts # 登录路由 │ │ │ │ ├── logout.ts # 登出路由 │ │ │ │ └── register.ts # 注册路由 │ │ │ ├── users/ # 用户管理路由 │ │ │ │ ├── index.ts # 用户列表路由 │ │ │ │ ├── [id].ts # 用户详情路由 │ │ │ │ └── __tests__/ # 路由测试 │ │ │ ├── roles/ # 角色管理路由 │ │ │ ├── files/ # 文件管理路由 │ │ │ │ ├── multipart-policy/ # 多部分上传策略 │ │ │ │ ├── multipart-complete/ # 完成多部分上传 │ │ │ │ ├── [id]/ # 文件操作路由 │ │ │ │ └── upload-policy/ # 上传策略路由 │ │ │ └── __integration_tests__/ # 集成测试 │ │ ├── modules/ # 业务模块 │ │ │ ├── auth/ # 认证业务模块 │ │ │ │ ├── auth.service.ts # 认证服务 │ │ │ │ └── __tests__/ # 认证测试 │ │ │ ├── users/ # 用户业务模块 │ │ │ │ ├── user.entity.ts # 用户实体 │ │ │ │ ├── user.service.ts # 用户服务 │ │ │ │ └── __tests__/ # 用户测试 │ │ │ ├── files/ # 文件业务模块 │ │ │ │ ├── file.entity.ts # 文件实体 │ │ │ │ ├── file.service.ts # 文件服务 │ │ │ │ ├── minio.service.ts # MinIO服务 │ │ │ │ ├── file.schema.ts # 文件验证Schema │ │ │ │ └── __tests__/ # 文件测试 │ │ ├── utils/ # 工具层 │ │ │ ├── generic-crud.service.ts # 通用CRUD服务 │ │ │ ├── generic-crud.routes.ts # 通用CRUD路由 │ │ │ ├── errorHandler.ts # 错误处理 │ │ │ ├── backup.ts # 数据库备份工具 │ │ │ ├── restore.ts # 数据库恢复工具 │ │ │ ├── logger.ts # 日志工具 │ │ │ └── __tests__/ # 工具测试 │ │ ├── middleware/ # 中间件层 │ │ │ ├── auth.middleware.ts # 认证中间件 │ │ │ └── permission.middleware.ts # 权限中间件 │ │ ├── types/ # 类型定义 │ │ ├── data-source.ts # 数据库连接配置 │ │ └── index.ts # 服务器入口 │ └── share/ # 前后端共享代码 │ └── types.ts # TypeScript类型定义 ├── tests/ │ └── e2e/ # E2E测试 (Playwright) └── package.json ``` ## 集成指南 - **文件命名**: 保持现有kebab-case命名约定 - **文件夹组织**: 遵循功能模块划分,添加__tests__文件夹 - **测试结构**: 单元测试位于`__tests__/`目录,集成测试位于`__integration_tests__/`目录 - **导入/导出模式**: 使用ES模块,保持现有别名系统(@/) - **测试位置**: 前端集成测试位于`__integration_tests__/`,页面单元测试位于`__tests__/` - **后端测试**: API测试位于路由`__tests__/`目录,服务测试位于模块`__tests__/`目录 - **工具测试**: 通用工具测试位于`utils/__tests__/`目录