feat: Rock 回库支持上游校验与强制释放,新增 Token 状态历史

This commit is contained in:
2026-11-09 13:38:57 +08:00
parent b90252c093
commit 38cbb37a08
26 changed files with 1376 additions and 140 deletions
+36 -3
View File
@@ -785,6 +785,28 @@ export interface RockTokenRestoreResult {
skipped_items: RockTokenRestoreSkipItem[];
}
export interface RockReleaseCheckResult {
can_release: boolean
upstream_status: string
role_name?: string
role_id?: string
message: string
}
export interface RockTokenStatusLog {
id: number
token_id: number
upstream_token_id: string
event_type: string
from_status: string
to_status: string
source: string
reason: string
forced: boolean
actor_user_id?: number | null
created_at: string
}
export interface RockStaleRefreshResult {
scanned: number;
fixed: number;
@@ -921,10 +943,21 @@ export const rockApi = {
.then((r) => r.data.data as { message?: string; status?: string }),
resetToken: (id: number) =>
request.post(`/platform/rock/tokens/${id}/reset`).then((r) => r.data.data),
releaseToken: (id: number) =>
checkReleaseToken: (id: number) =>
request
.post(`/platform/rock/tokens/${id}/release`)
.then((r) => r.data.data),
.post(`/platform/rock/tokens/${id}/release-check`)
.then((r) => r.data.data as RockReleaseCheckResult),
releaseToken: (
id: number,
data?: { force?: boolean; force_confirm_text?: string },
) =>
request
.post(`/platform/rock/tokens/${id}/release`, data ?? {})
.then((r) => r.data.data as { message: string }),
listTokenStatusLogs: (id: number) =>
request
.get(`/platform/rock/tokens/${id}/status-logs`)
.then((r) => r.data.data as { list: RockTokenStatusLog[] }),
refreshTokenBinding: (id: number) =>
request
.post(`/platform/rock/tokens/${id}/refresh-binding`)