import { useState, useEffect } from 'react'; import api from '../services/api'; export default function HistoryPage() { const [analyses, setAnalyses] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(''); const [page, setPage] = useState(1); const [totalPages, setTotalPages] = useState(1); const [selectedAnalysis, setSelectedAnalysis] = useState(null); const [showDetail, setShowDetail] = useState(false); useEffect(() => { loadAnalyses(); }, [page]); const loadAnalyses = async () => { try { setLoading(true); const response = await api.getAnalysisHistory(page, 10); if (response.success) { setAnalyses(response.data); setTotalPages(response.pagination.totalPages); } } catch (err) { setError(err.message); } finally { setLoading(false); } }; const viewDetail = async (id) => { try { const response = await api.getAnalysisDetail(id); if (response.success) { setSelectedAnalysis(response.analysis); setShowDetail(true); } } catch (err) { alert('載入失敗: ' + err.message); } }; const deleteAnalysis = async (id) => { if (!confirm('確定要刪除此分析記錄嗎?')) return; try { const response = await api.deleteAnalysis(id); if (response.success) { loadAnalyses(); } } catch (err) { alert('刪除失敗: ' + err.message); } }; const getStatusBadge = (status) => { const statusMap = { pending: { color: 'gray', text: '待處理' }, processing: { color: 'blue', text: '處理中' }, completed: { color: 'green', text: '已完成' }, failed: { color: 'red', text: '失敗' }, }; const s = statusMap[status] || statusMap.pending; return ( {s.text} ); }; return (

分析歷史

查看您的所有 5 Why 分析記錄

{error && (

{error}

)} {loading ? (
) : ( <> {/* Table */}
{analyses.length === 0 ? ( ) : ( analyses.map((analysis) => ( )) )}
ID 發現 狀態 建立時間 操作
尚無分析記錄
#{analysis.id}
{analysis.finding}
{getStatusBadge(analysis.status)} {new Date(analysis.created_at).toLocaleString('zh-TW')}
{/* Pagination */} {totalPages > 1 && (
第 {page} 頁,共 {totalPages} 頁
)} )} {/* Detail Modal */} {showDetail && selectedAnalysis && (

分析詳情 #{selectedAnalysis.id}

發現

{selectedAnalysis.finding}

{selectedAnalysis.perspectives && selectedAnalysis.perspectives.map((perspective, index) => (

{perspective.perspective_type === 'technical' && '⚙️ 技術角度'} {perspective.perspective_type === 'process' && '📋 流程角度'} {perspective.perspective_type === 'human' && '👤 人員角度'}

{perspective.whys && perspective.whys.map((why, wIndex) => (

Why {why.why_level}:

{why.question}

{why.answer}

))} {perspective.root_cause && (

根本原因:

{perspective.root_cause}

)}
))}
)}
); }