89 lines
3.2 KiB
Markdown
89 lines
3.2 KiB
Markdown
# Memora 前后端项目结构(重设计)
|
||
|
||
> 目标:在现有 `memora-api` / `memora-web` 基础上,采用更清晰的领域分层与模块化结构,便于持续开发。
|
||
|
||
## 1. 根目录结构
|
||
|
||
```text
|
||
memora/
|
||
├── README.md
|
||
├── REQUIREMENTS.md # 需求文档(本次新增)
|
||
├── PROJECT_STRUCTURE.md # 项目结构文档(本次新增)
|
||
├── docker-compose.yml
|
||
├── memora-api/ # 后端服务(Go + Gin)
|
||
├── memora-web/ # 前端应用(Vue3 + Vite)
|
||
└── memora-engine/ # 记忆引擎(可逐步独立)
|
||
```
|
||
|
||
## 2. 后端结构(memora-api)
|
||
|
||
```text
|
||
memora-api/
|
||
├── cmd/
|
||
│ └── server/ # 程序入口(建议逐步迁移 main)
|
||
├── internal/
|
||
│ ├── app/ # 应用启动编排
|
||
│ ├── bootstrap/ # 配置、数据库、中间件初始化
|
||
│ ├── domain/ # 领域模型与领域服务(建议新增)
|
||
│ ├── repository/ # 数据访问抽象(建议新增)
|
||
│ ├── service/ # 业务服务
|
||
│ ├── handler/ # HTTP Handler
|
||
│ ├── router/ # 路由注册
|
||
│ ├── middleware/ # 中间件
|
||
│ ├── request/ # 请求 DTO
|
||
│ ├── response/ # 响应 DTO
|
||
│ └── model/ # 数据库模型
|
||
├── sql/
|
||
├── audio/
|
||
└── config*.yaml
|
||
```
|
||
|
||
### 后端分层规则
|
||
- Handler 只做参数校验和调用 service
|
||
- Service 负责业务流程编排
|
||
- Repository 负责数据库读写(GORM)
|
||
- Domain 放核心规则(SRS 计算、复习策略)
|
||
|
||
## 3. 前端结构(memora-web)
|
||
|
||
```text
|
||
memora-web/
|
||
├── src/
|
||
│ ├── app/ # 应用启动、全局注入
|
||
│ ├── router/ # 路由
|
||
│ ├── stores/ # Pinia 状态管理
|
||
│ ├── services/ # API 请求封装
|
||
│ ├── modules/ # 业务模块(建议新增)
|
||
│ │ ├── auth/
|
||
│ │ ├── words/
|
||
│ │ ├── study/
|
||
│ │ ├── review/
|
||
│ │ └── stats/
|
||
│ ├── views/ # 页面视图
|
||
│ ├── components/ # 通用组件
|
||
│ ├── composables/ # 组合式逻辑
|
||
│ ├── utils/
|
||
│ ├── styles/
|
||
│ └── assets/
|
||
└── public/
|
||
```
|
||
|
||
### 前端模块化规则
|
||
- 以 `modules/*` 聚合业务(API、store、types、hooks)
|
||
- `views` 负责页面组合,不写重业务逻辑
|
||
- 通用组件与业务组件分离
|
||
|
||
## 4. 开发顺序建议(不断完善)
|
||
1. **认证闭环**:登录、鉴权拦截、会话保持
|
||
2. **词库模块**:列表、详情、搜索、标签过滤
|
||
3. **学习模块**:学习会话 + 答题提交
|
||
4. **复习模块**:SRS 调度 + 每日任务
|
||
5. **统计模块**:趋势图 + 连续学习天数
|
||
6. **稳定性**:日志、错误码、单测、性能优化
|
||
|
||
## 5. 本次交付
|
||
- 已在根目录新增:
|
||
- `REQUIREMENTS.md`
|
||
- `PROJECT_STRUCTURE.md`
|
||
- 后续将按本文档持续推进实现与代码重构。
|