dvc890 commited on
Commit
98030d3
·
verified ·
1 Parent(s): c6da0ce

Update pages/AIAssistant.tsx

Browse files
Files changed (1) hide show
  1. pages/AIAssistant.tsx +12 -6
pages/AIAssistant.tsx CHANGED
@@ -2,11 +2,12 @@
2
  import React, { useState, useEffect } from 'react';
3
  import { api } from '../services/api';
4
  import { UserRole } from '../types';
5
- import { Bot, Mic, Loader2, Briefcase } from 'lucide-react';
6
  import { AdminPanel } from '../components/ai/AdminPanel';
7
  import { ChatPanel } from '../components/ai/ChatPanel';
8
  import { AssessmentPanel } from '../components/ai/AssessmentPanel';
9
  import { WorkAssistantPanel } from '../components/ai/WorkAssistantPanel';
 
10
 
11
  export const AIAssistant: React.FC = () => {
12
  const currentUser = api.auth.getCurrentUser();
@@ -14,7 +15,7 @@ export const AIAssistant: React.FC = () => {
14
 
15
  const [loading, setLoading] = useState(true);
16
  const [isEnabled, setIsEnabled] = useState(false);
17
- const [activeTab, setActiveTab] = useState<'chat' | 'assessment' | 'work'>('chat');
18
 
19
  useEffect(() => {
20
  checkStatus();
@@ -54,13 +55,16 @@ export const AIAssistant: React.FC = () => {
54
  <div className="bg-white border-b border-gray-200 px-6 pt-4 flex justify-between shrink-0 shadow-sm z-10 overflow-x-auto">
55
  <div className="flex gap-6 min-w-max">
56
  <button onClick={() => setActiveTab('chat')} className={`pb-3 text-sm font-bold border-b-2 transition-colors flex items-center gap-2 ${activeTab === 'chat' ? 'border-blue-500 text-blue-600' : 'border-transparent text-gray-500 hover:text-gray-700'}`}>
57
- <Bot size={18} className={activeTab === 'chat' ? 'text-blue-500' : ''}/> AI 助教 (问答)
58
  </button>
59
  <button onClick={() => setActiveTab('assessment')} className={`pb-3 text-sm font-bold border-b-2 transition-colors flex items-center gap-2 ${activeTab === 'assessment' ? 'border-purple-500 text-purple-600' : 'border-transparent text-gray-500 hover:text-gray-700'}`}>
60
- <Mic size={18} className={activeTab === 'assessment' ? 'text-purple-500' : ''}/> 口语/背诵测评
61
  </button>
62
  <button onClick={() => setActiveTab('work')} className={`pb-3 text-sm font-bold border-b-2 transition-colors flex items-center gap-2 ${activeTab === 'work' ? 'border-indigo-500 text-indigo-600' : 'border-transparent text-gray-500 hover:text-gray-700'}`}>
63
- <Briefcase size={18} className={activeTab === 'work' ? 'text-indigo-500' : ''}/> 工作助理 (文案/策划)
 
 
 
64
  </button>
65
  </div>
66
  </div>
@@ -69,8 +73,10 @@ export const AIAssistant: React.FC = () => {
69
  <ChatPanel currentUser={currentUser} />
70
  ) : activeTab === 'assessment' ? (
71
  <AssessmentPanel currentUser={currentUser} />
72
- ) : (
73
  <WorkAssistantPanel currentUser={currentUser} />
 
 
74
  )}
75
  </div>
76
  );
 
2
  import React, { useState, useEffect } from 'react';
3
  import { api } from '../services/api';
4
  import { UserRole } from '../types';
5
+ import { Bot, Mic, Loader2, Briefcase, HeartHandshake } from 'lucide-react';
6
  import { AdminPanel } from '../components/ai/AdminPanel';
7
  import { ChatPanel } from '../components/ai/ChatPanel';
8
  import { AssessmentPanel } from '../components/ai/AssessmentPanel';
9
  import { WorkAssistantPanel } from '../components/ai/WorkAssistantPanel';
10
+ import { CommentGeneratorPanel } from '../components/ai/CommentGeneratorPanel';
11
 
12
  export const AIAssistant: React.FC = () => {
13
  const currentUser = api.auth.getCurrentUser();
 
15
 
16
  const [loading, setLoading] = useState(true);
17
  const [isEnabled, setIsEnabled] = useState(false);
18
+ const [activeTab, setActiveTab] = useState<'chat' | 'assessment' | 'work' | 'comments'>('chat');
19
 
20
  useEffect(() => {
21
  checkStatus();
 
55
  <div className="bg-white border-b border-gray-200 px-6 pt-4 flex justify-between shrink-0 shadow-sm z-10 overflow-x-auto">
56
  <div className="flex gap-6 min-w-max">
57
  <button onClick={() => setActiveTab('chat')} className={`pb-3 text-sm font-bold border-b-2 transition-colors flex items-center gap-2 ${activeTab === 'chat' ? 'border-blue-500 text-blue-600' : 'border-transparent text-gray-500 hover:text-gray-700'}`}>
58
+ <Bot size={18} className={activeTab === 'chat' ? 'text-blue-500' : ''}/> AI 助教
59
  </button>
60
  <button onClick={() => setActiveTab('assessment')} className={`pb-3 text-sm font-bold border-b-2 transition-colors flex items-center gap-2 ${activeTab === 'assessment' ? 'border-purple-500 text-purple-600' : 'border-transparent text-gray-500 hover:text-gray-700'}`}>
61
+ <Mic size={18} className={activeTab === 'assessment' ? 'text-purple-500' : ''}/> 测评
62
  </button>
63
  <button onClick={() => setActiveTab('work')} className={`pb-3 text-sm font-bold border-b-2 transition-colors flex items-center gap-2 ${activeTab === 'work' ? 'border-indigo-500 text-indigo-600' : 'border-transparent text-gray-500 hover:text-gray-700'}`}>
64
+ <Briefcase size={18} className={activeTab === 'work' ? 'text-indigo-500' : ''}/> 办公
65
+ </button>
66
+ <button onClick={() => setActiveTab('comments')} className={`pb-3 text-sm font-bold border-b-2 transition-colors flex items-center gap-2 ${activeTab === 'comments' ? 'border-amber-500 text-amber-600' : 'border-transparent text-gray-500 hover:text-gray-700'}`}>
67
+ <HeartHandshake size={18} className={activeTab === 'comments' ? 'text-amber-500' : ''}/> 评语
68
  </button>
69
  </div>
70
  </div>
 
73
  <ChatPanel currentUser={currentUser} />
74
  ) : activeTab === 'assessment' ? (
75
  <AssessmentPanel currentUser={currentUser} />
76
+ ) : activeTab === 'work' ? (
77
  <WorkAssistantPanel currentUser={currentUser} />
78
+ ) : (
79
+ <CommentGeneratorPanel currentUser={currentUser} />
80
  )}
81
  </div>
82
  );