# eightbf-analysis-go 8BF「多岗位会商」后台服务的 **Go 实现**,行为对齐 Java 仓 `eightbf-analysis` 与 [docs/服务端开发设计要求.md](./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`(尚无领取互斥)。切换时停掉一侧再起另一侧。 ## 运行 ```bash # 需要 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 ``` 构建: ```bash go build -o bin/eightbf-analysis-go ./cmd/server ./bin/eightbf-analysis-go ``` ## 接口(与 Java 一致) - `GET /api/v1/analysis/health` - `POST /api/v1/analysis/jobs` - `GET /api/v1/analysis/jobs/{id}` - `GET /api/v1/analysis/jobs?taskId=&latest=` - `POST /api/v1/analysis/jobs/{id}/cancel|resume|plan|inject` - `GET /api/v1/analysis/jobs/{id}/result` 身份头:`X-Account-Id`、`X-Analysis-Role`。 ## 目录 ```text 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 收集或挂滚动文件。