开发团队
代码风格指南
档案馆项目的代码风格、架构决策及类型安全规范。
代码规范
- 命名规范:
- 变量与函数:使用小驼峰命名法
camelCase。 - 类、接口、类型:使用大驼峰命名法
PascalCase。 - 文件命名:
- 前端组件、类/接口定义使用
PascalCase- 如
UserCard.tsx定义UserCard组件 UserRepository.ts定义UserRepository类
- 如
- 其它源码文件使用
camelCase(如rateLimitPlugin.ts)
- 前端组件、类/接口定义使用
- 变量与函数:使用小驼峰命名法
- 类型声明:
- 避免使用
any(由 lint 检查) - 避免出现隐式确定的参数类型
- 定义对象结构和类实现时使用
interface;定义联合类型、元组或类型别名时使用type。
- 避免使用
- 逻辑组织:
- 对于异步操作,统一使用
async/await,禁止使用.then()链式调用。
- 对于异步操作,统一使用
后端开发
- 路由定义:
- 严格遵循 RESTful 风格。
- 路由建议包含
detail描述,以便自动生成 Swagger 文档。 - 路径参数使用
:id格式,并通过 Elysia 的params进行解构。 - 通过 HTTP 状态码区分错误类别,响应体
code细化。
- 输入校验: 定义统一的 Zod schema 并由 Elysia 校验。
- 错误处理: 通过抛出符合
AppError的错误类以统一错误类型。
数据库规范
- 模型定义:
- 字段名使用
camelCase,对应数据库映射@map使用snake_case。 - 必须包含
createdAt和updatedAt审计字段。 - 每个
model必须在末尾包含@@map("table_name")和@@schema("schema_name")。
- 字段名使用
- 客户端使用:
- 全局维护一个 Prisma Client 单例,避免因热更新导致连接数溢出。
- 避免在循环中执行
findUnique或create操作,应优先使用updateMany或createMany。
- 事务处理:
- 涉及多表写入的业务逻辑必须封装在
$transaction中。
- 涉及多表写入的业务逻辑必须封装在
前端开发
- 组件架构:
- 静态内容(如导航栏、页脚、文案页面)必须使用
.astro组件。 - 交互内容(如表单、复杂 UI、即时反馈)使用 React 组件。
- 使用
client:*指令(如client:visible)进行按需注水,减少首屏阻塞。
- 静态内容(如导航栏、页脚、文案页面)必须使用
- 状态管理:
- 跨组件状态优先使用
nanostores,确保 React 组件与 Astro 页面之间可以无缝共享状态。 - 组件内部状态使用 React 原生
useState或useReducer。
- 跨组件状态优先使用
工程化要求
- API 集成:
- 前端必须使用 Elysia 的
Eden Client访问后端 API。 - 禁止手动在前端定义后端的 Response 类型,应通过
typeof app直接导出路由类型。
- 前端必须使用 Elysia 的
- 代码检查:
- 提交代码前必须通过
tsc --noEmit检查。 - 运行测试命令:
bun run test - 运行代码格式化:
bun format - 运行 Lint 检查:
bun lint
- 提交代码前必须通过
- 提交规范:
- 提交信息遵循约定式提交 (Conventional Commits)。
- 关于提交信息的具体格式和类型列表,参见 流程规范。