Files
eightbf-analysis-go/README.md
T
gozerosandCursor 0c45b86d67 chore: 初始化 eightbf-analysis-go(对齐 Java 会商作业服务)
Go 实现 /api/v1/analysis 契约、Demo/Live Worker、DeerFlow SSE;含设计文档与冒烟脚本。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-11-03 00:13:46 +08:00

75 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 收集或挂滚动文件。