6ef395a7f59b472d76126c8d379fb3c5d373b7f3
与 Java 对齐,避免新版 Gateway「会商会话标识缺失」。 Co-authored-by: Cursor <cursoragent@cursor.com>
eightbf-analysis-go
8BF「多岗位会商」后台服务的 Go 实现,行为对齐 Java 仓 eightbf-analysis 与
docs/服务端开发设计要求.md。
- 同一套 HTTP:
/api/v1/analysis/... - 同一张表:
eba_analysis_job(schema.sql) - 同一套环境变量:
EBA_DB_*/EBA_DF_*(Go 另支持EBA_DB_DSN) - 前端可经 Nginx
/analysis-api指向本进程(默认仍:18097,勿与 Java 实例同时占端口)
与 Java 的关系
| Java | Go(本仓) | |
|---|---|---|
| 定位 | 现网/本机主用 | 同构移植,便于无 JVM 环境部署 |
| API | 权威契约 | 兼容同一契约 |
| 表结构 | schema.sql |
共用同一 schema |
两进程不要同时写同一库抢同一 queued(尚无领取互斥)。切换时停掉一侧再起另一侧。
运行
# 需要 Go 1.21+、MySQL(库 eightbf_analysis)
export EBA_DB_USER=eba
export EBA_DB_PASSWORD=eba_local_dev
# 或直接:
# export EBA_DB_DSN='eba:eba_local_dev@tcp(127.0.0.1:3306)/eightbf_analysis?parseTime=true&loc=Asia%2FShanghai&charset=utf8mb4'
export EBA_DF_BASE_URL=http://127.0.0.1:8001
export ANALYSIS_MODE=live # demo 则假进度
# export ANALYSIS_AUTH_ENABLED=true
cd /project/eightbf-analysis-go
go run ./cmd/server
# 默认 :18097
构建:
go build -o bin/eightbf-analysis-go ./cmd/server
./bin/eightbf-analysis-go
接口(与 Java 一致)
GET /api/v1/analysis/health— 存活GET /api/v1/analysis/ready— 就绪(含 MySQL ping,失败 503)POST /api/v1/analysis/jobsGET /api/v1/analysis/jobs/{id}GET /api/v1/analysis/jobs?taskId=&latest=POST /api/v1/analysis/jobs/{id}/cancel|resume|plan|injectGET /api/v1/analysis/jobs/{id}/result
身份头:X-Account-Id、X-Analysis-Role。响应头带回 X-Request-Id。
目录
cmd/server 入口(优雅停机)
internal/api Gin 路由 + 审计日志 + 中间件
internal/logging zap / 滚动文件
internal/service 编排 / 鉴权投影 / DemoWorker
internal/worker LiveWorker / LiveChainRunner / 提示词
internal/deerflow 登录、SSE、模型校验
internal/repo sqlx + MySQL
internal/domain 作业实体与状态常量
internal/config Viper 读环境变量 + 启动校验
deploy/ systemd unit
docs/ 设计要求、运维、env.sample
Dockerfile
日志与运维
见 docs/运维.md。要点:
LOG_LEVEL/LOG_FILE(滚动,默认保留 14 天)- 写操作 INFO 审计:
jobId/accountId/reqId EBA_STRICT_CONFIG=true禁止 live 默认弱口令启动- SIGTERM 优雅停机;systemd 见
deploy/eightbf-analysis-go.service
Languages
Go
98.4%
Shell
0.9%
Dockerfile
0.7%