feat: restore learning feedback and knowledge capabilities
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
# 开放平台组织与预算同步 API 设计方案 v1
|
||||
|
||||
> 线上前缀修正(2026-07-15):当前域名 `https://wuye.meihe.cc` 只有 `/api/*` 会代理到后端开放平台;实际接入必须使用 `https://wuye.meihe.cc/api/open/v1`。不要使用 `https://wuye.meihe.cc/open/v1`,否则可能命中前端 SPA 或 nginx,返回 HTML 而不是开放接口 JSON。
|
||||
|
||||
## 1. 文档目标
|
||||
|
||||
本文档用于定义本系统对外开放的组织与预算同步方案,覆盖以下对象:
|
||||
@@ -47,7 +49,7 @@
|
||||
|
||||
### 3.2 架构原则
|
||||
|
||||
- 对外统一入口:全部走 `backend` 的 `/open/v1/*`
|
||||
- 对外统一入口:全部走 `backend` 的 `/api/open/v1/*`
|
||||
- 内外账号隔离:外部系统不用内部员工登录账号
|
||||
- 事件通知最小化:通知消息只传事件元信息,不传完整业务数据
|
||||
- 数据主动拉取:业务明细通过开放接口主动拉取
|
||||
@@ -68,7 +70,7 @@
|
||||
↓
|
||||
订阅者收到消息
|
||||
↓
|
||||
7天内调用 /open/v1/sync/changes 或对象接口主动拉取
|
||||
7天内调用 /api/open/v1/sync/changes 或对象接口主动拉取
|
||||
↓
|
||||
记录同步任务、同步明细、游标、审计日志
|
||||
↓
|
||||
@@ -470,66 +472,66 @@ X-Nonce
|
||||
开放平台统一前缀:
|
||||
|
||||
```text
|
||||
/open/v1
|
||||
/api/open/v1
|
||||
```
|
||||
|
||||
### 9.1 认证接口
|
||||
|
||||
- `POST /open/v1/auth/token`
|
||||
- `POST /open/v1/auth/refresh`
|
||||
- `GET /open/v1/auth/me`
|
||||
- `POST /api/open/v1/auth/token`
|
||||
- `POST /api/open/v1/auth/refresh`
|
||||
- `GET /api/open/v1/auth/me`
|
||||
|
||||
### 9.2 订阅管理接口
|
||||
|
||||
- `POST /open/v1/subscriptions`
|
||||
- `GET /open/v1/subscriptions`
|
||||
- `GET /open/v1/subscriptions/{subscription_id}`
|
||||
- `PATCH /open/v1/subscriptions/{subscription_id}`
|
||||
- `POST /open/v1/subscriptions/{subscription_id}/enable`
|
||||
- `POST /open/v1/subscriptions/{subscription_id}/disable`
|
||||
- `POST /api/open/v1/subscriptions`
|
||||
- `GET /api/open/v1/subscriptions`
|
||||
- `GET /api/open/v1/subscriptions/{subscription_id}`
|
||||
- `PATCH /api/open/v1/subscriptions/{subscription_id}`
|
||||
- `POST /api/open/v1/subscriptions/{subscription_id}/enable`
|
||||
- `POST /api/open/v1/subscriptions/{subscription_id}/disable`
|
||||
|
||||
### 9.3 事件通知接口
|
||||
|
||||
- `GET /open/v1/events`
|
||||
- `GET /open/v1/events/{event_id}`
|
||||
- `POST /open/v1/events/{event_id}/ack`
|
||||
- `POST /open/v1/events/{event_id}/nack`
|
||||
- `GET /api/open/v1/events`
|
||||
- `GET /api/open/v1/events/{event_id}`
|
||||
- `POST /api/open/v1/events/{event_id}/ack`
|
||||
- `POST /api/open/v1/events/{event_id}/nack`
|
||||
|
||||
### 9.4 数据拉取接口
|
||||
|
||||
- `GET /open/v1/sync/changes`
|
||||
- `GET /open/v1/sync/snapshot`
|
||||
- `GET /open/v1/groups/{id}`
|
||||
- `GET /open/v1/companies/{id}`
|
||||
- `GET /open/v1/departments/{id}`
|
||||
- `GET /open/v1/employees/{id}`
|
||||
- `GET /open/v1/budget-versions/{id}`
|
||||
- `GET /open/v1/budget-subjects/{id}`
|
||||
- `GET /open/v1/budget-items/{id}`
|
||||
- `GET /open/v1/budget-plans/{id}`
|
||||
- `GET /api/open/v1/sync/changes`
|
||||
- `GET /api/open/v1/sync/snapshot`
|
||||
- `GET /api/open/v1/groups/{id}`
|
||||
- `GET /api/open/v1/companies/{id}`
|
||||
- `GET /api/open/v1/departments/{id}`
|
||||
- `GET /api/open/v1/employees/{id}`
|
||||
- `GET /api/open/v1/budget-versions/{id}`
|
||||
- `GET /api/open/v1/budget-subjects/{id}`
|
||||
- `GET /api/open/v1/budget-items/{id}`
|
||||
- `GET /api/open/v1/budget-plans/{id}`
|
||||
|
||||
### 9.5 同步任务接口
|
||||
|
||||
- `POST /open/v1/sync/jobs`
|
||||
- `GET /open/v1/sync/jobs/{job_id}`
|
||||
- `POST /open/v1/sync/jobs/{job_id}/complete`
|
||||
- `POST /api/open/v1/sync/jobs`
|
||||
- `GET /api/open/v1/sync/jobs/{job_id}`
|
||||
- `POST /api/open/v1/sync/jobs/{job_id}/complete`
|
||||
|
||||
### 9.6 补数申请接口
|
||||
|
||||
- `POST /open/v1/replay-requests`
|
||||
- `GET /open/v1/replay-requests`
|
||||
- `GET /open/v1/replay-requests/{request_id}`
|
||||
- `POST /open/v1/replay-requests/{request_id}/cancel`
|
||||
- `POST /open/v1/replay-requests/{request_id}/approve`
|
||||
- `POST /open/v1/replay-requests/{request_id}/reject`
|
||||
- `POST /open/v1/replay-requests/{request_id}/execute`
|
||||
- `POST /api/open/v1/replay-requests`
|
||||
- `GET /api/open/v1/replay-requests`
|
||||
- `GET /api/open/v1/replay-requests/{request_id}`
|
||||
- `POST /api/open/v1/replay-requests/{request_id}/cancel`
|
||||
- `POST /api/open/v1/replay-requests/{request_id}/approve`
|
||||
- `POST /api/open/v1/replay-requests/{request_id}/reject`
|
||||
- `POST /api/open/v1/replay-requests/{request_id}/execute`
|
||||
|
||||
### 9.7 追踪与审计接口
|
||||
|
||||
- `GET /open/v1/traces/{trace_id}`
|
||||
- `GET /open/v1/audits`
|
||||
- `GET /open/v1/subscriptions/{subscription_id}/deliveries`
|
||||
- `GET /open/v1/subscriptions/{subscription_id}/sync-records`
|
||||
- `GET /api/open/v1/traces/{trace_id}`
|
||||
- `GET /api/open/v1/audits`
|
||||
- `GET /api/open/v1/subscriptions/{subscription_id}/deliveries`
|
||||
- `GET /api/open/v1/subscriptions/{subscription_id}/sync-records`
|
||||
|
||||
---
|
||||
|
||||
@@ -537,7 +539,7 @@ X-Nonce
|
||||
|
||||
### 10.1 获取令牌
|
||||
|
||||
`POST /open/v1/auth/token`
|
||||
`POST /api/open/v1/auth/token`
|
||||
|
||||
请求示例:
|
||||
|
||||
@@ -565,11 +567,11 @@ X-Nonce
|
||||
|
||||
### 10.2 刷新令牌
|
||||
|
||||
`POST /open/v1/auth/refresh`
|
||||
`POST /api/open/v1/auth/refresh`
|
||||
|
||||
### 10.3 查询当前应用
|
||||
|
||||
`GET /open/v1/auth/me`
|
||||
`GET /api/open/v1/auth/me`
|
||||
|
||||
返回内容:
|
||||
|
||||
@@ -587,7 +589,7 @@ X-Nonce
|
||||
|
||||
### 11.1 创建订阅
|
||||
|
||||
`POST /open/v1/subscriptions`
|
||||
`POST /api/open/v1/subscriptions`
|
||||
|
||||
请求示例:
|
||||
|
||||
@@ -633,7 +635,7 @@ X-Nonce
|
||||
|
||||
### 11.2 查询订阅列表
|
||||
|
||||
`GET /open/v1/subscriptions`
|
||||
`GET /api/open/v1/subscriptions`
|
||||
|
||||
支持筛选:
|
||||
|
||||
@@ -643,8 +645,8 @@ X-Nonce
|
||||
|
||||
### 11.3 启停订阅
|
||||
|
||||
- `POST /open/v1/subscriptions/{subscription_id}/enable`
|
||||
- `POST /open/v1/subscriptions/{subscription_id}/disable`
|
||||
- `POST /api/open/v1/subscriptions/{subscription_id}/enable`
|
||||
- `POST /api/open/v1/subscriptions/{subscription_id}/disable`
|
||||
|
||||
---
|
||||
|
||||
@@ -652,7 +654,7 @@ X-Nonce
|
||||
|
||||
### 12.1 拉取事件列表
|
||||
|
||||
`GET /open/v1/events`
|
||||
`GET /api/open/v1/events`
|
||||
|
||||
查询参数:
|
||||
|
||||
@@ -685,7 +687,7 @@ X-Nonce
|
||||
|
||||
### 12.2 事件确认收到
|
||||
|
||||
`POST /open/v1/events/{event_id}/ack`
|
||||
`POST /api/open/v1/events/{event_id}/ack`
|
||||
|
||||
请求示例:
|
||||
|
||||
@@ -698,7 +700,7 @@ X-Nonce
|
||||
|
||||
### 12.3 事件确认失败
|
||||
|
||||
`POST /open/v1/events/{event_id}/nack`
|
||||
`POST /api/open/v1/events/{event_id}/nack`
|
||||
|
||||
请求示例:
|
||||
|
||||
@@ -715,7 +717,7 @@ X-Nonce
|
||||
|
||||
### 13.1 增量拉取
|
||||
|
||||
`GET /open/v1/sync/changes`
|
||||
`GET /api/open/v1/sync/changes`
|
||||
|
||||
查询参数:
|
||||
|
||||
@@ -758,7 +760,7 @@ X-Nonce
|
||||
|
||||
### 13.2 全量快照拉取
|
||||
|
||||
`GET /open/v1/sync/snapshot`
|
||||
`GET /api/open/v1/sync/snapshot`
|
||||
|
||||
查询参数:
|
||||
|
||||
@@ -779,35 +781,35 @@ X-Nonce
|
||||
|
||||
#### 集团
|
||||
|
||||
`GET /open/v1/groups/{id}`
|
||||
`GET /api/open/v1/groups/{id}`
|
||||
|
||||
#### 公司
|
||||
|
||||
`GET /open/v1/companies/{id}`
|
||||
`GET /api/open/v1/companies/{id}`
|
||||
|
||||
#### 部门
|
||||
|
||||
`GET /open/v1/departments/{id}`
|
||||
`GET /api/open/v1/departments/{id}`
|
||||
|
||||
#### 员工
|
||||
|
||||
`GET /open/v1/employees/{id}`
|
||||
`GET /api/open/v1/employees/{id}`
|
||||
|
||||
#### 预算版本
|
||||
|
||||
`GET /open/v1/budget-versions/{id}`
|
||||
`GET /api/open/v1/budget-versions/{id}`
|
||||
|
||||
#### 预算科目
|
||||
|
||||
`GET /open/v1/budget-subjects/{id}`
|
||||
`GET /api/open/v1/budget-subjects/{id}`
|
||||
|
||||
#### 预算项
|
||||
|
||||
`GET /open/v1/budget-items/{id}`
|
||||
`GET /api/open/v1/budget-items/{id}`
|
||||
|
||||
#### 预算计划
|
||||
|
||||
`GET /open/v1/budget-plans/{id}`
|
||||
`GET /api/open/v1/budget-plans/{id}`
|
||||
|
||||
### 13.4 单对象接口通用参数
|
||||
|
||||
@@ -821,7 +823,7 @@ X-Nonce
|
||||
|
||||
### 14.1 创建同步任务
|
||||
|
||||
`POST /open/v1/sync/jobs`
|
||||
`POST /api/open/v1/sync/jobs`
|
||||
|
||||
用途:
|
||||
|
||||
@@ -853,11 +855,11 @@ X-Nonce
|
||||
|
||||
### 14.2 查询同步任务
|
||||
|
||||
`GET /open/v1/sync/jobs/{job_id}`
|
||||
`GET /api/open/v1/sync/jobs/{job_id}`
|
||||
|
||||
### 14.3 回报同步结果
|
||||
|
||||
`POST /open/v1/sync/jobs/{job_id}/complete`
|
||||
`POST /api/open/v1/sync/jobs/{job_id}/complete`
|
||||
|
||||
请求示例:
|
||||
|
||||
@@ -932,7 +934,7 @@ X-Nonce
|
||||
|
||||
### 16.3 发起补数申请
|
||||
|
||||
`POST /open/v1/replay-requests`
|
||||
`POST /api/open/v1/replay-requests`
|
||||
|
||||
请求示例:
|
||||
|
||||
@@ -963,29 +965,29 @@ X-Nonce
|
||||
|
||||
### 16.4 查询补数申请
|
||||
|
||||
`GET /open/v1/replay-requests`
|
||||
`GET /api/open/v1/replay-requests`
|
||||
|
||||
### 16.5 查询补数申请详情
|
||||
|
||||
`GET /open/v1/replay-requests/{request_id}`
|
||||
`GET /api/open/v1/replay-requests/{request_id}`
|
||||
|
||||
### 16.6 取消补数申请
|
||||
|
||||
`POST /open/v1/replay-requests/{request_id}/cancel`
|
||||
`POST /api/open/v1/replay-requests/{request_id}/cancel`
|
||||
|
||||
### 16.7 审批补数申请
|
||||
|
||||
#### 批准
|
||||
|
||||
`POST /open/v1/replay-requests/{request_id}/approve`
|
||||
`POST /api/open/v1/replay-requests/{request_id}/approve`
|
||||
|
||||
#### 驳回
|
||||
|
||||
`POST /open/v1/replay-requests/{request_id}/reject`
|
||||
`POST /api/open/v1/replay-requests/{request_id}/reject`
|
||||
|
||||
### 16.8 执行补数
|
||||
|
||||
`POST /open/v1/replay-requests/{request_id}/execute`
|
||||
`POST /api/open/v1/replay-requests/{request_id}/execute`
|
||||
|
||||
执行方式:
|
||||
|
||||
@@ -999,7 +1001,7 @@ X-Nonce
|
||||
|
||||
### 17.1 查询链路追踪
|
||||
|
||||
`GET /open/v1/traces/{trace_id}`
|
||||
`GET /api/open/v1/traces/{trace_id}`
|
||||
|
||||
返回应包含:
|
||||
|
||||
@@ -1014,7 +1016,7 @@ X-Nonce
|
||||
|
||||
### 17.2 查询审计日志
|
||||
|
||||
`GET /open/v1/audits`
|
||||
`GET /api/open/v1/audits`
|
||||
|
||||
可按以下条件筛选:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user