app.conf 中手动注释/取消注释代码块来切换环境(如 MySQL 配置、认证地址)。这种方式极易出错,且难以在 CI/CD 流程中自动化。utils/config.go 中直接硬编码了生产环境 URL (https://aqai.shudaodsj.com:22000)。controllers/ 下多个文件(shudaooss.go, hazard.go, chroma.go 等)硬编码了 IP 地址和端口(如 172.16.17.52:8060, 172.16.35.50:18080)。app.conf,有的在 utils,有的直接在 controllers 的常量或变量中。views/ 目录下存在 .vue 文件 (liushitest.vue) 和测试 HTML 文件,这些是前端源码或临时测试文件,不应出现在 Go 后端项目的构建目录中。chat.go 被标记为已弃用但仍存在于项目中,造成维护困扰。conf/app.conf 中定义。代码中严禁出现 IP、端口、URL、密钥等字面量。app.conf 的内容决定。bee run 命令实现本地开发热重载。根据您的要求,采用 "单文件 + 模板" 策略:
conf/app.conf:
.gitignore。conf/app.conf.example (新增):
shudao-go-backend/
├── conf/
│ ├── app.conf (被 git 忽略,实际配置)
│ └── app.conf.example (新增,配置模板,含所有环境说明)
├── utils/
│ └── config.go (增强,提供类型安全的配置读取方法)
├── controllers/ (移除硬编码,改为调用 utils.GetConfig)
├── views/ (清理 .vue 和测试 html)
└── ...
目标:消除代码中的硬编码,建立统一配置读取机制。
conf/app.conf.example:
app.conf 和代码中的配置项。oss_endpoint, yolo_base_url)。utils/config.go:
AppConfig,提供如 GetString(key), MustGetString(key) 等方法,确保配置缺失时能快速报错(Fail Fast)。GetProxyURL 方法,不再硬编码域名,而是从配置读取 base_url。controllers/shudaooss.go: 替换 ossEndpoint 为配置读取。controllers/hazard.go: 替换 yoloBaseURL 为配置读取。controllers/chroma.go: 替换 apiURL 为配置读取。controllers/chat.go: 替换 http://172.16.35.50:8000 等硬编码地址。目标:清理废弃代码和无关文件,确保项目纯净。
views/liushitest.vue。views/*.html 测试文件(如果必须保留,移至 tests/test_data/ 或类似目录,不要混在视图层)。controllers/chat.go 和 models/chat.go 移动到 _deprecated/ 目录(或直接删除,如果确认无用),并在文件名加 _deprecated 后缀,防止误引用。bee 工具。bee run 启动项目,验证修改文件后是否自动重新编译。目标:确保重构后各环境功能正常。
app.conf.example 为 app.conf。DEPLOY.md,说明在新环境部署时如何准备 app.conf。app.conf 中的 Key 命名变更导致旧代码读取失败。
utils/config.go 中使用 MustGet 类方法,如果配置缺失直接 Panic,避免静默失败。/)。
strings.TrimRight(url, "/") 处理配置项。chat.go 删除导致前端旧版本报错。
chat.go 文件,但将其内部逻辑标记为 Deprecated,并确认前端请求是否已路由到微服务。appname = shudao-chat-go
httpport = 22001
runmode = dev
# ==========================================
# 基础配置 (Base Config)
# ==========================================
# 本地: https://127.0.0.1:22000
# 生产: https://aqai.shudaodsj.com:22000
base_url = "https://aqai.shudaodsj.com:22000"
# ==========================================
# 数据库配置 (Database)
# ==========================================
mysql_user = "root"
mysql_pass = "password"
mysql_urls = "127.0.0.1"
mysql_port = "3306"
mysql_db = "shudao"
# ==========================================
# 外部服务 (External Services)
# ==========================================
# 认证服务
auth_api_url = "http://127.0.0.1:28004/api/auth/verify"
# OSS 配置
oss_endpoint = "http://172.16.17.52:8060"
oss_access_key = "..."
oss_secret_key = "..."
oss_bucket = "gdsc-ai-aqzs"
# 模型服务
deepseek_api_url = "https://api.deepseek.com"
deepseek_api_key = "..."
yolo_base_url = "http://172.16.35.50:18080"