main
Go 实现 /api/v1/analysis 契约、Demo/Live Worker、DeerFlow SSE;含设计文档与冒烟脚本。 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/healthPOST /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。
目录
cmd/server 入口
internal/api HTTP
internal/service 编排 / 鉴权投影 / DemoWorker
internal/worker LiveWorker / LiveChainRunner / 提示词
internal/deerflow 登录、SSE、模型校验
internal/repo MySQL
internal/domain 作业实体与状态常量
internal/config 环境变量
docs/ 设计要求(自 Java 同步)+ env.sample
日志
遵循设计要求 §11:业务日志带 jobId=;禁止打印 token/密码/完整 dialogues。
当前写 stdout,正式环境用 systemd/Docker 收集或挂滚动文件。
Languages
Go
98.9%
Shell
1.1%