fix: 审计后续 3 项修复 — 残留清理 + FTS5 CJK + HTTP 大小限制
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled

1. Shell Hands 残留清理 (3处):
   - message.rs: 移除过时的 zclaw_hands::slideshow 注释
   - user_profiler.rs: slideshow 偏好改为 RecentTopic
   - handStore.test.ts: 移除 speech mock 数据 (3→2)

2. zclaw-growth FTS5 CJK 查询修复:
   - sanitize_fts_query CJK 路径从精确短语改为 token OR 组合
   - "Rust 编程" → "rust" OR "编程" (之前是 "rust 编程" 精确匹配)
   - 修复 test_memory_lifecycle + test_semantic_search_ranking

3. WASM HTTP 响应大小限制:
   - Content-Length 预检 + 读取后截断 (1MB 上限)
   - read_to_string 改为显式错误处理

651 测试全通过,0 失败。
This commit is contained in:
iven
2026-04-18 09:23:58 +08:00
parent 3a24455401
commit 450569dc88
5 changed files with 82 additions and 12 deletions

View File

@@ -88,7 +88,7 @@ fn classify_fact_content(fact: &Fact) -> Option<ProfileFieldUpdate> {
return Some(ProfileFieldUpdate::PreferredTool("collector".into()));
}
if content.contains("幻灯") || content.contains("演示") || content.contains("ppt") {
return Some(ProfileFieldUpdate::PreferredTool("slideshow".into()));
return Some(ProfileFieldUpdate::RecentTopic("演示文稿".into()));
}
// Default: treat as a recent topic

View File

@@ -115,14 +115,13 @@ describe('handStore — loadHands', () => {
hands: [
{ id: 'h1', name: 'browser', description: 'Web automation', status: 'idle', requirements_met: true, category: 'automation', icon: '🌐', tool_count: 5, metric_count: 2 },
{ id: 'h2', name: 'researcher', description: 'Deep research', status: 'running', requirements_met: true },
{ id: 'h3', name: 'speech', description: 'TTS', requirements_met: false },
],
});
await useHandStore.getState().loadHands();
const state = useHandStore.getState();
expect(state.hands).toHaveLength(3);
expect(state.hands).toHaveLength(2);
expect(state.hands[0].name).toBe('browser');
expect(state.hands[0].status).toBe('idle');
expect(state.hands[0].toolCount).toBe(5);