# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## 项目简介 Sun-Panel 是服务器/NAS 导航面板应用,前后端分离架构: - **前端**:Vue 3 + TypeScript + Vite + Naive UI + Pinia - **后端**:Go + Gin + GORM,支持 SQLite(默认)或 MySQL,可选 Redis ## 常用命令 ### 前端 ```bash pnpm dev # 启动开发服务器,端口 1002 pnpm build # 生产构建(类型检查 + Vite 打包) pnpm lint # ESLint 检查 pnpm lint:fix # 自动修复 pnpm type-check # 仅 TypeScript 类型检查 ``` ### 后端 ```bash cd service go run main.go # 启动,默认端口 3002 ``` ### Docker 全量构建 ```bash docker build -t sun-panel . ``` ## 架构要点 ### 前后端通信 开发时,Vite 将 `/api/*` 和 `/uploads/*` 代理到 `http://127.0.0.1:3002`(由 `.env` 中 `VITE_APP_API_BASE_URL` 控制)。生产部署时前后端同端口,Go 直接 serve 静态文件。 ### 前端分层 ``` src/api/ → API 调用函数(按模块分:panel/ system/ 等) src/store/ → Pinia 状态(auth/user/panel/admin/notice/moduleConfig/app) src/views/ → 页面组件(home/login/exception) src/components/ → UI 组件(apps/ common/ deskModule/) src/utils/request/ → axios 封装,含 token 拦截器 src/hooks/ → Composition API(useTheme/useLanguage/useBasicLayout/useIconRender) src/locales/ → 国际化(zh-CN.json / en-US.json) ``` ### 后端分层 ``` service/router/ → 路由注册,入口 A_ENTER.go service/api/api_v1/ → Handler 层,中间件在 middleware/ service/lib/ → 业务逻辑(user/cache/monitor/siteFavicon 等) service/models/ → GORM 模型 service/global/ → 全局变量(Db/Logger/Redis 等) service/initialize/ → 启动初始化流程,入口 A_ENTER.go ``` 后端每个子目录都以 `A_ENTER.go` 作为该模块的入口聚合文件。 ### 路由分组(后端) - `/system/*` — 登录/用户/系统设置,需 LoginInterceptor - `/panel/*` — 面板数据/图标管理,需 LoginInterceptor - `/openness/*` — 无需认证的公开接口 ### 配置文件 后端使用 INI 格式配置,示例见 `service/assets/conf.example.ini`。关键字段: - `database_drive`:`sqlite`(默认)或 `mysql` - `cache_drive` / `queue_drive`:`memory`(默认)或 `redis` - `source_path`:上传文件存储路径,默认 `./uploads` ## 开发注意 - 前端路径别名 `@` 指向 `src/` - 提交前 Husky + lint-staged 会自动对 `.ts/.tsx/.vue` 运行 `eslint --fix` - TypeScript 开启 `strict` 和 `noUnusedLocals`,避免引入 `any` - 国际化新增文案需同时更新 `zh-CN.json` 和 `en-US.json`