Skip to content

Commit 10fcd58

Browse files
committed
chore(rust): 删旧单 provider 密钥三命令
1 parent e96ab63 commit 10fcd58

3 files changed

Lines changed: 3 additions & 40 deletions

File tree

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -367,16 +367,13 @@ pub fn handle() -> impl Fn(tauri::ipc::Invoke<tauri::Wry>) -> bool + Send + Sync
367367
// v0.8.0 M1 AI 使能层(REQ-138/139/140:密钥管理/余额查询/
368368
// 授权默认关+审计可见化——共享 ai_client 由 M2/M3 消费)
369369
crate::commands_ai_settings::ai_get_settings,
370-
crate::commands_ai_settings::ai_save_key,
371-
crate::commands_ai_settings::ai_clear_key,
372370
crate::commands_ai_settings::ai_update_settings,
373371
crate::commands_ai_settings::ai_set_authorized,
374372
crate::commands_ai_settings::ai_set_enabled,
375373
crate::commands_ai_settings::ai_set_vision_refine,
376374
// v0.18.2(REQ-254):目标 AI 设置(独立开关+预算档位)
377375
crate::commands_ai_settings::ai_set_goal_plan,
378376
crate::commands_ai_settings::ai_set_refine_strategy,
379-
crate::commands_ai_settings::ai_test_connection,
380377
crate::commands_ai_settings::ai_get_balance,
381378
crate::commands_ai_settings::ai_audit_list,
382379
crate::commands_ai_settings::ai_audit_clear,

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

Lines changed: 1 addition & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
//! @ai-context: 密钥解析优先级:环境变量 SILICONFLOW_API_KEY > 凭据库(DPAPI);
77
//! 密钥**永不回传前端**(视图只报存在性与来源——明文红线)。
88
//! @ai-context: 授权红线:内容上传类调用(M2 精修/M3 补充)消费
9-
//! content_gate(enabled+authorized 双条件);余额查询/测试连接
9+
//! content_gate(enabled+authorized 双条件);余额查询
1010
//! 为配置验证读操作不 gate(但审计记录——AI 调用轨迹可见化)。
1111
//! @ai-context: 锁序:设置读写在短锁内完成即释放;网络调用(余额)不持锁。
1212
@@ -16,8 +16,6 @@ use crate::ai_balance::{low_balance_warning, AiBalance, AiBalanceAdapter};
1616
use crate::ai_guardrails::AiAuditEntry;
1717
use crate::ai_settings::AiSettings;
1818
use crate::commands::AppState;
19-
/// 密钥最大长度(防超长字符串污染凭据文件;真实密钥远小于此)。
20-
const API_KEY_MAX_CHARS: usize = 512;
2119

2220
/// 设置视图(前端展示;密钥只暴露存在性与来源,绝不回传明文——明文红线)。
2321
#[derive(Debug, Clone, serde::Serialize)]
@@ -92,25 +90,6 @@ pub fn ai_get_settings(state: State<'_, AppState>) -> Result<AiSettingsView, Str
9290
})
9391
}
9492

95-
/// 保存密钥到凭据库(Windows DPAPI 加密文件;明文红线——不落 SQLite/明文)。
96-
#[tauri::command]
97-
pub fn ai_save_key(state: State<'_, AppState>, api_key: String) -> Result<(), String> {
98-
let key = api_key.trim().to_string();
99-
if key.is_empty() {
100-
return Err("密钥不能为空".to_string());
101-
}
102-
if key.chars().count() > API_KEY_MAX_CHARS {
103-
return Err(format!("密钥超长(上限 {} 字符)", API_KEY_MAX_CHARS));
104-
}
105-
state.ai_credentials.save_key("default", &key)
106-
}
107-
108-
/// 清除凭据库密钥(文件不存在视为已清除——幂等)。
109-
#[tauri::command]
110-
pub fn ai_clear_key(state: State<'_, AppState>) -> Result<(), String> {
111-
state.ai_credentials.clear_key("default")
112-
}
113-
11493
/// v0.18.2(REQ-254):目标 AI 设置(read-modify-write 最小面——
11594
/// 不覆盖其他设置字段;档位白名单 light/standard/deep)。
11695
#[tauri::command]
@@ -247,19 +226,6 @@ pub fn ai_set_refine_strategy(
247226
lock.save(&state.ai_settings_path)
248227
}
249228

250-
/// 一键测试连接(REQ-138:调余额接口验证密钥有效性——错误密钥明确报错)。
251-
///
252-
/// @ai-context: 配置验证类读操作,不 gate 授权;401/403 → 明确"密钥无效"
253-
/// 提示(AiBalanceAdapter 归一);无密钥 → 引导配置。
254-
#[tauri::command]
255-
pub fn ai_test_connection(state: State<'_, AppState>) -> Result<AiBalance, String> {
256-
let adapter = balance_adapter(&state)?;
257-
let balance = adapter.fetch()?;
258-
// 测试连接也留审计痕迹(AI 调用轨迹可见化)
259-
push_audit(&state, "test-connection", "ok");
260-
Ok(balance)
261-
}
262-
263229
/// 查询余额(REQ-139:实时可查 + 低余额提醒 + 审计记录)。
264230
#[tauri::command]
265231
pub fn ai_get_balance(state: State<'_, AppState>) -> Result<BalanceView, String> {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
| app/src-tauri/src/video_profile_tests.rs | 518 | 档案测试域(12 档案断言矩阵 + 检测投票 + JSON 校准 + v0.13.6 领域记忆独立通道/旧 JSON 零迁移用例 + 审查回归(烘焙迁移/单字种子守卫))单模块 #[path] 挂载 | 若再增长:档案矩阵拆至 video_profile_data_tests.rs |
3737
| app/src/components/LiveActivityPanel.tsx | 517 | 实时活动面板:会话状态/转录流/OCR 预览/控制区多状态面板内聚(前端审查登记) | 若再增长:转录流与 OCR 预览拆至 LiveTranscriptStream.tsx / LiveOcrPreview.tsx |
3838
| app/src-tauri/src/ai_client.rs | 505 | v0.11.6 M1(AiClient::from_provider / from_settings_with_store / is_fallbackable / fallback_provider_ids)+ 2026-09-11 DeepSeek V4.1 适配(chat_plain 探活路径 / build_plain_payload / json 前置条件兜底接线 / thinking 策略落点 / 4xx 错误体透出——纯策略与提取逻辑已拆至 ai_request_policy.rs)——Provider 解析与错误分类内聚于 AiClient 域,构造入口与降级链纯函数同文件便于单测。**旧登记 322 为过期快照,本次按实测纠偏** | 若再增长:fallback_provider_ids 拆至 ai_fallback.rs;payload 构造族拆至 ai_payload.rs |
39-
| app/src-tauri/src/app_commands.rs | 503 | 宏约束下的**唯一**注册点:334 条 `generate_handler!` 条目是**数据不是逻辑** —— `Invoke` 按值语义使分域组合不可行(见文件头),拆成多份只会在域间新增「命令名 → 域」路由漂移面;一致性由 `scripts/check-command-registry.mjs` 机器门禁守 | 不拆(数据文件);新增命令时同步条目,由门禁强制 |
39+
| app/src-tauri/src/app_commands.rs | 500 | 宏约束下的**唯一**注册点:334 条 `generate_handler!` 条目是**数据不是逻辑** —— `Invoke` 按值语义使分域组合不可行(见文件头),拆成多份只会在域间新增「命令名 → 域」路由漂移面;一致性由 `scripts/check-command-registry.mjs` 机器门禁守 | 不拆(数据文件);新增命令时同步条目,由门禁强制 |
4040
| app/src/components/GroupSidebar.test.tsx | 497 | 覆盖串组场景——切换 ⓘ 弹层目标组时表单态必须重置(key=group.id修复):组 A 改了判类(未确认)→ 点组 B ⓘ → 弹层显示 B 且判类下拉回到 B.kind(防把 A 的选择误用到 B——路径: 改判误操作)。(自动摘取,待细化) | 若再增长:按职责拆分 |
4141
| app/src-tauri/src/db_sop.rs | 490 | v0.20.3(REQ-296/297)SOP 三表数据域(模板/run/步骤/保鲜/聚合)+ 审查加固(保链更新/幂等守卫/步数计数)内聚 | 若再增长:run 执行族拆至 db_sop_run.rs |
4242
| app/src-tauri/src/live_session_persist.rs | 488 | 定稿落库域(persist_final/digest_merged/handle_final_event)+ P2 flush_tail_and_persist(停止/暂停共用尾句落库)内聚 | 若再增长:flush_tail_and_persist 与 digest_merged 拆至 live_session_persist_tail.rs |
@@ -99,7 +99,6 @@
9999
| app/src/components/AiProviderSettings.tsx | 352 | v0.11.6 M1 code-review 修复(2026-08-22):删除/清钥加 window.confirm、window.prompt 改卡片内联 password 输入(+2 state + 内联表单)、模型列表 input 改 textarea、fallbackOrder 透传 initial、run 置"处理中"反馈、预设双源 presetOptions 后端拉取——修复净增约 13 行越线(实测 329,含 4 行豁免头注释) | 若再增长:内联密钥表单拆至 AiProviderKeyInput.tsx |
100100
| app/src/pages/SessionsPage.tsx | 352 | 本层为状态宿主与数据编排:会话列表/详情状态、事件驱动刷新(live:status/session:fused/切页 active)、转化与删除操作;左栏列表 UI 拆至 SessionListPanel、右栏详情拆至 SessionDetailPanel(豁免清单拆分计划落地,本文件 ≤300 行)。(自动摘取,待细化) | 若再增长:按职责拆分 |
101101
| app/src/components/NoteLinkToSystem.tsx | 351 | v0.19.7(REQ-286)重构:挂体系选择器(体系下拉 + 三 tab + LinkEntityPicker 搜索树列表 + 三类内联轻建编排 + 既有反查/撤链/钳制语义保持)——实体选择/创建交互已下沉 LinkEntityPicker.tsx(134 行),本文件保留编排与数据装载内聚 | 若再增长:树行构建(flattenNodeRows)与实体装载拆至 useSystemEntities.ts hook |
102-
| app/src-tauri/src/commands_ai_settings.rs | 349 | AI 设置命令域(视图/密钥/授权/目标 AI) + v0.19.1 ai_set_kb_qa 最小面命令(+28)——read-modify-write 同域先例(ai_set_goal_plan)内聚 | 若再增长:kb/goal 最小面命令拆至 commands_ai_settings_extra.rs |
103102
| app/src-tauri/src/structure_models.rs | 343 | v0.5.0 模型版:模型清单/独立状态机下载器(进度事件/.part 原子写/按需启用三分类)+ 磁盘就绪判定(disk_done)内聚 | 若再增长:download_one 拆至 structure_download.rs |
104103
| app/src-tauri/src/db_ai_tasks.rs | 340 | 任务注册表在 AppState 内存(HashMap)——重启即失、未采纳结果无法恢复。本模块把任务记录落 SQLite(ai_tasks 表):状态/结果 JSON/成本/耗时/模型/错误全量可查;应用启动时恢复未采纳的成功结果到注册表(重启不丢,任务面板可见历史);采纳落库时标记 adopted(防重启后重复采纳产生重复笔记)。(自动摘取,待细化) | 若再增长:按职责拆分 |
105104
| app/src-tauri/src/screen_merge_tests.rs | 339 | 屏级聚合/净化纯函数测试域(聚类/行合并/零跨度/图去重回归)单模块 #[path] 挂载 | 若再增长:净化组拆至 screen_merge_purify_tests.rs |
@@ -124,6 +123,7 @@
124123
| app/src-tauri/src/commands_ai_providers.rs | 317 | v0.11.6 M1:Provider 管理命令域(8 命令 + 视图映射 + 密钥解析口 resolve_default_provider_key/default_provider_ready)内聚于命令层;2026-09-11 探活改 chat_plain。`resolve_input`/`to_view` 与命令同域便于契约一致 | 若再增长:默认 Provider 解析与就绪门禁拆至 ai_provider_resolve.rs |
125124
| app/src/components/AiConversationDock.tsx | 316 | 全局 AI 对话面板(REQ-274)+ 批 1 终态事件刷新接线——2026-09-09 审查纠偏实测登记(此前漏登),300-600 档 | 若再增长:会话列表段拆至 DockSessionList.tsx |
126125
| app/src/components/SessionListPanel.test.tsx | 316 | 覆盖批 4 选择/批量交互矩阵——选择模式进出(按钮+Esc)、单击勾选、Ctrl 加/减、Shift 区间、折叠组全选不含隐藏行(P3-1 修复:全选口径=可见行序 visibleOrder 而非 filtered)、列表变化自动裁剪选集、批量删除 pending 防连点与成功清选集(P3-2)、批量转eligible 过滤。invoke 全 mock;数据为本地 props 零后端往返(面板数据驱动经 props——父层 invoke 不在本组件)。(自动摘取,待细化) | 若再增长:按职责拆分 |
126+
| app/src-tauri/src/commands_ai_settings.rs | 315 | AI 设置命令域(视图/密钥/授权/目标 AI) + v0.19.1 ai_set_kb_qa 最小面命令(+28)——read-modify-write 同域先例(ai_set_goal_plan)内聚 | 若再增长:kb/goal 最小面命令拆至 commands_ai_settings_extra.rs |
127127
| app/src/components/LiveProfileStrip.tsx | 315 | 采集时右栏由 LiveActivityPanel 独占、档案卡(ProfileDetector)被隐藏——但 M2(REQ-189)引入"会话中画面档每 2-3 分钟自动重评"后档位成为采集中动态信息,且降档需用户裁决。本组件在采集态常显档案摘要(形态×画面档×领域),并接线 live:tier-changed /live:tier-downgrade-request → confirm_tier_downgrade,补齐 M2 前端断链(此前降档请求无人应答,降档永不生效)。(自动摘取,待细化) | 若再增长:按职责拆分 |
128128
| app/src-tauri/src/ffmpeg.rs | 313 | ffmpeg 是文件导入(音轨/关键帧)与内嵌字幕(L2)的唯一外部依赖。(自动摘取,待细化) | 若再增长:按职责拆分 |
129129
| app/src-tauri/src/note_filter_ocr.rs | 313 | BodySource::OcrDirect 分支的精简净化链——排序 → 净化链(① 行合并评分器 → ② 行级重识别判定 → ③ 跨帧增量合并,spec §3.1)→ 符号归一(跳过口语净化/口头禅/碎片规则——OCR文本是视觉识别产物,无 ASR 的结巴/填充词/重复)→ 相邻去重→ markdown 组装("图文提取"标注段)。(自动摘取,待细化) | 若再增长:按职责拆分 |

0 commit comments

Comments
 (0)