feat: AI余额定时自动同步(CLI脚本+systemd每日timer+批量同步接口+前端按钮)

This commit is contained in:
gouki
2026-08-02 17:43:46 +00:00
parent 2e3e9f8b0b
commit 8ba58caaa8
7 changed files with 116 additions and 2 deletions
+10 -1
View File
@@ -226,6 +226,7 @@ const AssetsView = {
<option value="">全部状态</option>
<option v-for="(l,k) in Fmt.STATUS_LABELS" :key="k" :value="k">{{ l }}</option>
</select>
<button @click="syncAllAI" class="text-sm px-3 py-1.5 rounded-lg border border-violet-300 dark:border-violet-700 text-violet-600 dark:text-violet-400 hover:bg-violet-50 dark:hover:bg-violet-900/20">同步AI余额</button>
<span class="ml-auto text-xs text-slate-400">共 {{ store.assets.length }} 条</span>
</div>
@@ -297,7 +298,15 @@ const AssetsView = {
await loadAssets();
} catch (e) { alert('刷新失败:' + e.message); }
}
return { store, Fmt, reload: loadAssets, edit: openAssetEdit, del: deleteAsset, viewServer, refreshBalance };
async function syncAllAI() {
if (!confirm('同步所有 AI 账号的余额?')) return;
try {
const r = await Api.post('/sync/ai-balances', {});
alert('同步完成:成功 ' + r.success + ',失败 ' + r.failed + (r.errors && r.errors.length ? '\n' + r.errors.join('\n') : ''));
await loadAssets();
} catch (e) { alert('同步失败:' + e.message); }
}
return { store, Fmt, reload: loadAssets, edit: openAssetEdit, del: deleteAsset, viewServer, refreshBalance, syncAllAI };
},
};