Files
OnceLove-New/OnceLove/README.md
KOSHM-Pig ec21df7aa6 feat: 初始化 OnceLove GraphRAG 项目基础架构
- 添加完整的项目结构,包括前端(Vue3 + Vite)、后端(Fastify)和基础设施配置
- 实现核心 GraphRAG 服务,集成 Neo4j 图数据库和 Qdrant 向量数据库
- 添加用户认证系统和管理员登录界面
- 提供 Docker 容器化部署方案和开发环境配置
- 包含项目文档、API 文档(Swagger)和测试脚本
2026-03-23 00:00:13 +08:00

4.5 KiB
Raw Blame History

开发规范

项目结构规范

project / ├── src / 程序源码文件目录 │ ├── config / 配置目录 │ │ ├── swagger.js swagger 配置文件 │ │ └── logger.js 日志配置文件 │ │ │ ├── controllers / 控制器目录 │ │ ├── *.controller.js 控制器文件 │ │ └── index.js 控制器索引文件 │ │ │ ├── models / 模型目录 │ │ ├── *.model.js 模型文件 │ │ └── index.js 模型索引文件 │ │ │ ├── routes / 路由目录 │ │ ├── *.route.js 路由文件 │ │ └── index.js 路由索引文件 │ │ │ ├── services / 服务目录 │ │ ├── *.service.js 服务文件 │ │ └── index.js 服务索引文件 │ └── server.js 服务器入口文件 │
├── docs / 用于存储AI提示文档 │ └── *.md 文档文件 │ ├── .env 环境变量配置文件 ├── package.json 项目依赖配置文件 ├── .gitignore git 忽略文件配置 ├── package-lock.json 项目依赖锁文件 └── README.md 项目说明文档

controllers、models、routes 规范

  • 每个目录下的文件都要符合命名规范
    • 控制器文件:*.controller.js
    • 模型文件:*.model.js
    • 路由文件:*.route.js

并统一由index.js导出

  • controllers/index.js
  • models/index.js
  • routes/index.js

swagger 规范

  • 每个路由文件都要包含路由的详细信息,包括请求方法、路径、参数、响应等。
  • 路由文件的注释要符合 swagger 规范,使用 jsdoc 格式。
  • 每个模型文件都要包含模型的详细信息,包括属性、类型、是否必填等。
  • 模型文件的注释要符合 swagger 规范,使用 jsdoc 格式。

运行与脚本

  • 开发启动:npm run dev
  • 普通启动:npm run start
  • 文档入口:/api-docs

环境变量规范

  • 使用 dotenv 加载 .env(入口:src/server.js
  • 变量约定:
    • PORT:服务监听端口,默认 3000
    • APPLICATION_URL:对外服务基址,用于 Swagger servers(未设置回退为 http://localhost:${PORT}
    • LOG_LEVEL:日志级别,默认 info(可选 error|warn|info|debug
  • 安全要求:不记录/提交敏感信息,.gitignore 已忽略 .envlogs/

日志规范

  • 日志库:winston(配置:src/config/logger.js
  • 级别:errorwarninfodebug
  • 输出:
    • 控制台(彩色,便于开发)
    • 文件:logs/app.log(综合)、logs/error.log(错误)
  • 请求日志:在 src/server.js 统一中间件记录 method path status 耗时,错误 >=500error>=400warn
  • 全局错误处理:src/server.js 捕获未处理异常并输出结构化错误,响应 500
  • 规范:避免日志中出现令牌、密钥、密码等敏感信息

swagger-jsdoc 配置与注释规范

  • 配置位置:src/config/swagger.jscreateSwaggerSpec(serverUrl)
  • 扫描范围:apis: ['src/**/*.js']
  • 路由注释:放在 src/routes/*.route.js,使用 @openapi JSDoc 块定义路径、方法、请求参数与响应
  • 模型注释:可使用 components/schemas 定义结构体并在路由注释中引用
  • 文档 UIswagger-ui-express 挂载于 /api-docs

分层规范

  • 路由(routes)只负责参数解析与转发,不直接书写异步业务逻辑
  • 控制器(controllers)承载业务流程编排,必要时调用 services
  • 服务(services)聚合外部 API、内部模块调用保持可测试性
  • 模型(models)声明数据结构(如后续有数据库或 DTO 定义)
  • 统一导出:各层使用 index.js 聚合导出,便于维护与扫描

参考实现

  • 路由聚合:src/routes/index.js
  • 根路由与注释:src/routes/root.route.js
  • 控制器:src/controllers/root.controller.js
  • Swagger 配置:src/config/swagger.js
  • 日志配置:src/config/logger.js
  • 入口挂载:src/server.js

异步编程规范

  • 所有异步操作都要使用 async/awaitPromise 处理,避免回调地狱
  • 控制器中调用服务时,要确保服务返回 Promise,并在控制器中 await 其结果
  • 服务中调用外部 API 或数据库操作时,要确保返回 Promise,并在服务中 await 其结果
  • 路由中处理异步操作时,要确保捕获异常并返回结构化错误响应
  • 必须使用try...catch捕获异步操作中的异常避免未处理异常导致服务崩溃