P0 修复(Critical - 影响生产稳定性): - 修复 429 判断逻辑:使用 project_id 判断而非 account.Type 防止 AI Studio OAuth 被误判为 Code Assist 5分钟窗口 - 修复 Tier ID 丢失:刷新时始终保留旧值,默认 LEGACY 防止 fetchProjectID 失败导致 tier_id 被清空 - 修复 expires_at 下界:添加 minTTL=30s 保护 防止 expires_in <= 300 时生成过去时间引发刷新风暴 P1 修复(Important - 行为一致性): - 前端 isCodeAssist 判断与后端一致(支持 legacy) - 前端日期解析添加 NaN 保护 - 迁移脚本覆盖 legacy 账号 前端功能(新增): - AccountQuotaInfo 组件:Tier Badge + 二元进度条 + 倒计时 - 定时器动态管理:watch 监听限流状态 - 类型定义:GeminiCredentials 接口 测试: - ✅ TypeScript 类型检查通过 - ✅ 前端构建成功(3.33s) - ✅ Gemini + Codex 双 AI 审查通过 Refs: #gemini-quota
31 lines
868 B
SQL
31 lines
868 B
SQL
-- +goose Up
|
||
-- +goose StatementBegin
|
||
-- 为 Gemini Code Assist OAuth 账号添加默认 tier_id
|
||
-- 包括显式标记为 code_assist 的账号,以及 legacy 账号(oauth_type 为空但 project_id 存在)
|
||
UPDATE accounts
|
||
SET credentials = jsonb_set(
|
||
credentials,
|
||
'{tier_id}',
|
||
'"LEGACY"',
|
||
true
|
||
)
|
||
WHERE platform = 'gemini'
|
||
AND type = 'oauth'
|
||
AND jsonb_typeof(credentials) = 'object'
|
||
AND credentials->>'tier_id' IS NULL
|
||
AND (
|
||
credentials->>'oauth_type' = 'code_assist'
|
||
OR (credentials->>'oauth_type' IS NULL AND credentials->>'project_id' IS NOT NULL)
|
||
);
|
||
-- +goose StatementEnd
|
||
|
||
-- +goose Down
|
||
-- +goose StatementBegin
|
||
-- 回滚:删除 tier_id 字段
|
||
UPDATE accounts
|
||
SET credentials = credentials - 'tier_id'
|
||
WHERE platform = 'gemini'
|
||
AND type = 'oauth'
|
||
AND credentials->>'oauth_type' = 'code_assist';
|
||
-- +goose StatementEnd
|