feat(ai-review 使用量): 新增多平台 AI 助理使用量統計與剩餘可用百分比
This commit is contained in:
+11
-1
@@ -5,6 +5,7 @@ import { getPRDiff, postComment, getCommitMessageBySha, getBotReviewOutcome, sho
|
||||
import { analyzeWithRole, loadOldFindings, mergeFindings, sortByLevel, deduplicateWithAI, loadExclusions, applyExclusions, filterFalsePositivesWithAI } from './findings.js';
|
||||
import { reconcileConversations, dropResolvedFindings, addCarriedFindings } from './resolve.js';
|
||||
import { saveFindings, postFindingsReview, formatFindingsStatsLine } from './comments.js';
|
||||
import { getRunUsage, getRateLimit, fetchAccountQuota, formatUsageStats, formatUsageStatsLine } from './usage.js';
|
||||
import { cloneRepo, commitAndPush, getRepoState } from './git.js';
|
||||
import { validateJSONArrayFile, ensureJSONArrayFileExists } from './json.js';
|
||||
import { runPreflight } from './preflight.js';
|
||||
@@ -53,7 +54,7 @@ async function main() {
|
||||
warn(`Step2 對話收斂失敗(繼續執行): ${e.message}`);
|
||||
}
|
||||
|
||||
const { provider, baseURL, model } = getLLMConfig();
|
||||
const { provider, apiKeys, baseURL, model } = getLLMConfig();
|
||||
if (!provider) {
|
||||
error('未設定任何 LLM API Key,請檢查 action inputs');
|
||||
process.exit(1);
|
||||
@@ -137,6 +138,14 @@ async function main() {
|
||||
step('Step6', 'Findings 寫入與 Review 發布');
|
||||
const reviewDir = repoDir || WORKSPACE;
|
||||
saveFindings(WORKSPACE, filtered, reviewDir);
|
||||
|
||||
// 蒐集 AI 助理使用量:本次 token 消耗 + 剩餘可用百分比(帳號額度優先,否則用回應 header 的速率配額;皆失敗時降級為「無法計算」,不中斷流程)
|
||||
const runUsage = getRunUsage();
|
||||
const quota = await fetchAccountQuota(provider, { apiKeys, baseURL });
|
||||
const rate = getRateLimit();
|
||||
const usageSection = formatUsageStats(provider, model, runUsage, quota, rate);
|
||||
line(`使用量統計: ${formatUsageStatsLine(provider, model, runUsage, quota, rate)}`);
|
||||
|
||||
try {
|
||||
logFindingsStats('Step6 儲存 findings 統計', filtered);
|
||||
logFindingsStats('Step6 review summary 統計', filtered);
|
||||
@@ -144,6 +153,7 @@ async function main() {
|
||||
await postFindingsReview(filtered, {
|
||||
summaryFindings: filtered,
|
||||
commentFindings: filtered,
|
||||
usageSection,
|
||||
});
|
||||
ok('Step6 完成');
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user