Skip to content

代码结构约定

MovieApp 由移动端、后端服务和后台管理三部分组成,团队协同时请遵守以下目录约定与命名规范。

移动端 App (movieappKT)

app/src/main/java/com/vip937/tv
├─ data/           # 仓储与数据源封装,如 RemoteDataSource、Repository
├─ model/          # 数据模型(DTO/实体)
├─ network/        # Retrofit/OkHttp/自定义 API 封装
└─ ui/             # Compose 页面与 ViewModel,按功能拆分子目录
  • 命名规范:页面以 Screen 结尾,ViewModel 以 ViewModel 结尾,接口服务统一在 network 目录暴露。
  • 接口常量:移动端接口路径需与文档中 api/mobile/v1 保持一致,如有变更先更新本仓库再同步代码。
  • Compose 组件:复用组件应沉淀到 ui/components,避免页面内重复声明。

后端服务 (movieappAdmin-backend)

src/
├─ modules/
│  ├─ mobile/          # 提供 App 所有接口
│  ├─ vod/             # 视频内容管理接口,受 JWT + 角色权限保护
│  ├─ appManagement/   # App 配置 CRUD
│  ├─ upload/          # 文件上传接口
│  ├─ auth/            # 登录、token、验证码等
│  └─ ...              # 其他通用模块(permission、role、user)
├─ entities/           # TypeORM 实体,与数据库表一一对应
├─ shared/             # 公共模块(数据库连接、Redis、全局管道/拦截器)
├─ common/             # 通用守卫、拦截器、异常定义
└─ utils/              # 工具函数,例如 `buildTree`、M3U8 处理逻辑
  • DTO 校验:所有 Controller 使用 class-validator 进行请求体校验。新增接口必须补充 DTO 与注释。
  • 模块划分:遵循 NestJS 模块化,每个模块导出 Controller、Service、Dto。跨模块调用请通过 Service 注入,不要直接访问 Repository。
  • 异常规范:统一抛出 CustomException 或 Nest 内置异常,供前端识别。

后台管理前端 (movieappAdmin-frontend)

src/
├─ api/             # 与后端接口映射,按业务拆分文件
├─ router/          # 路由与动态菜单
├─ views/           # 页面组件
├─ store/           # Pinia 状态,`modules/` 中按业务拆分
├─ utils/           # 请求封装、权限工具
├─ assets/          # 静态资源
└─ layouts/         # 页面框架、导航布局
  • API 模块:接口路径更新时,需同步 api/ 中对应请求函数与类型定义。
  • 权限策略:路由元信息与权限码保持与后端 permission 表一致,避免硬编码。
  • 样式:全局样式在 styles/,原子化类由 UnoCSS 生成,避免在组件内写大量自定义样式。

文档仓库 (movieappDocs)

docs/
├─ .vitepress/      # 站点配置
├─ guide/           # 研发流程、环境、部署说明
└─ api/             # 接口文档,按 app/admin 分组
release/            # 发布页静态资源
  • 文档更新与代码更改保持一个提交,便于追溯。
  • 接口章节应提供请求方式、URL、参数说明、示例响应及注意事项。
  • 发布页用于对外呈现,不宜堆积内部实现细节。