feat(hands,desktop): C线差异化 — 管家日报 + 零配置引导优化
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

C1 管家日报:
- 新增 _daily_report Hand (daily_report.rs) — 5个测试
- 增强 user_profile_store — PainPoint 结构体 + find_active_pains_since + resolve_pain
- experience_store 新增 find_since 日期范围查询
- trajectory_store 新增 get_events_since 日期范围查询
- 新增 DailyReportPanel.tsx 前端日报面板
- Sidebar 新增"日报"导航入口

C3 零配置引导:
- 修复行业卡点击后阶段推进 bug (industry_discovery → identity_setup)

验证: 940 tests PASS, 0 failures
This commit is contained in:
iven
2026-04-21 18:23:36 +08:00
parent a43806ccc2
commit ae56aba366
8 changed files with 864 additions and 44 deletions

View File

@@ -1,9 +1,10 @@
import { useState } from 'react';
import {
SquarePen, MessageSquare, Bot, Search, X, Settings
SquarePen, MessageSquare, Bot, Search, X, Settings, Newspaper
} from 'lucide-react';
import { ConversationList } from './ConversationList';
import { CloneManager } from './CloneManager';
import { DailyReportPanel } from './DailyReportPanel';
import { useChatStore } from '../store/chatStore';
export type MainViewType = 'chat';
@@ -14,7 +15,7 @@ interface SidebarProps {
onNewChat?: () => void;
}
type Tab = 'conversations' | 'clones';
type Tab = 'conversations' | 'clones' | 'daily-report';
export function Sidebar({
onOpenSettings,
@@ -79,6 +80,17 @@ export function Sidebar({
<Bot className="w-4 h-4" />
</button>
<button
onClick={() => handleNavClick('daily-report')}
className={`w-full flex items-center gap-3 px-3 py-2 rounded-lg text-sm transition-colors ${
activeTab === 'daily-report'
? 'bg-black/5 dark:bg-white/5 font-medium text-gray-900 dark:text-gray-100'
: 'text-gray-600 dark:text-gray-400 hover:bg-black/5 dark:hover:bg-white/5'
}`}
>
<Newspaper className="w-4 h-4" />
</button>
</div>
@@ -112,6 +124,7 @@ export function Sidebar({
</div>
)}
{activeTab === 'clones' && <div className="h-full overflow-y-auto"><CloneManager /></div>}
{activeTab === 'daily-report' && <DailyReportPanel />}
</div>
{/* Bottom user bar */}