Go 实现 /api/v1/analysis 契约、Demo/Live Worker、DeerFlow SSE;含设计文档与冒烟脚本。 Co-authored-by: Cursor <cursoragent@cursor.com>
75 lines
2.3 KiB
Markdown
75 lines
2.3 KiB
Markdown
# 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 收集或挂滚动文件。
|