436 lines
47 KiB
Go
436 lines
47 KiB
Go
package swagger
|
||
|
||
import "strings"
|
||
|
||
type routeDoc struct {
|
||
Summary string
|
||
Description string
|
||
}
|
||
|
||
// routeDocs maps "METHOD path" (Gin syntax, e.g. "GET /api/tenant/articles/:id")
|
||
// to a human-readable summary and longer description shown in Swagger UI.
|
||
//
|
||
// Keep keys in sync with the Gin routes registered in
|
||
// internal/tenant/transport/router.go (and bootstrap health routes).
|
||
// Missing entries fall back to "<METHOD> <path>" automatically.
|
||
var routeDocs = map[string]routeDoc{
|
||
// --- Health ---
|
||
"GET /api/health/live": {"存活探针", "Kubernetes liveness 探针,永远返回 200。"},
|
||
"GET /api/health/ready": {"就绪探针", "Kubernetes readiness 探针,依赖(数据库等)就绪后返回 200。"},
|
||
|
||
// --- Ops:认证与账号 ---
|
||
"GET /api/ops/auth/password-key": {"Ops 登录密码加密公钥", "返回 Ops 登录密码前端加密使用的临时公钥与 key_id。"},
|
||
"POST /api/ops/auth/login": {"Ops 账号密码登录", "Ops 控制台账号密码登录,返回 access token。"},
|
||
"GET /api/ops/auth/me": {"Ops 当前用户", "返回当前 Ops JWT 对应的账号信息。"},
|
||
"POST /api/ops/auth/password": {"Ops 修改密码", "当前 Ops 用户修改自己的密码。"},
|
||
|
||
"GET /api/ops/accounts": {"Ops 账号列表", "分页查询 Ops 管理员账号。"},
|
||
"POST /api/ops/accounts": {"新建 Ops 账号", "创建新的 Ops 管理员账号。"},
|
||
"GET /api/ops/accounts/:id": {"Ops 账号详情", "读取指定 Ops 管理员账号详情。"},
|
||
"PATCH /api/ops/accounts/:id": {"更新 Ops 账号", "更新指定 Ops 管理员账号资料。"},
|
||
"POST /api/ops/accounts/:id/status": {"切换 Ops 账号状态", "启用或停用指定 Ops 管理员账号。"},
|
||
"POST /api/ops/accounts/:id/password": {"重置 Ops 账号密码", "为指定 Ops 管理员账号重置登录密码。"},
|
||
|
||
"GET /api/ops/plans": {"租户套餐列表", "返回可分配给租户管理员的套餐列表。"},
|
||
"GET /api/ops/roles": {"Ops 角色列表", "返回 Ops 控制台可用角色列表。"},
|
||
|
||
"GET /api/ops/admin-users": {"租户管理员列表", "分页查询租户管理员账号。"},
|
||
"POST /api/ops/admin-users": {"新建租户管理员", "创建租户管理员账号。"},
|
||
"GET /api/ops/admin-users/:id": {"租户管理员详情", "读取租户管理员账号详情。"},
|
||
"PATCH /api/ops/admin-users/:id": {"更新租户管理员", "更新租户管理员基础资料。"},
|
||
"POST /api/ops/admin-users/:id/plan": {"调整租户套餐", "调整租户管理员账号绑定的套餐。"},
|
||
"POST /api/ops/admin-users/:id/subscription-expiry": {"调整订阅到期时间", "更新租户管理员账号订阅到期时间。"},
|
||
"POST /api/ops/admin-users/:id/reset-plan-usage": {"重置套餐用量", "重置租户管理员账号套餐用量。"},
|
||
"POST /api/ops/admin-users/:id/role": {"调整租户角色", "调整租户管理员账号角色。"},
|
||
"POST /api/ops/admin-users/:id/kol": {"设置 KOL 身份", "设置租户管理员账号的 KOL 状态。"},
|
||
"POST /api/ops/admin-users/:id/status": {"切换租户管理员状态", "启用或停用租户管理员账号。"},
|
||
"POST /api/ops/admin-users/:id/password": {"重置租户管理员密码", "重置租户管理员账号登录密码。"},
|
||
"POST /api/ops/admin-users/:id/reset-login-lock": {"解除登录锁定", "解除租户管理员账号的登录失败锁定。"},
|
||
|
||
// --- Ops:业务运营 ---
|
||
"GET /api/ops/kol/packages": {"KOL 套餐列表(Ops)", "Ops 查看 KOL 市场套餐。"},
|
||
"GET /api/ops/kol/subscriptions": {"KOL 订阅列表(Ops)", "Ops 查看租户 KOL 订阅记录。"},
|
||
"POST /api/ops/kol/subscriptions/manual-bind": {"手动绑定 KOL 订阅", "Ops 为租户手动绑定 KOL 订阅。"},
|
||
"POST /api/ops/kol/subscriptions/:id/approve": {"审批 KOL 订阅", "Ops 审批指定 KOL 订阅。"},
|
||
"POST /api/ops/kol/subscriptions/:id/revoke": {"撤销 KOL 订阅", "Ops 撤销指定 KOL 订阅。"},
|
||
"GET /api/ops/audits": {"审计日志列表", "分页查询 Ops 审计日志。"},
|
||
"GET /api/ops/jobs": {"任务列表(Ops)", "分页查询后台任务。"},
|
||
"GET /api/ops/jobs/:source/:id": {"任务详情(Ops)", "读取指定来源与 ID 的任务详情。"},
|
||
"POST /api/ops/jobs/:source/:id/retry": {"重试任务(Ops)", "对失败任务发起重试。"},
|
||
"POST /api/ops/jobs/:source/:id/cancel": {"取消任务(Ops)", "取消指定后台任务。"},
|
||
"GET /api/ops/media-supply/resources": {"媒介资源列表(Ops)", "Ops 分页查看媒介供应资源。"},
|
||
"PUT /api/ops/media-supply/resources/:id/price": {"调整媒介资源价格(Ops)", "Ops 调整指定媒介资源的销售价格。"},
|
||
"PUT /api/ops/media-supply/resources/:id/visibility": {"切换媒介资源可见性", "Ops 启用或隐藏指定媒介供应资源。"},
|
||
"POST /api/ops/media-supply/sync-jobs": {"同步媒介资源(Ops)", "Ops 创建媒介供应资源同步任务。"},
|
||
"GET /api/ops/media-supply/wallets": {"媒介钱包列表(Ops)", "Ops 查询租户媒介供应钱包余额。"},
|
||
"POST /api/ops/media-supply/wallets/adjustments": {"调整媒介钱包(Ops)", "Ops 为租户创建媒介钱包余额调整。"},
|
||
|
||
// --- Ops:调度器 ---
|
||
"GET /api/ops/scheduler/jobs": {"调度任务列表", "分页查询调度器任务。"},
|
||
"GET /api/ops/scheduler/jobs/:key": {"调度任务详情", "读取指定调度任务详情。"},
|
||
"PATCH /api/ops/scheduler/jobs/:key": {"更新调度任务", "更新调度任务配置。"},
|
||
"POST /api/ops/scheduler/jobs/:key/enable": {"启用调度任务", "启用指定调度任务。"},
|
||
"POST /api/ops/scheduler/jobs/:key/disable": {"禁用调度任务", "禁用指定调度任务。"},
|
||
"POST /api/ops/scheduler/jobs/:key/run": {"手动触发调度任务", "立即触发指定调度任务。"},
|
||
"POST /api/ops/scheduler/jobs/:key/dry-run": {"试运行调度任务", "以 dry-run 模式触发指定调度任务。"},
|
||
"GET /api/ops/scheduler/jobs/:key/runs": {"调度运行历史", "查询指定调度任务运行历史。"},
|
||
"GET /api/ops/scheduler/instances": {"调度器实例列表", "查询当前调度器实例状态。"},
|
||
|
||
// --- Ops:站点映射 ---
|
||
"GET /api/ops/site-domain-mappings": {"站点域名映射列表", "分页查询站点域名映射。"},
|
||
"GET /api/ops/site-domain-mappings/export": {"导出站点域名映射", "按筛选条件导出站点域名映射 CSV。"},
|
||
"POST /api/ops/site-domain-mappings/import": {"导入站点域名映射", "Multipart 上传 CSV 批量导入站点域名映射。"},
|
||
"POST /api/ops/site-domain-mappings": {"新建站点域名映射", "创建站点域名映射。"},
|
||
"PATCH /api/ops/site-domain-mappings/:id": {"更新站点域名映射", "更新指定站点域名映射。"},
|
||
"POST /api/ops/site-domain-mappings/:id/active": {"切换站点域名映射状态", "启用或停用指定站点域名映射。"},
|
||
"DELETE /api/ops/site-domain-mappings/:id": {"删除站点域名映射", "删除指定站点域名映射。"},
|
||
|
||
// --- Ops:对象存储 ---
|
||
"GET /api/ops/object-storage/objects": {"对象存储列表", "按前缀、关键字和递归模式查询对象存储文件。"},
|
||
"GET /api/ops/object-storage/usage": {"对象存储用量", "读取对象存储 Bucket 原生用量统计。"},
|
||
"GET /api/ops/object-storage/objects/detail": {"对象详情", "读取对象元数据、公开访问地址和预览地址。"},
|
||
"GET /api/ops/object-storage/objects/url": {"解析对象访问地址", "生成对象可访问 URL;私有 Bucket 返回短期签名地址。"},
|
||
"GET /api/ops/object-storage/objects/download-url": {"解析对象下载地址", "生成带下载文件名响应头的短期签名下载地址。"},
|
||
"GET /api/ops/object-storage/objects/download": {"下载对象", "通过 Ops API 代理下载对象。"},
|
||
"POST /api/ops/object-storage/objects/upload": {"上传对象", "Multipart 上传单个对象,服务端限制 500MB。"},
|
||
"POST /api/ops/object-storage/objects/move": {"移动或重命名对象", "复制对象到目标 Key,可选择删除源对象。"},
|
||
"DELETE /api/ops/object-storage/objects": {"删除对象", "删除指定 Object Key 的对象。"},
|
||
"POST /api/ops/object-storage/folders": {"创建对象存储目录", "创建以 / 结尾的目录占位对象。"},
|
||
"DELETE /api/ops/object-storage/folders": {"删除对象存储目录", "按前缀递归删除目录下对象。"},
|
||
|
||
// --- Ops:桌面客户端版本 ---
|
||
"GET /api/ops/desktop-client/releases": {"桌面客户端版本列表", "分页查询桌面客户端版本配置。"},
|
||
"POST /api/ops/desktop-client/releases/upload": {"上传桌面客户端包(兼容)", "兼容旧版单请求 Multipart 上传。"},
|
||
"POST /api/ops/desktop-client/releases/direct-upload": {"初始化客户端包 OSS 直传", "校验文件信息并生成浏览器直传 OSS 的短期 PUT 签名 URL。"},
|
||
"POST /api/ops/desktop-client/releases/direct-upload/complete": {"完成客户端包 OSS 直传", "校验直传对象是否存在、大小是否匹配,并返回 Object Key、文件大小和 SHA256。"},
|
||
"POST /api/ops/desktop-client/releases/direct-upload/complete-jobs": {"创建 OSS 直传完成任务", "异步校验 OSS 直传对象并生成客户端版本上传完成任务。"},
|
||
"GET /api/ops/desktop-client/release-upload-complete-jobs/:job_id": {"查询客户端上传完成任务", "查询桌面客户端安装包上传完成任务的阶段、进度和失败原因。"},
|
||
"POST /api/ops/desktop-client/release-uploads": {"初始化客户端包分片上传", "创建分片上传会话,返回 upload_id、分片大小和分片数量。"},
|
||
"POST /api/ops/desktop-client/release-uploads/:upload_id/chunks/:chunk_index": {"上传客户端包分片", "Multipart 上传单个客户端安装包或更新包分片。"},
|
||
"POST /api/ops/desktop-client/release-uploads/:upload_id/complete": {"完成客户端包分片上传", "校验全部分片,流式写入 OSS,并返回 Object Key、文件大小和 SHA256。"},
|
||
"POST /api/ops/desktop-client/release-uploads/:upload_id/complete-jobs": {"创建分片上传完成任务", "异步合并并校验分片上传会话,生成客户端版本上传完成任务。"},
|
||
"DELETE /api/ops/desktop-client/release-uploads/:upload_id": {"取消客户端包分片上传", "取消分片上传会话并清理临时分片。"},
|
||
"POST /api/ops/desktop-client/releases": {"新建客户端版本", "创建桌面客户端版本配置。"},
|
||
"PATCH /api/ops/desktop-client/releases/:id": {"更新客户端版本", "更新桌面客户端版本配置。"},
|
||
"GET /api/ops/desktop-client/releases/:id/download-url": {"解析桌面客户端下载地址", "解析指定桌面客户端版本的下载地址。"},
|
||
"POST /api/ops/desktop-client/releases/:id/enabled": {"切换客户端版本状态", "启用或禁用指定桌面客户端版本。"},
|
||
"DELETE /api/ops/desktop-client/releases/:id": {"删除客户端版本", "删除指定桌面客户端版本配置。"},
|
||
"GET /api/ops/desktop-client/bug-reports": {"客户端 Bug 列表", "分页查询桌面客户端崩溃和用户反馈记录。"},
|
||
"GET /api/ops/desktop-client/bug-reports/:id": {"客户端 Bug 详情", "查看桌面客户端崩溃元数据、运行快照和 dump 对象。"},
|
||
"PATCH /api/ops/desktop-client/bug-reports/:id": {"更新客户端 Bug 状态", "调整客户端 Bug 状态、级别和处理备注。"},
|
||
"GET /api/ops/desktop-client/bug-reports/:id/dump-url": {"解析客户端 dump 下载地址", "生成指定客户端 Bug dump 文件的短期下载地址。"},
|
||
|
||
// --- Ops:合规 ---
|
||
"GET /api/ops/compliance/dictionaries": {"合规词库列表", "分页查询内容合规词库。"},
|
||
"POST /api/ops/compliance/dictionaries": {"新建合规词库", "创建内容合规词库。"},
|
||
"PUT /api/ops/compliance/dictionaries/:id": {"更新合规词库", "更新内容合规词库。"},
|
||
"DELETE /api/ops/compliance/dictionaries/:id": {"删除合规词库", "删除内容合规词库。"},
|
||
"GET /api/ops/compliance/dictionaries/:id/terms": {"合规词条列表", "查询指定词库下的合规词条。"},
|
||
"POST /api/ops/compliance/dictionaries/:id/terms": {"新增合规词条", "向指定词库新增合规词条。"},
|
||
"POST /api/ops/compliance/dictionaries/:id/terms:batch-import": {"批量导入合规词条", "向指定词库批量导入合规词条。"},
|
||
"DELETE /api/ops/compliance/dictionaries/:id/terms/:term_id": {"删除合规词条", "删除指定合规词条。"},
|
||
"POST /api/ops/compliance/dictionaries/:id/publish": {"发布合规词库", "发布指定合规词库版本。"},
|
||
"POST /api/ops/compliance/dictionaries/:id/rollback": {"回滚合规词库", "回滚指定合规词库版本。"},
|
||
"GET /api/ops/compliance/policy/global": {"全局合规策略", "读取全局内容合规策略。"},
|
||
"PUT /api/ops/compliance/policy/global": {"更新全局合规策略", "更新全局内容合规策略。"},
|
||
"POST /api/ops/compliance/policy/global/master-switch": {"切换合规总开关", "启用或关闭全局内容合规总开关。"},
|
||
"GET /api/ops/compliance/manual-reviews": {"人工审阅列表", "分页查询内容合规人工审阅。"},
|
||
"GET /api/ops/compliance/manual-reviews/:id": {"人工审阅详情", "读取指定人工审阅详情。"},
|
||
"POST /api/ops/compliance/manual-reviews/:id/approve": {"通过人工审阅", "通过指定内容合规人工审阅。"},
|
||
"POST /api/ops/compliance/manual-reviews/:id/reject": {"驳回人工审阅", "驳回指定内容合规人工审阅。"},
|
||
"GET /api/ops/compliance/stats": {"合规统计", "读取内容合规统计数据。"},
|
||
"GET /api/ops/compliance/records": {"合规检测记录", "分页查询内容合规检测记录。"},
|
||
|
||
// --- Auth ---
|
||
"GET /api/auth/password-key": {"登录密码加密公钥", "返回登录密码前端加密使用的临时公钥与 key_id。"},
|
||
"POST /api/auth/login": {"账号密码登录", "客户后台账号密码登录,返回 access/refresh token。"},
|
||
"POST /api/auth/refresh": {"刷新访问令牌", "用 refresh token 换取新的 access token。"},
|
||
"GET /api/auth/me": {"当前登录用户", "返回当前 JWT 对应的用户、租户、Workspace 等会话信息。"},
|
||
"POST /api/auth/password": {"修改密码", "当前登录用户修改自己的密码,成功后吊销该用户既有登录会话。"},
|
||
"POST /api/auth/logout": {"退出登录", "吊销当前会话,使其 access/refresh token 立即失效。"},
|
||
|
||
// --- Public 资源 ---
|
||
"GET /api/public/assets/:token": {"对外访问签名资源", "通过签名 token 直接访问对象存储中的图片/附件,无需登录。"},
|
||
|
||
// --- Desktop 客户端:注册 / 心跳 / 鉴权 ---
|
||
"GET /api/desktop/releases/latest": {"查询最新客户端版本", "桌面客户端未登录时查询最新版本配置,不提前生成签名下载地址。"},
|
||
"GET /api/desktop/releases/download-url": {"解析客户端下载地址", "用户开始下载时按最新版本配置即时生成下载地址,私有 OSS 会返回签名 URL。"},
|
||
"GET /api/desktop/releases/updater/:platform/:arch/:channel/:version": {"自动更新 Feed", "桌面客户端开始自动更新时读取 Electron updater feed,私有 OSS 会在 feed 中写入短时签名下载地址。"},
|
||
"GET /api/desktop/releases/updater/:platform/:arch/:channel/:version/:feed": {"自动更新 Feed 文件", "兼容 Electron updater 对 latest*.yml 的二次请求,返回动态生成的 updater YAML。"},
|
||
"POST /api/desktop/bug-reports": {"客户端 Bug 上报", "兼容 Electron crashReporter multipart 上报,保存 dump 到 OSS 并记录元数据。"},
|
||
"POST /api/desktop/clients/register": {"桌面客户端注册", "由租户用户登录后调用,为本机桌面客户端申请客户端凭证。"},
|
||
"POST /api/desktop/clients/rotate": {"轮换客户端密钥", "客户端使用旧凭证调用,换取新的客户端密钥。"},
|
||
"POST /api/desktop/clients/heartbeat": {"客户端心跳上报", "桌面客户端定时上报存活与版本,服务端用于在线状态展示。"},
|
||
"POST /api/desktop/clients/offline": {"客户端主动离线", "桌面客户端退出/休眠时上报,立即将本机标记为离线。"},
|
||
"POST /api/desktop/clients/revoke": {"吊销客户端", "由桌面端调用,立即注销当前客户端凭证。"},
|
||
"POST /api/desktop/clients/bug-reports": {"客户端鉴权 Bug 上报", "桌面客户端带 client token 上报崩溃或用户反馈,服务端自动绑定租户、用户和设备。"},
|
||
"GET /api/desktop/clients/releases/latest": {"查询最新客户端版本(桌面鉴权)", "桌面客户端带 client token 查询最新版本,默认沿用本机注册渠道。"},
|
||
"GET /api/desktop/clients/releases/download-url": {"解析客户端下载地址(桌面鉴权)", "桌面客户端开始更新下载时即时获取下载地址,私有 OSS 会返回签名 URL。"},
|
||
// --- Desktop:派单与拉取 ---
|
||
"GET /api/desktop/dispatch": {"派单 WebSocket", "桌面客户端通过 WebSocket 长连接订阅派单事件,断线后自动重连。"},
|
||
"GET /api/desktop/accounts": {"拉取账号列表(桌面)", "桌面客户端拉取本机绑定/可用的媒体账号,支持增量同步。"},
|
||
"GET /api/desktop/content/articles/:id": {"拉取文章正文(桌面)", "桌面客户端在执行发布任务时拉取目标文章的最新内容。"},
|
||
"GET /api/desktop/content/assets/:token": {"桌面端访问素材", "桌面客户端使用签名 token 拉取文章中的图片/附件。"},
|
||
"GET /api/desktop/publish-tasks": {"拉取发布任务(桌面)", "桌面客户端分页查询当前账号需要执行的发布任务。"},
|
||
"DELETE /api/desktop/publish-records/:id": {"删除发布记录(桌面)", "桌面客户端软删除当前用户发起的发布记录,并取消关联的等待发布任务。"},
|
||
"POST /api/desktop/accounts/health-reports": {"上报账号健康状态", "桌面客户端定期上报媒体账号的登录态、风控信号等。"},
|
||
|
||
// --- Desktop:账号增删改 ---
|
||
"POST /api/desktop/accounts": {"上报/绑定媒体账号", "桌面客户端登录媒体平台后,将账号信息上报到云端。"},
|
||
"PATCH /api/desktop/accounts/:id": {"更新媒体账号", "桌面客户端更新已绑定的媒体账号字段(昵称、头像、Cookie 等)。"},
|
||
"DELETE /api/desktop/accounts/:id": {"删除媒体账号(桌面)", "桌面客户端解绑账号,仅清理本地侧记录。"},
|
||
|
||
// --- Desktop:发布任务执行 ---
|
||
"POST /api/desktop/tasks/lease": {"领取发布任务", "桌面客户端从队列领取一批可执行任务,原子加锁。"},
|
||
"POST /api/desktop/tasks/:id/lease": {"续锁/重领任务", "对指定任务再次加锁,常用于异常重试场景。"},
|
||
"POST /api/desktop/tasks/:id/extend": {"延长任务锁", "执行较慢时延长锁定时间,避免任务被其他客户端抢走。"},
|
||
"POST /api/desktop/tasks/:id/publish-submit-marker": {"标记发布已进入提交阶段", "桌面客户端在执行不可逆平台提交前写入幂等保护标记,避免恢复流程自动重复发文。"},
|
||
"POST /api/desktop/tasks/:id/cancel": {"取消任务(桌面)", "桌面客户端在执行失败/用户中止时通知服务端取消。"},
|
||
"POST /api/desktop/tasks/:id/result": {"上报任务结果", "桌面客户端将发布结果(成功/失败/截图/链接)回传服务端。"},
|
||
"POST /api/desktop/publish-tasks/:id/retry": {"重试发布任务", "对失败的发布任务发起重试。"},
|
||
|
||
// --- Desktop:监控采集任务 ---
|
||
"POST /api/desktop/monitoring/tasks/lease": {"领取监控任务", "桌面客户端领取 GEO 监控的爬取任务(AI 平台问答抓取)。"},
|
||
"POST /api/desktop/monitoring/tasks/resume": {"恢复监控任务", "客户端断线重连后恢复未完成的监控任务。"},
|
||
"POST /api/desktop/monitoring/tasks/:id/result": {"上报监控结果", "上报某条监控任务在 AI 平台的抓取结果。"},
|
||
"POST /api/desktop/monitoring/tasks/:id/skip": {"跳过监控任务", "无法完成时跳过该条任务,并附带原因。"},
|
||
"POST /api/desktop/monitoring/tasks/:id/cancel": {"取消监控任务", "桌面端主动取消正在执行的监控任务。"},
|
||
|
||
// --- Tenant:账号 / 任务统一视图(管理员视角) ---
|
||
"GET /api/tenant/accounts": {"租户媒体账号列表", "运营人员在管理后台查看本租户下所有媒体账号。"},
|
||
"POST /api/tenant/accounts/:id/request-delete": {"申请删除媒体账号", "由后台发起异步删除,桌面端确认后真正解绑。"},
|
||
"DELETE /api/tenant/accounts/:id": {"解绑媒体账号节点", "解除指定运行节点上的媒体账号绑定,并取消发往该节点该账号的排队发布任务。"},
|
||
"POST /api/tenant/tasks/:id/reconcile": {"对账发布任务", "管理后台对发布任务做对账:状态校正、结果回填。"},
|
||
"POST /api/tenant/tasks/:id/cancel": {"取消发布任务(后台)", "管理员在后台取消还未派发或还在执行的发布任务。"},
|
||
"GET /api/tenant/publish-tasks": {"发布任务列表(后台)", "管理后台分页查询本 Workspace 下的发布队列与历史发送结果。"},
|
||
"GET /api/tenant/publish-records": {"发布记录列表(后台)", "管理后台分页查询当前用户的发布中记录和历史发布记录;已删除品牌会返回删除标记。"},
|
||
"DELETE /api/tenant/publish-records/:id": {"删除发布记录(后台)", "管理后台软删除当前用户发起的发布记录,并取消关联的等待发布任务。"},
|
||
"POST /api/tenant/publish-tasks/:id/retry": {"重试发布任务(后台)", "管理后台对失败的发布任务重新创建一次发布任务。"},
|
||
"POST /api/tenant/publish-jobs": {"批量创建发布任务", "为一批文章/账号批量生成发布任务,进入派发队列。"},
|
||
|
||
// --- Tenant:媒体 ---
|
||
"GET /api/tenant/media/platforms": {"媒体平台列表", "返回当前租户可用的媒体平台元数据(图标、能力开关等)。"},
|
||
|
||
// --- Tenant:企业站点发布 ---
|
||
"GET /api/tenant/enterprise-sites": {"企业站点列表", "查询当前 Workspace 已配置的企业官网/CMS 发布连接。"},
|
||
"POST /api/tenant/enterprise-sites": {"新增企业站点", "保存企业站点 CMS 连接配置和凭证,用于服务端直投文章。"},
|
||
"PATCH /api/tenant/enterprise-sites/:id": {"更新企业站点", "更新指定企业站点连接配置、状态或凭证。"},
|
||
"DELETE /api/tenant/enterprise-sites/:id": {"删除企业站点", "删除指定企业站点连接配置。"},
|
||
"POST /api/tenant/enterprise-sites/:id/ping": {"检测企业站点连接", "调用目标 CMS 探测接口,验证站点凭证和发布能力。"},
|
||
"GET /api/tenant/enterprise-sites/:id/categories": {"企业站点栏目列表", "读取已同步的企业站点栏目。"},
|
||
"POST /api/tenant/enterprise-sites/:id/categories/sync": {"同步企业站点栏目", "从目标 CMS 拉取栏目树并写入本地缓存。"},
|
||
"POST /api/tenant/enterprise-sites/:id/publish": {"发布文章到企业站点", "将指定文章内容直投到企业站点 CMS,并回写发布记录。"},
|
||
|
||
// --- Tenant:桌面客户端 ---
|
||
"GET /api/tenant/desktop-client/releases/downloadable": {"可下载桌面客户端版本", "返回当前租户可下载的已启用桌面客户端版本列表。"},
|
||
|
||
// --- Tenant:媒介供应 ---
|
||
"GET /api/tenant/media-supply/resources": {"媒介资源列表", "查询当前 Workspace 可购买的媒介供应资源。"},
|
||
"GET /api/tenant/media-supply/resources/by-ids": {"按 ID 查询媒介资源", "按资源 ID 集合查询媒介供应资源详情。"},
|
||
"GET /api/tenant/media-supply/resources/search-options": {"媒介资源筛选项", "返回媒介供应资源列表的筛选条件与可选项。"},
|
||
"PUT /api/tenant/media-supply/resources/:id/price": {"调整媒介资源售价", "租户侧调整指定媒介资源的销售价格。"},
|
||
"POST /api/tenant/media-supply/sync-jobs": {"同步媒介资源", "创建媒介供应资源同步任务。"},
|
||
"POST /api/tenant/media-supply/orders": {"创建媒介投放订单", "为选定媒介资源创建投放订单。"},
|
||
"GET /api/tenant/media-supply/orders": {"媒介订单列表", "分页查询当前 Workspace 的媒介投放订单。"},
|
||
"GET /api/tenant/media-supply/orders/:id": {"媒介订单详情", "读取指定媒介投放订单详情。"},
|
||
"GET /api/tenant/media-supply/wallet": {"媒介钱包状态", "读取当前 Workspace 的媒介供应钱包余额与状态。"},
|
||
"GET /api/tenant/media-supply/wallet/ledgers": {"媒介钱包流水", "分页查询媒介供应钱包收支流水。"},
|
||
"POST /api/tenant/media-supply/wallet/adjustments": {"调整媒介钱包", "创建媒介钱包余额调整记录。"},
|
||
"GET /api/tenant/media-supply/supplier-session": {"供应商会话状态", "查询媒介供应商登录会话状态。"},
|
||
"PUT /api/tenant/media-supply/supplier-session": {"导入供应商会话", "导入或更新媒介供应商登录会话。"},
|
||
"POST /api/tenant/media-supply/supplier-session/login": {"登录供应商账号", "使用已配置账号登录媒介供应商并刷新会话。"},
|
||
|
||
// --- Tenant:内容合规 ---
|
||
"GET /api/tenant/compliance/runtime-status": {"合规运行状态", "返回当前租户内容合规模块是否启用、执行模式、词库版本与检测预算。"},
|
||
"POST /api/tenant/compliance/check": {"纯文本合规检测", "对标题/正文纯文本执行一次合规检测,返回聚合 check_record 与违规项。"},
|
||
"POST /api/tenant/compliance/check-records/:id/ack": {"确认合规风险", "对 advisory 检测结果进行一次性确认,返回发布时可消费的 ack_record_id。"},
|
||
"POST /api/tenant/articles/:id/compliance/check": {"文章合规检测", "对指定文章版本和目标平台集合执行一次合规检测。"},
|
||
"GET /api/tenant/articles/:id/compliance/latest": {"最新合规记录", "读取指定文章最近一次合规检测记录和违规明细。"},
|
||
"POST /api/tenant/articles/:id/compliance/manual-reviews": {"提交人工审阅", "将 block 检测结果提交运营人工审阅,审阅绑定到当前文章版本。"},
|
||
"GET /api/tenant/articles/:id/compliance/manual-reviews/latest": {"最新人工审阅", "读取当前文章版本最近的人工审阅状态。"},
|
||
"POST /api/tenant/articles/:id/compliance/manual-reviews/:review_id/cancel": {"撤回人工审阅", "作者撤回仍处于 pending 状态的人工审阅申请。"},
|
||
|
||
// --- Tenant:工作台 ---
|
||
"GET /api/tenant/workspace/overview": {"工作台概览", "首页顶部统计:文章数、发布数、KOL 订阅数等。"},
|
||
"GET /api/tenant/workspace/recent-articles": {"最近文章", "工作台展示最近创建/更新的若干篇文章。"},
|
||
"GET /api/tenant/workspace/quota-summary": {"额度概览", "返回当前 Workspace 的 AI 点数、存储、发布次数等额度。"},
|
||
"GET /api/tenant/workspace/ai-point-usage": {"AI 点数消耗明细", "分页查询 AI 点数的扣减流水,可按时间筛选。"},
|
||
"GET /api/tenant/workspace/template-cards": {"模板入口卡片", "工作台首页的模板推荐卡片。"},
|
||
"GET /api/tenant/workspace/kol-cards": {"KOL 入口卡片", "工作台首页的 KOL 订阅推荐卡片。"},
|
||
|
||
// --- Tenant:模板 ---
|
||
"GET /api/tenant/templates": {"模板列表", "返回当前 Workspace 可见的内容模板。"},
|
||
"GET /api/tenant/templates/:id": {"模板详情", "返回模板字段定义、prompt 结构、示例等。"},
|
||
"POST /api/tenant/templates/:id/drafts": {"保存模板草稿", "保存用户在模板表单上的临时输入,便于稍后续填。"},
|
||
"POST /api/tenant/templates/:id/analyze-tasks": {"创建主题分析任务", "基于用户输入创建主题分析异步任务。"},
|
||
"GET /api/tenant/templates/:id/analyze_task_result": {"获取主题分析结果", "轮询主题分析任务结果,需要带上 task_id。"},
|
||
"POST /api/tenant/templates/:id/title-tasks": {"创建标题生成任务", "基于主题创建标题候选生成任务。"},
|
||
"GET /api/tenant/templates/:id/gen_title_task_result": {"获取标题生成结果", "轮询标题生成任务结果。"},
|
||
"POST /api/tenant/templates/:id/outline-tasks": {"创建大纲生成任务", "基于选定标题创建大纲生成任务。"},
|
||
"GET /api/tenant/templates/:id/gen_outline_task_result": {"获取大纲生成结果", "轮询大纲生成任务结果。"},
|
||
"POST /api/tenant/templates/:id/generate": {"生成正文", "基于模板入参直接生成完整文章并落库。"},
|
||
|
||
// --- Tenant:KOL 管理(创作者侧) ---
|
||
"GET /api/tenant/kol/manage/profile": {"KOL 主页信息", "获取当前用户作为 KOL 的资料卡。"},
|
||
"PUT /api/tenant/kol/manage/profile": {"更新 KOL 主页", "更新 KOL 名称、简介、行业、联系方式等。"},
|
||
"POST /api/tenant/kol/manage/profile/avatar": {"上传 KOL 头像", "Multipart 上传 KOL 头像,返回访问 URL。"},
|
||
|
||
"GET /api/tenant/kol/manage/packages": {"KOL 套餐列表", "KOL 自己管理名下的套餐(产品包)列表。"},
|
||
"POST /api/tenant/kol/manage/packages": {"新建 KOL 套餐", "创建新的 KOL 套餐草稿。"},
|
||
"PUT /api/tenant/kol/manage/packages/:id": {"更新 KOL 套餐", "修改套餐基础信息(名称、价格、描述、封面等)。"},
|
||
"DELETE /api/tenant/kol/manage/packages/:id": {"删除 KOL 套餐", "仅未发布或已归档的套餐可删除。"},
|
||
"PUT /api/tenant/kol/manage/packages/:id/publish": {"发布 KOL 套餐", "把草稿态套餐发布到市场,对所有租户可见。"},
|
||
"PUT /api/tenant/kol/manage/packages/:id/archive": {"下架 KOL 套餐", "将已发布的套餐归档,不再对外展示。"},
|
||
"POST /api/tenant/kol/manage/packages/:id/self-subscription": {"KOL 自订阅套餐", "KOL 自己订阅自己的套餐用于体验/测试。"},
|
||
"DELETE /api/tenant/kol/manage/packages/:id/self-subscription": {"取消 KOL 自订阅", "取消 KOL 对自己套餐的自订阅。"},
|
||
|
||
"GET /api/tenant/kol/manage/packages/:id/prompts": {"套餐下的 Prompt 列表", "查看某个 KOL 套餐内挂载的 Prompt 列表。"},
|
||
"POST /api/tenant/kol/manage/packages/:id/prompts": {"新增套餐 Prompt", "在套餐下创建新的 Prompt 配置。"},
|
||
"GET /api/tenant/kol/manage/prompts/:id": {"获取 Prompt 最新版", "返回该 Prompt 的最新版本(含变量、模板正文)。"},
|
||
"PUT /api/tenant/kol/manage/prompts/:id": {"更新 Prompt 元信息", "更新 Prompt 名称、说明、可见性等元数据。"},
|
||
"DELETE /api/tenant/kol/manage/prompts/:id": {"删除 Prompt", "彻底删除该 Prompt 及其历史版本(若已发布且有订阅则禁止)。"},
|
||
"POST /api/tenant/kol/manage/prompts/:id/save": {"保存 Prompt 草稿", "保存 Prompt 正文与变量,作为新的草稿版本。"},
|
||
"POST /api/tenant/kol/manage/prompts/:id/publish": {"发布 Prompt 版本", "将当前草稿发布为新版本,订阅者可使用。"},
|
||
"PUT /api/tenant/kol/manage/prompts/:id/activate": {"激活 Prompt", "把已发布的 Prompt 切换为当前激活版本。"},
|
||
"PUT /api/tenant/kol/manage/prompts/:id/archive": {"归档 Prompt", "归档某个 Prompt,新订阅不再可见。"},
|
||
|
||
"POST /api/tenant/kol/manage/assist": {"KOL 创作助手(同步)", "基于上下文一次性生成 Prompt 优化建议。"},
|
||
"POST /api/tenant/kol/manage/assist/stream": {"KOL 创作助手(SSE 流式)", "通过 Server-Sent Events 流式返回创作助手输出。"},
|
||
"GET /api/tenant/kol/manage/assist/:id": {"查询创作助手任务", "按任务 id 查询此前的助手生成结果。"},
|
||
|
||
// --- Tenant:KOL Dashboard(创作者数据看板) ---
|
||
"GET /api/tenant/kol/dashboard/overview": {"KOL 看板概览", "KOL 自己的看板:订阅数、生成数、收益等。"},
|
||
"GET /api/tenant/kol/dashboard/packages": {"KOL 看板分套餐数据", "按套餐维度的订阅与使用统计。"},
|
||
"GET /api/tenant/kol/dashboard/trend": {"KOL 看板趋势", "按日聚合的订阅、生成、收益趋势曲线。"},
|
||
|
||
// --- Tenant:KOL Marketplace(订阅方视角) ---
|
||
"GET /api/tenant/kol/marketplace/packages": {"KOL 市场套餐列表", "面向订阅方的 KOL 市场列表,可按行业/关键词筛选。"},
|
||
"GET /api/tenant/kol/marketplace/packages/:id": {"KOL 市场套餐详情", "套餐详情页:包含价格、Prompt 列表、案例等。"},
|
||
"POST /api/tenant/kol/marketplace/packages/:id/subscribe": {"订阅 KOL 套餐", "当前 Workspace 订阅指定套餐,进入计费/试用流程。"},
|
||
|
||
"GET /api/tenant/kol/subscriptions": {"我的 KOL 订阅", "返回当前 Workspace 已订阅的 KOL 套餐列表。"},
|
||
"GET /api/tenant/kol/subscription-prompts": {"我的订阅 Prompt 列表", "已订阅套餐下可用的 Prompt 集合。"},
|
||
"GET /api/tenant/kol/subscription-prompts/:id/schema": {"订阅 Prompt 输入 Schema", "返回该 Prompt 的入参字段定义,用于前端渲染表单。"},
|
||
"POST /api/tenant/kol/subscription-prompts/:id/generate": {"用订阅 Prompt 生成内容", "基于订阅 Prompt 生成一篇文章,自动扣 KOL 计费点数。"},
|
||
|
||
// --- Tenant:文章 ---
|
||
"GET /api/tenant/articles": {"文章列表", "支持按生成/发布状态、来源、关键词、时间等筛选。"},
|
||
"POST /api/tenant/articles": {"创建文章", "手动创建一篇空文章草稿。"},
|
||
"POST /api/tenant/articles/generate-from-rule": {"根据 Prompt 规则生成文章", "基于已配置的 Prompt 规则生成一篇文章。"},
|
||
"POST /api/tenant/articles/imitations/generate": {"仿写生成文章", "基于参考文链接/原文进行仿写并生成新文章。"},
|
||
"POST /api/tenant/articles/:id/regenerate": {"重新生成文章", "基于文章原始生成参数重新入队生成,并返回新的生成任务。"},
|
||
"POST /api/tenant/articles/:id/images": {"上传文章配图", "Multipart 上传文章正文使用的图片。"},
|
||
"POST /api/tenant/articles/:id/selection-optimize/stream": {"选区优化(SSE 流式)", "针对用户选中的段落做润色/改写,结果流式返回。"},
|
||
"GET /api/tenant/articles/:id": {"文章详情", "返回文章的完整结构(标题、大纲、正文、版本号等)。"},
|
||
"PUT /api/tenant/articles/:id": {"保存文章", "全量更新文章内容(标题、正文、媒体附件等)。"},
|
||
"GET /api/tenant/articles/:id/stream": {"文章生成 SSE 流", "订阅文章正文生成过程的流式输出。"},
|
||
"GET /api/tenant/articles/:id/versions": {"文章版本历史", "返回该文章的历史版本列表,可用于回滚。"},
|
||
"GET /api/tenant/articles/:id/publish-records": {"文章发布记录", "返回该文章在各媒体平台的发布历史。"},
|
||
"DELETE /api/tenant/articles/:id": {"删除文章", "软删除文章;可在回收站撤回(需带 undo 参数)。"},
|
||
|
||
// --- Tenant:品牌库 ---
|
||
"GET /api/tenant/brands": {"品牌列表", "返回当前 Workspace 下的品牌列表。"},
|
||
"GET /api/tenant/brands/library-summary": {"品牌库概览", "品牌、关键词、问题、竞品的总数与最近变更。"},
|
||
"POST /api/tenant/brands": {"新建品牌", "创建一个新品牌。"},
|
||
"GET /api/tenant/brands/:id": {"品牌详情", "返回品牌基础信息及统计。"},
|
||
"PUT /api/tenant/brands/:id": {"更新品牌", "更新品牌名称、行业、官网等。"},
|
||
"DELETE /api/tenant/brands/:id": {"删除品牌", "标记品牌删除并由后台任务静默清理其文章、词库、竞品和采集数据;发布记录保留在用户发文总账。"},
|
||
|
||
"GET /api/tenant/brands/:id/keywords": {"品牌关键词列表", "返回某品牌下的关键词。"},
|
||
"POST /api/tenant/brands/:id/keywords": {"新增关键词", "为某品牌添加关键词。"},
|
||
"PUT /api/tenant/brands/:id/keywords/:kid": {"更新关键词", "修改关键词文本/分组。"},
|
||
"DELETE /api/tenant/brands/:id/keywords/:kid": {"删除关键词", "删除某条关键词。"},
|
||
|
||
"GET /api/tenant/brands/:id/questions": {"搜索词列表", "分页返回品牌下的监控搜索词,可按 keyword_id 过滤,支持 q 搜索。"},
|
||
"POST /api/tenant/brands/:id/questions": {"新增搜索词", "为品牌添加一条 GEO 监控搜索词。"},
|
||
"POST /api/tenant/brands/:id/questions/combination-preview": {"拓词工具预览", "按地域词、前缀词、精准词、行业词、后缀词组合生成搜索词候选,仅预览不入库。"},
|
||
"POST /api/tenant/brands/:id/questions/combination-fill": {"拓词工具 AI 填词", "根据用户 IP 本地识别地域,并结合品牌信息补全拓词工具的五列词组。"},
|
||
"POST /api/tenant/brands/:id/questions/ai-distill": {"AI 扩展搜索词", "围绕品牌和主题生成搜索词候选,使用结构化输出并按 AI 点计费。"},
|
||
"POST /api/tenant/brands/:id/questions/classify-metadata": {"搜索词元数据分类", "批量为搜索词文本推断 layer 和 intent 元数据。"},
|
||
"POST /api/tenant/brands/:id/questions/materialize": {"保存搜索词候选", "将用户选中的搜索词候选保存到当前关键词库(搜索词),执行配额、去重和审计。"},
|
||
"PUT /api/tenant/brands/:id/questions/:qid": {"更新监控搜索词", "修改搜索词文本或所属关键词。"},
|
||
"DELETE /api/tenant/brands/:id/questions/:qid": {"删除监控搜索词", "删除某条监控搜索词。"},
|
||
|
||
"GET /api/tenant/brands/:id/competitors": {"竞品列表", "返回品牌下登记的竞品。"},
|
||
"POST /api/tenant/brands/:id/competitors": {"新增竞品", "为品牌添加竞品记录。"},
|
||
"PUT /api/tenant/brands/:id/competitors/:cid": {"更新竞品", "修改竞品名称/官网/备注。"},
|
||
"DELETE /api/tenant/brands/:id/competitors/:cid": {"删除竞品", "删除某条竞品记录。"},
|
||
|
||
// --- Tenant:监控(GEO 仪表盘) ---
|
||
"GET /api/tenant/monitoring/dashboard/composite": {"监控仪表盘综合视图", "组合返回品牌曝光、引用率、问答覆盖等监控指标。"},
|
||
"GET /api/tenant/monitoring/citation-summary": {"引用情况汇总", "按 AI 平台维度返回品牌的引用频次与变化。"},
|
||
"GET /api/tenant/monitoring/marked-articles": {"外部文章标记列表", "分页查询用户手动标记的外部文章,可按域名、文章名称和时间范围过滤。"},
|
||
"POST /api/tenant/monitoring/marked-articles": {"标记外部文章", "将无法自动对接的外部 URL 标记为外部文章,用于引用归因与排行。"},
|
||
"PUT /api/tenant/monitoring/marked-articles/:id": {"更新外部文章标记", "更新外部文章标记的文章名称、原始 URL 或关联品牌。"},
|
||
"DELETE /api/tenant/monitoring/marked-articles/:id": {"删除外部文章标记", "删除一条用户手动标记的外部文章记录。"},
|
||
"GET /api/tenant/monitoring/brands/:brand_id/questions/:question_id/detail": {"问题级监控详情", "某问题在各 AI 平台的回答样本与引用拆解。"},
|
||
"POST /api/tenant/monitoring/brands/:brand_id/collect-now": {"立即触发采集", "对某品牌立即下发一次监控采集任务,跳过定时计划。"},
|
||
|
||
// --- Tenant:知识库 ---
|
||
"GET /api/tenant/knowledge/groups": {"知识库分组列表", "返回当前 Workspace 的知识库分组。"},
|
||
"POST /api/tenant/knowledge/groups": {"新建知识库分组", "创建新的知识库分组。"},
|
||
"PUT /api/tenant/knowledge/groups/:gid": {"更新知识库分组", "重命名/移动分组。"},
|
||
"DELETE /api/tenant/knowledge/groups/:gid": {"删除知识库分组", "删除分组及其下条目(按业务规则限制)。"},
|
||
|
||
"GET /api/tenant/knowledge/items": {"知识条目列表", "按分组返回知识库条目,可分页。"},
|
||
"GET /api/tenant/knowledge/items/:id": {"知识条目详情", "返回条目的解析后正文、来源、向量化状态。"},
|
||
"POST /api/tenant/knowledge/items/text": {"新增文本条目", "粘贴一段文本作为知识条目入库。"},
|
||
"POST /api/tenant/knowledge/items/url": {"新增链接条目", "提交 URL,由后台抓取并解析后入库。"},
|
||
"POST /api/tenant/knowledge/items/file": {"上传文件条目", "Multipart 上传 PDF/Word/MD 文件作为知识条目。"},
|
||
"POST /api/tenant/knowledge/items/retry/:id": {"重试解析", "对解析失败的条目重新触发解析与向量化。"},
|
||
"DELETE /api/tenant/knowledge/items/:id": {"删除知识条目", "彻底删除某条知识条目。"},
|
||
|
||
// --- Tenant:Prompt 规则 ---
|
||
"GET /api/tenant/prompt-rules": {"Prompt 规则列表", "查询 Prompt 规则,支持分组、状态、关键字筛选。"},
|
||
"GET /api/tenant/prompt-rules/simple": {"Prompt 规则下拉项", "为下拉框/选择器提供精简结构(id + 名称)。"},
|
||
"POST /api/tenant/prompt-rules": {"新建 Prompt 规则", "创建新的 Prompt 生成规则。"},
|
||
"GET /api/tenant/prompt-rules/:id": {"Prompt 规则详情", "返回规则完整配置(变量、模板、约束)。"},
|
||
"PUT /api/tenant/prompt-rules/:id": {"更新 Prompt 规则", "修改规则配置。"},
|
||
"DELETE /api/tenant/prompt-rules/:id": {"删除 Prompt 规则", "删除规则;若有定时任务在引用则禁止。"},
|
||
"PUT /api/tenant/prompt-rules/:id/status": {"切换 Prompt 规则启停", "启用或禁用 Prompt 规则。"},
|
||
"GET /api/tenant/prompt-rules/groups": {"Prompt 规则分组列表", "返回 Prompt 规则的分组用于左侧导航。"},
|
||
"POST /api/tenant/prompt-rules/groups": {"新建分组", "创建 Prompt 规则分组。"},
|
||
"PUT /api/tenant/prompt-rules/groups/:gid": {"更新分组", "重命名分组或调整顺序。"},
|
||
"DELETE /api/tenant/prompt-rules/groups/:gid": {"删除分组", "删除空分组。"},
|
||
|
||
// --- Tenant:定时任务 ---
|
||
"GET /api/tenant/schedules": {"定时任务列表", "查询定时生成任务,支持按 Prompt 规则、状态、时间筛选。"},
|
||
"POST /api/tenant/schedules": {"创建定时任务", "为某 Prompt 规则配置 cron 周期任务。"},
|
||
"GET /api/tenant/schedules/:id": {"定时任务详情", "返回任务配置与最近一次执行结果。"},
|
||
"PUT /api/tenant/schedules/:id": {"更新定时任务", "修改 cron、参数、并发等。"},
|
||
"DELETE /api/tenant/schedules/:id": {"删除定时任务", "彻底删除该定时任务。"},
|
||
"PUT /api/tenant/schedules/:id/status": {"切换定时任务启停", "启动或暂停某个定时任务。"},
|
||
|
||
// --- Tenant:即时任务 ---
|
||
"GET /api/tenant/instant-tasks": {"即时任务列表", "查询用户手动触发的即时生成任务。"},
|
||
|
||
// --- Tenant:图片库 ---
|
||
"GET /api/tenant/images": {"图片列表", "分页查询图片,可按分组、关键词筛选。"},
|
||
"POST /api/tenant/images": {"上传图片", "Multipart 上传单张图片到指定分组。"},
|
||
"PUT /api/tenant/images/:id": {"更新图片", "重命名、移动分组或修改 alt。"},
|
||
"GET /api/tenant/images/:id/references": {"图片引用情况", "查询图片被哪些文章/草稿引用。"},
|
||
"DELETE /api/tenant/images/:id": {"删除图片", "软删除图片,可强制(force=1)跳过引用校验。"},
|
||
"GET /api/tenant/images/storage-usage": {"图片存储用量", "返回当前 Workspace 已使用的图片存储与配额。"},
|
||
|
||
"GET /api/tenant/images/folders": {"图片分组列表", "返回图片分组树。"},
|
||
"POST /api/tenant/images/folders": {"创建图片分组", "新建图片分组。"},
|
||
"PUT /api/tenant/images/folders/:id": {"更新图片分组", "重命名或移动分组。"},
|
||
"GET /api/tenant/images/folders/:id/delete-preview": {"删除分组预览", "返回删除该分组将影响的图片数量。"},
|
||
"DELETE /api/tenant/images/folders/:id": {"删除图片分组", "删除空分组。"},
|
||
|
||
// --- Swagger 自身 ---
|
||
"GET /swagger": {"Swagger 入口", "重定向至 /swagger/index.html。"},
|
||
"GET /swagger/": {"Swagger 入口", "重定向至 /swagger/index.html。"},
|
||
"GET /swagger/index.html": {"Swagger UI", "提供本服务的 Swagger UI 页面。"},
|
||
"GET /swagger/openapi.json": {"OpenAPI 规范", "返回当前服务自动生成的 OpenAPI 3 文档。"},
|
||
}
|
||
|
||
// docFor returns the documented summary/description for a route, falling back
|
||
// to "<METHOD> <path>" when no entry is registered.
|
||
func docFor(method, path string) routeDoc {
|
||
if doc, ok := routeDocs[strings.ToUpper(method)+" "+path]; ok {
|
||
return doc
|
||
}
|
||
return routeDoc{Summary: strings.ToUpper(method) + " " + path}
|
||
}
|