Files
InfoGenie/infogenie-backend-go/后端文档.md
2026-04-01 22:03:57 +08:00

4.8 KiB
Raw Blame History

万象口袋 — Go 后端文档

技术栈Go 1.25+ · Gin · GORM · MySQL

模块路径infogenie-backend(见 go.mod

入口cmd/server/main.go — 加载配置、连接数据库、AutoMigrate、启动 HTTP 服务。


运行与配置

  • 环境由 APP_ENV 决定:developmentproduction(见 config.Load())。
  • 若存在 .env.development / .env.production,会通过 godotenv 加载对应文件。
  • APP_PORT 默认 5002(与前端 REACT_APP_API_URL 开发默认一致)。
  • 数据库、邮件、认证中心、INFOGENIE_SITE_ADMIN_TOKEN 等从环境变量读取,详见 config/config.go

健康检查GET /api/health — 返回服务状态与数据库 Ping 结果。

根路径GET / — 返回服务说明与主要 endpoint 分组(version 当前为 3.3.0-go)。


数据库GORM AutoMigrate

启动时会迁移以下模型(见 internal/database/mysql.go

模型 用途
AIConfig 多厂商 AI Key / Base / 模型列表(如 deepseek、kimi
Site60sDisabled 60s 功能在前端隐藏的 feature_id
SiteAIRuntime DeepSeek 兼容网关Base + Key + 默认模型),优先级高于部分 AIConfig
Site60sUpstream 60s 上游节点(单例 id=1
SiteAIModelDisabled AI 应用在前端隐藏的 app_id
SiteFeatureCardClick 四大板块功能卡片点击统计(section + item_id 联合主键)

路由概览(internal/router/router.go

CORS

全局 middleware.CORS(),放行常用 Method/HeaderAuthorizationX-Site-Admin-Token)。

认证与用户

方法 路径 说明
GET /api/auth/check 可选 JWT校验登录态
GET /api/user/profile 需 JWT:用户资料

实际登录、发 token 由 萌芽账户认证中心 完成;后端校验 JWT。

站点公开配置(无需登录)

方法 路径 说明
GET /api/site/60s-disabled 被隐藏的 60s feature_id 列表
GET /api/site/60s-source 60s 上游 source_id / base_url
GET /api/site/ai-model-disabled 被隐藏的 AI 应用 id 列表
GET /api/site/feature-card-clicks?section= 功能卡片点击次数(见下)
POST /api/site/feature-card-clicks/increment 上报一次点击,返回最新 count

section 合法值60sapi · smallgame · toolbox · aimodel

increment 请求体{ "section": "...", "item_id": "..." }

站点管理(需 X-Site-Admin-Token,与环境变量 INFOGENIE_SITE_ADMIN_TOKEN 一致)

方法 路径 说明
PUT /api/admin/site/60s-disabled 更新 60s 隐藏列表
PUT /api/admin/site/60s-source 切换 60s 上游
PUT /api/admin/site/ai-model-disabled 更新 AI 应用隐藏列表
GET/PUT /api/admin/site/ai-runtime 读取/更新 DeepSeek 兼容运行时配置

AI 应用(/api/aimodelapp,默认 需 JWT

方法 路径 说明
POST /chat 非流式对话JSON 返回全文
POST /chat/stream SSE 流式:透传上游 OpenAI 兼容流(text/event-stream
POST /name-analysis 各垂直能力(姓名、变量命名、写诗、翻译等)
GET /models 模型列表

流式说明internal/handler/aimodel.go + internal/service/ai.go

  • 上游请求带 stream: true,成功后将上游 body 分块写入并 Flush 到客户端。
  • 支持 deepseek(运行时或 AIConfig)与 kimiAIConfig)。
  • /chat 共用同一套 bindAIModelChat 校验(消息条数、长度、模型白名单等)。

模型白名单:见 internal/handler/aimodel.goallowedModels(如 deepseek-chat、deepseek-reasoner、部分 kimi 模型)。


核心源码目录

cmd/server/          # main
config/              # 配置加载
internal/
  database/          # MySQL 初始化、AutoMigrate
  handler/           # HTTP 处理器auth、user、aimodel、siteconfig、ai_runtime、feature_card_clicks
  middleware/        # CORS、JWT
  model/             # GORM 模型
  router/            # 路由注册
  service/           # AI 调用(含 OpenAI 兼容非流式与流式)

与其他工程的关系

  • 前端 SPA 通过 REACT_APP_API_URL 指向本服务(开发默认 http://127.0.0.1:5002)。
  • public/aimodelapp/*/shared/ai-chat.js 优先调用 /api/aimodelapp/chat/stream,失败时回退 /chat

更完整的前端集成说明见 infogenie-frontend/前端文档.md