2dfdc721b3
依赖 app-server PR #164。 ## 改动 - 低价审核、用户反馈仅勾选待审核记录 - 批量操作改为单次请求后端 `/bulk/approve` 或 `/bulk/reject` - 按后端逐条结果展示成功/失败;失败项保留勾选,方便重试 - 采纳/拒绝所需的统一金币、原因、内部备注和用户回复保持原有校验与二次确认 ## 验证 - `npm run build` - `git diff --check` --------- Co-authored-by: linkeyu <798648091@qq.com> Reviewed-on: #67 Co-authored-by: linkeyu <linkeyu@wonderable.ai> Co-committed-by: linkeyu <linkeyu@wonderable.ai>
34 lines
892 B
TypeScript
34 lines
892 B
TypeScript
export interface BulkReviewItemResult {
|
||
id: number;
|
||
ok: boolean;
|
||
status: string | null;
|
||
error: string | null;
|
||
}
|
||
|
||
export interface BulkReviewResult {
|
||
total: number;
|
||
success: number;
|
||
failed: number;
|
||
items: BulkReviewItemResult[];
|
||
}
|
||
|
||
export const BULK_REVIEW_MAX = 50;
|
||
|
||
export function failedReviewIds(result: BulkReviewResult): number[] {
|
||
return result.items.filter((item) => !item.ok).map((item) => item.id);
|
||
}
|
||
|
||
export function bulkFailureReasonText(result: BulkReviewResult): string {
|
||
const reasons = Array.from(
|
||
new Set(
|
||
result.items
|
||
.filter((item) => !item.ok)
|
||
.map((item) => item.error?.trim())
|
||
.filter((reason): reason is string => Boolean(reason)),
|
||
),
|
||
);
|
||
if (!reasons.length) return '';
|
||
const visible = reasons.slice(0, 3);
|
||
return `;原因:${visible.join(';')}${reasons.length > visible.length ? ';…' : ''}`;
|
||
}
|