Merge branch 'deai2'

Co-Authored-By: Claude Fable 5.1 <[email protected]>

# Conflicts:
#	apps/server/src/modules/acquisition-organize/services/organize.ts
#	apps/web/app/routes/console/sites.$siteId.tsx
This commit is contained in:
root committed 2026-09-29 21:26:16 +08:00
commit 12bc4664b6
247 files changed
+2658 -2148

No files matched your search

+27 -27
View File
@@ -719,7 +719,7 @@ export const Api = {
path: "/subscriptions/{id}/coverage",
scope: "read",
summary:
"覆盖矩阵:季 → 集 × 版本目标(电影:内容版本 × 版本目标),每格 have/inflight/missing/skipped;缓存 30s,refresh=true 强制重算",
"覆盖矩阵:季 → 集 × 收录版本(电影:内容版本 × 收录版本),每格 have/inflight/missing/skipped;缓存 30s,refresh=true 强制重算",
params: IdParam,
query: z.object({ refresh: z.enum(["true", "false"]).optional() }),
response: policy.SubscriptionCoverage,
@@ -760,7 +760,7 @@ export const Api = {
method: "post",
path: "/subscriptions/{id}/slots/{slotId}/fill",
scope: "admin",
summary: "手动补全某版本目标(不受自动补全开关与补全预算限制)",
summary: "手动补全某收录版本(不受自动补全开关与补全预算限制)",
params: z.object({ id: Id, slotId: Id }),
body: policy.SlotFillRequest,
response: z.object({ runId: z.string(), deduplicated: z.boolean() }),
@@ -769,7 +769,7 @@ export const Api = {
method: "put",
path: "/subscriptions/{id}/slot-order",
scope: "admin",
summary: "版本目标排序(第一个为主版本)",
summary: "收录版本排序(第一个为主版本)",
params: IdParam,
body: policy.SlotOrderSet,
response: z.array(policy.AcquisitionSlot),
@@ -786,7 +786,7 @@ export const Api = {
method: "get",
path: "/subscriptions/{id}/progress",
scope: "read",
summary: "订阅进度:季总集数账本、每集状态(已覆盖/在途/缺失/疑似缺集)、版本目标在途与延后",
summary: "订阅进度:季总集数账本、每集状态(已覆盖/在途/缺失/疑似缺集)、收录版本在途与延后",
params: IdParam,
response: policy.SubscriptionProgress,
}),
@@ -849,7 +849,7 @@ export const Api = {
},
acquisitionSlots: crud(
"/acquisition-slots",
"版本目标",
"收录版本",
{
row: policy.AcquisitionSlot,
create: policy.AcquisitionSlotCreate,
@@ -1227,7 +1227,7 @@ export const Api = {
method: "get",
path: "/agent/runs",
scope: "read",
summary: "Agent 运行列表(新→旧)",
summary: "智能体运行列表(新→旧)",
query: agent.AgentRunListQuery,
response: cursorPage(agent.AgentRun),
}),
@@ -1235,7 +1235,7 @@ export const Api = {
method: "get",
path: "/agent/runs/{id}",
scope: "read",
summary: "Agent 运行详情:事件按 seq 分页、追加消息、服务端核查的目标汇报",
summary: "智能体运行详情:事件按 seq 分页、追加消息、服务端核查的目标汇报",
params: IdParam,
query: agent.AgentRunDetailQuery,
response: agent.AgentRunDetail,
@@ -1617,7 +1617,7 @@ export const Api = {
method: "get",
path: "/capabilities/stats",
scope: "read",
summary: "能力调用统计:每能力调用数、失败数、平均耗时、最近调用、调用来源(内置 Agent / MCP / REST)",
summary: "能力调用统计:每能力调用数、失败数、平均耗时、最近调用、调用来源(内置智能体 / MCP / REST)",
query: mcp.CapabilityStatsQuery,
response: mcp.CapabilityStatsResponse,
}),
@@ -1775,14 +1775,14 @@ export const Api = {
method: "get",
path: "/pi/upstreams",
scope: "admin",
summary: "Agent 上游列表(不含密钥)",
summary: "模型服务列表(不含密钥)",
response: pi.PiUpstreamList,
}),
get: ep({
method: "get",
path: "/pi/upstreams/{id}",
scope: "admin",
summary: "Agent 上游详情",
summary: "模型服务详情",
params: IdParam,
response: pi.PiUpstream,
}),
@@ -1791,7 +1791,7 @@ export const Api = {
path: "/pi/upstreams",
scope: "admin",
auth: "session",
summary: "新建 Agent 上游(apiKey 只写,存 secret 表)",
summary: "新建模型服务(apiKey 只写,存 secret 表)",
body: pi.PiUpstreamCreate,
response: pi.PiUpstream,
}),
@@ -1800,7 +1800,7 @@ export const Api = {
path: "/pi/upstreams/{id}",
scope: "admin",
auth: "session",
summary: "修改 Agent 上游(provider 不可改;makeDefault 设默认上游)",
summary: "修改模型服务(provider 不可改;makeDefault 设默认模型服务)",
params: IdParam,
body: pi.PiUpstreamUpdate,
response: pi.PiUpstream,
@@ -1810,7 +1810,7 @@ export const Api = {
path: "/pi/upstreams/{id}",
scope: "admin",
auth: "session",
summary: "删除 Agent 上游(连同凭据;是默认上游时清空默认)",
summary: "删除模型服务(连同凭据;是默认模型服务时清空默认)",
params: IdParam,
response: OkResult,
}),
@@ -1819,7 +1819,7 @@ export const Api = {
path: "/pi/upstreams/{id}/test",
scope: "admin",
auth: "session",
summary: "测试上游:默认只解析凭据与校验模型(不产生费用);mode=completion 发一次最小补全",
summary: "测试模型服务:默认只解析凭据与校验模型(不产生费用);mode=completion 发一次最小补全",
params: IdParam,
body: pi.PiUpstreamTestRequest,
response: pi.PiUpstreamTestResult,
@@ -1828,7 +1828,7 @@ export const Api = {
method: "get",
path: "/pi/upstreams/{id}/models",
scope: "admin",
summary: "上游模型列表:已获取过远程列表时返回远程与静态目录的合并(远程优先),否则静态目录",
summary: "模型列表:已获取过远程列表时返回远程与静态目录的合并(远程优先),否则静态目录",
params: IdParam,
response: pi.PiUpstreamModels,
}),
@@ -1837,7 +1837,7 @@ export const Api = {
path: "/pi/upstreams/{id}/models/refresh",
scope: "admin",
auth: "session",
summary: "获取模型列表:用该上游的凭证调 provider 的模型列表接口并存库;失败或不支持时回静态目录并给出原因",
summary: "获取模型列表:用该模型服务的凭证调 provider 的模型列表接口并存库;失败或不支持时回静态目录并给出原因",
params: IdParam,
response: pi.PiUpstreamModels,
}),
@@ -1846,7 +1846,7 @@ export const Api = {
path: "/pi/models/probe",
scope: "admin",
auth: "session",
summary: "新建上游前试拉模型列表(凭证只用于这一次请求,不落库)",
summary: "新建模型服务前试拉模型列表(凭证只用于这一次请求,不落库)",
body: pi.PiModelsProbeRequest,
response: pi.PiUpstreamModels,
}),
@@ -2112,7 +2112,7 @@ export const Api = {
method: "get",
path: "/identity-pool",
scope: "read",
summary: "待识别池(可按原始标题检索;候选不建正式作品)",
summary: "未识别资源(可按原始标题检索;候选不建正式作品)",
query: identity.IdentityPoolQuery,
response: cursorPage(identity.IdentityPoolItem),
}),
@@ -2120,7 +2120,7 @@ export const Api = {
method: "post",
path: "/identity-pool/{id}/assign",
scope: "organize.execute",
summary: "为待识别资源手动指定候选 / 本地作品 / 外部身份",
summary: "为未识别资源手动指定候选 / 本地作品 / 外部身份",
params: IdParam,
body: identity.ReleaseIdentityAssign,
response: ReleaseIdentityResult,
@@ -2129,7 +2129,7 @@ export const Api = {
method: "post",
path: "/identity-pool/{id}/dismiss",
scope: "organize.execute",
summary: "忽略待识别资源(不再自动复查)",
summary: "忽略未识别资源(不再自动复查)",
params: IdParam,
body: z.object({ note: z.string().max(2000).optional() }),
response: identity.IdentityCandidate,
@@ -2157,7 +2157,7 @@ export const Api = {
path: "/identity-pool/{id}/enrich/apply",
scope: "admin",
auth: "session",
summary: "应用元数据补全建议:建本地临时作品(或并入同名作品)并关联待识别资源(只接受控制台管理员会话)",
summary: "应用元数据补全建议:建本地临时作品(或并入同名作品)并关联未识别资源(只接受控制台管理员会话)",
params: IdParam,
body: identity.EnrichApplyInput,
response: identity.EnrichApplyResult,
@@ -2178,7 +2178,7 @@ export const Api = {
method: "get",
path: "/library/{id}",
scope: "read",
summary: "作品详情:实际路径、身份映射、元数据来源、各版本目标、候选拒绝理由、下载历史与校验结果",
summary: "作品详情:实际路径、身份映射、元数据来源、各收录版本、候选拒绝理由、下载历史与校验结果",
params: IdParam,
response: organization.LibraryDetail,
}),
@@ -2205,7 +2205,7 @@ export const Api = {
method: "get",
path: "/inventory",
scope: "read",
summary: "库存叠加(站点工作台):按作品返回已有版本 / 版本目标缺口 / 下载中",
summary: "库存叠加(站点工作台):按作品返回已有版本 / 收录版本缺口 / 下载中",
query: organization.InventoryQuery,
response: organization.InventoryResponse,
}),
@@ -2482,7 +2482,7 @@ export const Api = {
method: "post",
path: "/browser/sessions/{id}/control/release",
scope: "admin",
summary: "交还控制权:Agent 恢复前必须重新读取页面,旧元素引用失效",
summary: "交还控制权:智能体恢复前必须重新读取页面,旧元素引用失效",
params: browser.BrowserSessionParams,
body: browser.BrowserControlRelease,
response: browser.BrowserControlResult,
@@ -2496,7 +2496,7 @@ export const Api = {
path: "/schedules",
scope: "admin",
auth: "session",
summary: "定时任务看板:全部登记的周期任务与 Agent 巡检、统计、调度器是否在线",
summary: "定时任务看板:全部登记的周期任务与智能体巡检、统计、调度器是否在线",
response: schedules.ScheduleBoard,
}),
create: ep({
@@ -2504,7 +2504,7 @@ export const Api = {
path: "/schedules",
scope: "admin",
auth: "session",
summary: "新建自定义 Agent 巡检(目标模板 + 能力白名单 + 预算 + 间隔)",
summary: "新建自定义智能体巡检(目标模板 + 能力白名单 + 预算 + 间隔)",
body: schedules.AgentCheckCreate,
response: schedules.ScheduledJob,
}),
@@ -2523,7 +2523,7 @@ export const Api = {
path: "/schedules/{id}",
scope: "admin",
auth: "session",
summary: "删除自定义 Agent 巡检(内置任务不可删)",
summary: "删除自定义智能体巡检(内置任务不可删)",
params: schedules.ScheduleIdParam,
response: OkResult,
}),