# 计划:读取 README 并启动项目(backend + frontend) ## Summary - 目标:在本机启动该仓库的后端 API(Go/Gin/Gorm)与前端管理台(Vite/Vue3),确保可以用默认管理员账号登录并正常调用 API。 - 成功标准: - 后端可访问 `http://localhost:8080`,且能成功登录获取 token(`/api/auth/login` 返回 200)。 - 前端可访问 `http://localhost:5173`,可使用 `admin/admin123` 登录并进入页面。 ## Current State Analysis(基于仓库现状) - 仓库结构: - `backend/`:Go 1.22,Gin 路由挂在 `/api/*`,[main.go](file:///e:/private_basic/cockpit-source/backend/cmd/server/main.go) 启动时会连接 DB 并执行 AutoMigrate + Seed(默认管理员、权限、默认状态)。 - `frontend/`:Vite + Vue3,[package.json](file:///e:/private_basic/cockpit-source/frontend/package.json) 提供 `npm run dev` 启动开发服务器。 - 配置方式: - 后端配置:优先读取 `backend/configs/config.yaml`,不存在也可使用默认值(DSN 默认 `root:root@tcp(127.0.0.1:3306)/cockpit...`),见 [config.go](file:///e:/private_basic/cockpit-source/backend/internal/config/config.go)。 - 前端 API Base:默认 `VITE_API_BASE=http://localhost:8080`(可在 `.env.local` 覆盖),见 [frontend/.env.example](file:///e:/private_basic/cockpit-source/frontend/.env.example)。 - 依赖前置: - MySQL 必须可用,并且目标库 `cockpit` 存在(README 提示)。 ## Proposed Changes(执行步骤:只启动,不改业务代码) ### 1) 数据库准备(MySQL) - 确保本机 MySQL 在 `127.0.0.1:3306` 可连接。 - 创建数据库(示例): - `CREATE DATABASE cockpit DEFAULT CHARACTER SET utf8mb4;` - DSN 决策(选一种): - A. 使用默认 DSN:确保本机存在 `root/root` 账号并可访问 `cockpit` 库。 - B. 使用你本机的 MySQL 账号:修改后端配置的 `db.dsn` 为你的实际账号密码/主机。 ### 2) 后端启动(Go) - 配置(推荐显式配置,避免默认弱密钥): - 从示例复制一份配置文件到实际配置(Windows PowerShell 示例): - `Copy-Item backend\configs\config.example.yaml backend\configs\config.yaml` - 编辑 `backend/configs/config.yaml`: - `db.dsn`:指向可用的 MySQL DSN - `auth.accessTokenSecret` / `auth.refreshTokenSecret`:替换为强随机串 - 启动命令(在仓库根目录下开新终端): - `cd backend` - `go mod tidy` - `go run ./cmd/server` - 预期结果: - 监听 `http://localhost:8080` - 首次启动会 AutoMigrate + Seed(含默认管理员:admin/admin123) ### 3) 前端启动(Node) - 配置(如需改后端地址): - 从示例复制 `.env.local`(可选): - `Copy-Item frontend\.env.example frontend\.env.local` - 确认 `VITE_API_BASE=http://localhost:8080` - 启动命令(另开新终端): - `cd frontend` - `npm install` - `npm run dev` - 预期结果: - 打开 `http://localhost:5173` - 使用默认账号 `admin/admin123` 登录 ## Assumptions & Decisions - 同时启动 `backend` 与 `frontend`(README 指向的“对应项目”按全栈运行理解)。 - 采用本机 MySQL(仓库未提供 docker-compose / 容器化启动脚本)。 - 后端密钥在本地开发环境允许临时使用弱默认值,但计划中仍按安全推荐要求替换为强随机串。 ## Verification(启动后验证方式) - 后端进程日志无 panic,且在浏览器/命令行可访问: - `POST http://localhost:8080/api/auth/login`,body:`{"username":"admin","password":"admin123"}` - 返回包含 access/refresh token(或类似字段),并且后续 `GET /api/me` 携带 `Authorization: Bearer ` 返回 200。 - 前端: - `http://localhost:5173` 能打开 - 登录成功后能进入总览/订单等页面(至少不报跨域与 401 循环刷新)