From 4e7c1a2e8018bbbedb203b2ae76022e1410df1d1 Mon Sep 17 00:00:00 2001 From: let5sne Date: Wed, 5 Aug 2026 02:46:07 +0800 Subject: [PATCH] feat(frontend): promote best answers to experience candidates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - questions admin: 转为经验候选 action on published best answers, moderator-gated, confirm dialog, idempotent feedback --- frontend/src/api/aihr/questions.ts | 6 ++++++ frontend/src/views/community/questions.vue | 21 +++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/frontend/src/api/aihr/questions.ts b/frontend/src/api/aihr/questions.ts index 0fc322e5..db090efb 100644 --- a/frontend/src/api/aihr/questions.ts +++ b/frontend/src/api/aihr/questions.ts @@ -82,6 +82,12 @@ export const selectBestAnswer = (questionId: number, answerId: number): Promise< url: `/api/aihr/question-admin/questions/${questionId}/best-answer`, method: 'post', data: { answerId }, headers: { repeatSubmit: false } }); +export type PromoteCaseCandidateResult = { caseId: number; created: boolean }; + +export const promoteAnswerToCaseCandidate = (answerId: number): Promise> => request({ + url: `/api/aihr/question-admin/answers/${answerId}/to-case-candidate`, method: 'post', headers: { repeatSubmit: false } +}); + export const listIncentiveRules = (): Promise> => request({ url: '/api/aihr/incentive-admin/rules', method: 'get' }); diff --git a/frontend/src/views/community/questions.vue b/frontend/src/views/community/questions.vue index 6df54606..454438d6 100644 --- a/frontend/src/views/community/questions.vue +++ b/frontend/src/views/community/questions.vue @@ -51,6 +51,7 @@ 通过 拒绝 设为最佳 + {{ promotedAnswerIds.has(answer.id) ? '已转候选' : '转为经验候选' }} @@ -71,9 +72,14 @@