Skip to content

Commit 464533d

Browse files
committed
fix(ai): 前端密钥门禁统一解析口与交付记录修正(v0.11.6 M1 终审)
1 parent a4e097d commit 464533d

5 files changed

Lines changed: 14 additions & 8 deletions

File tree

‎app/src-tauri/src/commands_ai_settings.rs‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,13 @@ pub struct BalanceView {
4848
pub fn ai_get_settings(state: State<'_, AppState>) -> Result<AiSettingsView, String> {
4949
let s = snapshot_settings(&state)?;
5050
let env_key = env_api_key();
51-
let stored = state.ai_credentials.load_key("default")?;
51+
// v0.11.6 M1:密钥存在性走统一解析口(env > 默认 Provider per-provider >
52+
// 旧 default scope)——Provider 面板配置的密钥对前端门禁同样生效
53+
let stored = if env_key.is_none() {
54+
crate::commands_ai_providers::resolve_default_provider_key(&state)?
55+
} else {
56+
None
57+
};
5258
let (has_key, key_source) = if env_key.is_some() {
5359
(true, "env".to_string())
5460
} else if stored.is_some() {

‎app/src/components/AiRefineCard.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export default function AiRefineCard({ sessionId, onApplied }: { sessionId: numb
7777
return;
7878
}
7979
if (!settings.hasKey) {
80-
setMsg("未配置 API 密钥——请到设置页「AI 服务」保存密钥");
80+
setMsg("未配置 API 密钥——请在设置页「AI 服务提供商」配置密钥");
8181
setPhase("idle");
8282
return;
8383
}

‎app/src/components/EnrichPanel.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export default function EnrichPanel({ noteId, onUpdated }: { noteId: number; onU
102102
return;
103103
}
104104
if (!settings.hasKey) {
105-
setMsg("未配置 API 密钥——请到设置页「AI 服务」保存密钥");
105+
setMsg("未配置 API 密钥——请在设置页「AI 服务提供商」配置密钥");
106106
return;
107107
}
108108
if (selected.length === 0) {

‎docs/standards/line-limit-exemptions.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
| app/src-tauri/src/analysis_tests.rs | 341 | 分析编排测试域(档案门控矩阵 + REQ-108 事件消费 + M2 三字段)单模块 #[path] 挂载 | 若再增长:事件消费组拆至 analysis_events_tests.rs |
4646
| app/src-tauri/src/streaming_asr_tests.rs | 340 | 流式 ASR 测试域(端点处理/静音判定/段切分回归)单模块 #[path] 挂载 | 若再增长:端点处理组拆至 streaming_endpoint_tests.rs |
4747
| app/src-tauri/src/commands_ai.rs | 340 | v0.5.0 起 AI 复核命令域(边界批量复核/配额/缓存/审计 + 结构渲染接线);与 note_filter_ai(纯逻辑)分层 | 若再增长:批量复核循环拆至 commands_ai_review.rs |
48-
| app/src-tauri/src/ai_client.rs | 334 | v0.11.6 M1(AiClient::from_provider / from_settings_with_store / is_fallbackable / fallback_provider_ids)——Provider 解析与错误分类内聚于 AiClient 域,构造入口与降级链纯函数同文件便于单测 | 若再增长:fallback_provider_ids 拆至 ai_fallback.rs |
48+
| app/src-tauri/src/ai_client.rs | 318 | v0.11.6 M1(AiClient::from_provider / from_settings_with_store / is_fallbackable / fallback_provider_ids)——Provider 解析与错误分类内聚于 AiClient 域,构造入口与降级链纯函数同文件便于单测 | 若再增长:fallback_provider_ids 拆至 ai_fallback.rs |
4949
| app/src-tauri/src/screens.rs | 332 | v0.7.3(REQ-155/156/160):画面要点屏构建编排(分组/聚类/图匹配 IO)+ 可消费块过滤扩展——编排与纯函数分层(纯函数在 screen_merge.rs) | 若再增长:filter_usable_blocks 拆至 screen_filter.rs |
5050
| app/src-tauri/src/ocr_cache.rs | 329 | OCR 结果缓存域(内容指纹键/容量淘汰/命中率统计)内聚;缓存策略与指纹算法共享上下文 | 若再增长:指纹算法拆至 ocr_fingerprint.rs |
5151
| app/src-tauri/src/ai_refine_task.rs | 322 | v0.8.0 F2-B4 拆分产物:精修任务执行域(任务编排/并发切片 worker 池/单片重试/部分成功/审计/落库)——并发编排与状态流转内聚 | 若再增长:refine_slices_concurrent 拆至 ai_refine_task_workers.rs |
@@ -67,7 +67,7 @@
6767
| app/src/components/ProfileDetector.tsx | 330 | 档案检测组件:投票/确认流/记忆偏好 UI + v0.11.5 Task 5 冲突提示内聚(实测 2026-08-22) | 若再增长:确认流拆至 ProfileConfirmFlow.tsx |
6868
| app/src/components/NoteEditView.tsx | 315 | 笔记编辑视图:编辑态/标签/结构面板内聚(前端审查登记) | 若再增长:结构面板拆至 NoteStructurePane.tsx |
6969
| app/src/components/NoteGroupPanel.tsx | 545 | v0.11.0~4 笔记组侧栏:组列表/路由可见可改/碎片捕获/闪卡生成与复习入口/结算仪式/周契约卡/feed 碎片列表(周契约与碎片列表已拆独立组件 WeekContractCard/FeedFragmentList)——组域交互单一面板内聚;v0.11.5 树形合并(buildTree 消费/搜索新建工具条/受控展开组) | 若再增长:结算仪式区拆至 GroupSettlementPane.tsx |
70-
| app/src/components/AiProviderSettings.tsx | 338 | v0.11.6 M1 code-review 修复(2026-08-22):删除/清钥加 window.confirm、window.prompt 改卡片内联 password 输入(+2 state + 内联表单)、模型列表 input 改 textarea、fallbackOrder 透传 initial、run 置"处理中"反馈——修复净增约 41 行越线(实测 338,含 4 行豁免头注释) | 若再增长:内联密钥表单拆至 AiProviderKeyInput.tsx |
70+
| app/src/components/AiProviderSettings.tsx | 316 | v0.11.6 M1 code-review 修复(2026-08-22):删除/清钥加 window.confirm、window.prompt 改卡片内联 password 输入(+2 state + 内联表单)、模型列表 input 改 textarea、fallbackOrder 透传 initial、run 置"处理中"反馈——修复净增约 41 行越线(实测 316,含 4 行豁免头注释) | 若再增长:内联密钥表单拆至 AiProviderKeyInput.tsx |
7171

7272
> 前端 **拆分中**(Task #9 笔记域修复进行中,暂不登记行数):`app/src/types.ts`、`app/src/pages/NotesPage.tsx`——待前端拆分完成后以实测行数重新评估。
7373
> 前端 SessionsPage.tsx 审查快照 304 行(登记值),v0.7.1 硬拆后长期 ≤300,本轮审查期间轻微越线;随 NotesPage/types.ts 拆分任务一并复核,若仍越线按上表模式登记。

‎docs/versions/v0.11.6.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ AI 从"单 Provider 直连 + 3 个散装适配器"升级为"Provider 抽象 +
2828
- `ai_credentials.rs` 扩展:per-provider DPAPI 密钥(`provider:<id>` 前缀)
2929
- 兼容迁移:旧 ai_settings.json → 自动生成 "SiliconFlow" Provider(用户无感)
3030
- 降级链简单版:Network/Server/Quota 失败自动切下一个(最多一次);Auth/Balance 不降级
31-
- 设置页拆出 `AiProviderSettings`(列表/添加/编辑/测试/启用);**移除余额卡片**;审计折叠"高级"区
31+
- 设置页拆出 `AiProviderSettings`(列表/添加/编辑/测试/启用);**移除余额卡片**;审计保留展开态
3232

3333
### M1 交付记录(2026-08-22)
3434

@@ -40,7 +40,7 @@ AI 从"单 Provider 直连 + 3 个散装适配器"升级为"Provider 抽象 +
4040
- 前端:AiProviderSettings 面板(列表/添加向导/编辑/测试/密钥内联输入/默认/确认弹窗;行数豁免登记)+ AiServicePanel 瘦身(移除密钥/端点/余额卡片,408→196 行)
4141
- 修复:任务预检密钥源统一(Provider 面板密钥对精修/补充生效);Ollama 免密钥测试连接(AiClientConfig.is_local)
4242
- 验证:cargo test 1521 passed / vitest 48 passed / tsc 零错误 / clippy 新增零警告
43-
- 遗留:显式 provider_ids 任务参数与降级链实际接线(M3);fallbackOrder UI 入口(M3);Ollama 预设默认禁用待用户启用
43+
- 遗留:显式 provider_ids 任务参数与降级链实际接线(M3);fallbackOrder UI 入口(M3);Ollama 预设默认禁用待用户启用;审计折叠"高级"区(M3,spec §五);AiRefineCard/EnrichPanel 授权文案去 SiliconFlow 特指(M3)
4444

4545
### M2 · 策略层(产出质量可定制)
4646

@@ -71,7 +71,7 @@ AI 从"单 Provider 直连 + 3 个散装适配器"升级为"Provider 抽象 +
7171
2. Provider 故障(mock 注入)自动降级到下一个,失败原因可见不静默
7272
3. 精修任务可选择产出档位(如"极简"),prompt 含对应策略指令,响应校验与档位无关
7373
4. 旧配置迁移无感:升级后原密钥/模型自动出现在 SiliconFlow Provider
74-
5. 余额卡片不再展示;审计在折叠区
74+
5. 余额卡片不再展示;审计保留展开态
7575
6. 全量回归通过(cargo test / clippy / vitest / tsc)
7676

7777
## 关联

0 commit comments

Comments
 (0)