3.8 KiB
3.8 KiB
计划:读取 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 启动时会连接 DB 并执行 AutoMigrate + Seed(默认管理员、权限、默认状态)。frontend/:Vite + Vue3,package.json 提供npm run dev启动开发服务器。
- 配置方式:
- 后端配置:优先读取
backend/configs/config.yaml,不存在也可使用默认值(DSN 默认root:root@tcp(127.0.0.1:3306)/cockpit...),见 config.go。 - 前端 API Base:默认
VITE_API_BASE=http://localhost:8080(可在.env.local覆盖),见 frontend/.env.example。
- 后端配置:优先读取
- 依赖前置:
- MySQL 必须可用,并且目标库
cockpit存在(README 提示)。
- MySQL 必须可用,并且目标库
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为你的实际账号密码/主机。
- A. 使用默认 DSN:确保本机存在
2) 后端启动(Go)
- 配置(推荐显式配置,避免默认弱密钥):
- 从示例复制一份配置文件到实际配置(Windows PowerShell 示例):
Copy-Item backend\configs\config.example.yaml backend\configs\config.yaml
- 编辑
backend/configs/config.yaml:db.dsn:指向可用的 MySQL DSNauth.accessTokenSecret/auth.refreshTokenSecret:替换为强随机串
- 从示例复制一份配置文件到实际配置(Windows PowerShell 示例):
- 启动命令(在仓库根目录下开新终端):
cd backendgo mod tidygo 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 frontendnpm installnpm 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 <token>返回 200。
- 前端:
http://localhost:5173能打开- 登录成功后能进入总览/订单等页面(至少不报跨域与 401 循环刷新)