# FranklinWH-ToolBox AI 编程规范与操作规范
## 项目概览
本项目是 FranklinWH 内部工具箱平台,采用 monorepo 结构(pnpm workspace),包含前端 Web 应用和后端 API 服务。
- **前端**:Vue 3 + TypeScript + Vite (rolldown-vite)
- **后端**:Go 1.25+ + Fiber v2
- **包管理**:pnpm(前端)、Go Modules(后端)
---
## 一、项目结构规范
### 前端目录结构(根目录)
```
src/
├── assets/ # 静态资源(CSS、图片、数据文件)
├── components/ # 全局通用组件
├── composable/ # Vue Composables(可组合函数)
├── event/ # 全局事件系统(EventEmitter)
├── injection/ # Vue provide/inject 相关
├── layout/ # 布局组件(header、aside、footer、main)
├── router/ # 路由配置、守卫、辅助函数
├── service/ # API 请求层(按业务模块分目录)
├── stores/ # Pinia 状态管理
├── theme/ # 主题配置(light/dark/common)
├── types/ # TypeScript 类型声明
├── typings/ # 全局类型扩展(window.d.ts、vue-router.d.ts)
├── utils/ # 工具函数
├── views/ # 页面视图组件(按业务模块分目录)
├── App.vue # 根组件
└── main.ts # 入口文件
```
### 后端目录结构(service/)
```
service/
├── cmd/ # 脚本(部署、构建、日志查看)
├── cache/ # 缓存层(Redis)
├── config/ # 配置加载(Viper)
├── controllers/ # 控制器层(请求处理、参数校验)
├── database/ # 数据库初始化(MySQL、PostgreSQL、MongoDB)
├── domain/ # 领域模型/实体定义
├── dto/ # 数据传输对象
├── docs/ # Swagger 文档
├── function/ # 功能模块(文件处理等)
├── jobs/ # 后台定时任务
├── logger/ # 日志配置(Zap)
├── middleware/ # 中间件(认证等)
├── models/ # 数据库模型(GORM)
├── networkEvents/ # 网络事件(Evio)
├── repositories/ # 数据访问层(MySQL/PgSQL/MongoDB/Redis/MQTT/API)
├── routes/ # 路由注册
├── scheduler/ # 定时调度器(Cron)
├── services/ # 业务逻辑层
├── task/ # 异步任务队列(Asynq)
├── test/ # 测试文件
└── utils/ # 工具包
```
---
## 二、前端编码规范
### 2.1 通用格式
| 项目 | 规范 |
| -------- | ---------- |
| 缩进 | 2 空格 |
| 分号 | 不使用分号 |
| 引号 | 单引号 |
| 行宽 | 100 字符 |
| 行尾 | LF |
| 尾逗号 | ES5 风格 |
| 文件末尾 | 保留空行 |
### 2.2 TypeScript
- 启用严格模式(`strict: true`)
- 使用路径别名 `@/` 指向 `src/`
- 优先使用 `interface` 定义对象类型,`type` 用于联合类型/工具类型
- 避免 `any`,必要时使用 `unknown` 并进行类型收窄
- 导出类型时使用 `export type` / `export interface`
### 2.3 Vue 组件
```vue
{{ displayTitle }}
```
**关键约定**:
- 使用 `