Files
5why-analyzer/preview.html
donald f703d9c7c2 feat: Add comprehensive UI/UX preview page (Phase 3)
Created preview.html with 4 main sections:

1. 5 Why Analysis Tool Interface
   - Input forms for Finding and Job Content
   - Multi-language selection (7 languages)
   - Sample 3-perspective analysis results
   - Interactive guidelines section

2. Analysis History Page
   - Sortable data table with filters
   - CSV import/export buttons
   - Pagination controls
   - Search and date filtering

3. Admin Dashboard
   - Statistics overview (4 key metrics)
   - User management table with CRUD operations
   - LLM API configuration interface
   - System settings panel
   - Audit logs viewer

4. Login Page
   - Modern gradient design
   - Remember me function
   - Forgot password link

Features:
- Fully responsive design
- Tailwind CSS styling
- Tab-based navigation
- Interactive elements
- Color-coded status indicators
- Professional UI/UX

Ready for user approval before Phase 4 development.

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 18:41:11 +08:00

635 lines
38 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>5 Why Root Cause Analyzer - UI/UX Preview</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Microsoft JhengHei', sans-serif;
}
.tab-content { display: none; }
.tab-content.active { display: block; }
.nav-tab { @apply px-4 py-2 text-gray-600 hover:text-blue-600 cursor-pointer; }
.nav-tab.active { @apply text-blue-600 border-b-2 border-blue-600 font-semibold; }
</style>
</head>
<body class="bg-gray-50">
<!-- Top Navigation Bar -->
<nav class="bg-white shadow-sm border-b border-gray-200 sticky top-0 z-50">
<div class="max-w-7xl mx-auto px-4">
<div class="flex items-center justify-between h-16">
<div class="flex items-center space-x-8">
<h1 class="text-xl font-bold text-gray-800">🔍 5 Why Analyzer</h1>
<div class="hidden md:flex space-x-1">
<button class="nav-tab active" onclick="showTab('analysis')">分析工具</button>
<button class="nav-tab" onclick="showTab('history')">歷史記錄</button>
<button class="nav-tab" onclick="showTab('admin')">管理後台</button>
<button class="nav-tab" onclick="showTab('login')">登入頁面</button>
</div>
</div>
<div class="flex items-center space-x-4">
<span class="text-sm text-gray-600">donald (管理員)</span>
<button class="px-4 py-2 text-sm text-gray-600 hover:text-gray-800">登出</button>
</div>
</div>
</div>
</nav>
<!-- Tab 1: 5 Why Analysis Tool -->
<div id="analysis" class="tab-content active">
<div class="min-h-screen bg-gradient-to-br from-slate-50 via-blue-50 to-indigo-50 p-4 md:p-6">
<div class="max-w-7xl mx-auto">
<!-- Header -->
<div class="text-center mb-6">
<h2 class="text-3xl md:text-4xl font-bold text-slate-800 mb-2">
🔍 5 Why 根因分析器
</h2>
<p class="text-slate-500 text-sm md:text-base">
穿透問題表面,直達根本原因,產出永久性對策
</p>
<p class="text-xs text-slate-400 mt-1">
Powered by Ollama API (qwen2.5:3b)
</p>
</div>
<!-- Guidelines (Collapsed by default) -->
<div class="mb-6">
<button class="w-full py-3 bg-white hover:bg-slate-50 border border-slate-200 rounded-xl text-slate-600 font-medium transition-all flex items-center justify-center gap-2 shadow-sm">
📚 5 Why 執行要項指南
<span></span>
</button>
</div>
<!-- Input Section -->
<div class="bg-white rounded-2xl p-6 mb-6 border border-slate-200 shadow-sm">
<div class="grid md:grid-cols-2 gap-6 mb-6">
<div>
<label class="block text-sm font-medium text-slate-700 mb-2">
📋 我負責的 Finding 是什麼?
</label>
<p class="text-xs text-slate-400 mb-2">
請具體描述現象5W1H何人、何事、何時、何地、如何發生
</p>
<textarea placeholder="範例A 機台在 12/5 下午 2 點運轉時,主軸溫度達 95°C 觸發過熱保護導致停機,影響當日產能 200 件..." class="w-full h-36 px-4 py-3 bg-slate-50 border border-slate-200 rounded-xl text-slate-800 placeholder-slate-400 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent resize-none text-sm"></textarea>
</div>
<div>
<label class="block text-sm font-medium text-slate-700 mb-2">
💼 我的工作內容是什麼?
</label>
<p class="text-xs text-slate-400 mb-2">
說明您的職責範圍,幫助分析聚焦在可控因素
</p>
<textarea placeholder="範例:負責生產線設備維護與品質管控,管理 5 台 CNC 機台,需確保 OEE 達 85% 以上..." class="w-full h-36 px-4 py-3 bg-slate-50 border border-slate-200 rounded-xl text-slate-800 placeholder-slate-400 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent resize-none text-sm"></textarea>
</div>
</div>
<!-- Language Selection -->
<div class="mb-6">
<label class="block text-sm font-medium text-slate-700 mb-2">
🌐 輸出語言
</label>
<div class="flex flex-wrap gap-2">
<button class="px-3 py-1.5 rounded-lg text-sm font-medium bg-blue-500 text-white shadow-md">🇹🇼 繁體中文</button>
<button class="px-3 py-1.5 rounded-lg text-sm font-medium bg-slate-100 text-slate-600 hover:bg-slate-200">🇨🇳 简体中文</button>
<button class="px-3 py-1.5 rounded-lg text-sm font-medium bg-slate-100 text-slate-600 hover:bg-slate-200">🇺🇸 English</button>
<button class="px-3 py-1.5 rounded-lg text-sm font-medium bg-slate-100 text-slate-600 hover:bg-slate-200">🇯🇵 日本語</button>
<button class="px-3 py-1.5 rounded-lg text-sm font-medium bg-slate-100 text-slate-600 hover:bg-slate-200">🇰🇷 한국어</button>
<button class="px-3 py-1.5 rounded-lg text-sm font-medium bg-slate-100 text-slate-600 hover:bg-slate-200">🇻🇳 Tiếng Việt</button>
<button class="px-3 py-1.5 rounded-lg text-sm font-medium bg-slate-100 text-slate-600 hover:bg-slate-200">🇹🇭 ภาษาไทย</button>
</div>
</div>
<button class="w-full py-4 bg-gradient-to-r from-blue-500 to-indigo-500 hover:from-blue-600 hover:to-indigo-600 text-white font-bold rounded-xl transition-all duration-300 transform hover:scale-[1.02] shadow-lg">
🎯 Find My 5 Why
</button>
</div>
<!-- Sample Result (3 Perspectives) -->
<div class="bg-indigo-50 rounded-2xl p-5 mb-6 border border-indigo-200 shadow-sm">
<h3 class="text-indigo-700 font-bold mb-2 flex items-center gap-2">
📝 問題重新定義5W1H
</h3>
<p class="text-indigo-900">A 機台於 12/5 下午 2 點運轉時,主軸溫度異常升高至 95°C觸發過熱保護機制導致自動停機造成當日產能損失 200 件(約佔日產能 8%),由生產線操作員發現並通報維護部門。</p>
</div>
<div class="grid lg:grid-cols-3 gap-6">
<!-- Perspective 1: 流程面 -->
<div class="bg-white rounded-2xl border border-blue-200 overflow-hidden shadow-sm">
<div class="p-4 bg-blue-500">
<h3 class="text-lg font-bold text-white flex items-center gap-2">
<span class="text-2xl">⚙️</span>
流程面分析
</h3>
</div>
<div class="p-4 space-y-3">
<div class="bg-slate-50 rounded-lg p-3 border-l-4 border-blue-400">
<div class="flex items-start gap-2">
<div class="flex flex-col items-center">
<span class="bg-slate-200 text-xs px-2 py-1 rounded font-mono text-slate-600">W1</span>
<span class="mt-1 text-xs text-emerald-500"></span>
</div>
<div class="flex-1">
<p class="text-slate-700 text-sm font-medium mb-1">為什麼主軸溫度過高?</p>
<p class="text-slate-500 text-sm">因為冷卻液流量不足</p>
<p class="text-xs mt-1 text-emerald-500">已確認:現場檢測流量計讀數低於標準值</p>
</div>
</div>
</div>
<div class="bg-slate-50 rounded-lg p-3 border-l-4 border-cyan-400">
<div class="flex items-start gap-2">
<div class="flex flex-col items-center">
<span class="bg-slate-200 text-xs px-2 py-1 rounded font-mono text-slate-600">W2</span>
<span class="mt-1 text-xs text-emerald-500"></span>
</div>
<div class="flex-1">
<p class="text-slate-700 text-sm font-medium mb-1">為什麼冷卻液流量不足?</p>
<p class="text-slate-500 text-sm">因為濾網堵塞</p>
</div>
</div>
</div>
<div class="mt-4 p-4 bg-amber-50 rounded-xl border border-amber-200">
<h4 class="text-amber-700 font-bold text-sm mb-2">🎯 根本原因</h4>
<p class="text-amber-900 text-sm">缺乏定期濾網清潔保養機制</p>
</div>
<div class="p-4 bg-emerald-50 rounded-xl border border-emerald-200">
<h4 class="text-emerald-700 font-bold text-sm mb-2">✅ 永久性對策</h4>
<p class="text-emerald-900 text-sm mb-3">建立每週固定濾網檢查清潔 SOP</p>
<div class="mb-3">
<p class="text-emerald-700 text-xs font-medium mb-1">行動項目:</p>
<ul class="space-y-1">
<li class="text-emerald-800 text-xs flex items-start gap-1">
<span></span> 制定濾網清潔標準作業程序
</li>
<li class="text-emerald-800 text-xs flex items-start gap-1">
<span></span> 設定每週三為固定保養日
</li>
</ul>
</div>
</div>
</div>
</div>
<!-- Perspective 2: 系統面 -->
<div class="bg-white rounded-2xl border border-violet-200 overflow-hidden shadow-sm">
<div class="p-4 bg-violet-500">
<h3 class="text-lg font-bold text-white flex items-center gap-2">
<span class="text-2xl">🖥️</span>
系統面分析
</h3>
</div>
<div class="p-4 space-y-3">
<div class="bg-slate-50 rounded-lg p-3 border-l-4 border-violet-400">
<div class="flex items-start gap-2">
<div class="flex flex-col items-center">
<span class="bg-slate-200 text-xs px-2 py-1 rounded font-mono text-slate-600">W1</span>
<span class="mt-1 text-xs text-amber-500">?</span>
</div>
<div class="flex-1">
<p class="text-slate-700 text-sm font-medium mb-1">為什麼系統未提前預警?</p>
<p class="text-slate-500 text-sm">因為溫度監控系統未設定預警閾值</p>
<p class="text-xs mt-1 text-amber-500">需驗證:檢查監控系統設定</p>
</div>
</div>
</div>
<div class="mt-4 p-4 bg-amber-50 rounded-xl border border-amber-200">
<h4 class="text-amber-700 font-bold text-sm mb-2">🎯 根本原因</h4>
<p class="text-amber-900 text-sm">監控系統缺乏多層級預警機制</p>
</div>
</div>
</div>
<!-- Perspective 3: 管理面 -->
<div class="bg-white rounded-2xl border border-teal-200 overflow-hidden shadow-sm">
<div class="p-4 bg-teal-500">
<h3 class="text-lg font-bold text-white flex items-center gap-2">
<span class="text-2xl">👥</span>
管理面分析
</h3>
</div>
<div class="p-4 space-y-3">
<div class="bg-slate-50 rounded-lg p-3 border-l-4 border-teal-400">
<div class="flex items-start gap-2">
<div class="flex flex-col items-center">
<span class="bg-slate-200 text-xs px-2 py-1 rounded font-mono text-slate-600">W1</span>
<span class="mt-1 text-xs text-emerald-500"></span>
</div>
<div class="flex-1">
<p class="text-slate-700 text-sm font-medium mb-1">為什麼保養被忽略?</p>
<p class="text-slate-500 text-sm">因為無明確責任分配</p>
</div>
</div>
</div>
<div class="mt-4 p-4 bg-amber-50 rounded-xl border border-amber-200">
<h4 class="text-amber-700 font-bold text-sm mb-2">🎯 根本原因</h4>
<p class="text-amber-900 text-sm">缺乏設備保養責任制度</p>
</div>
</div>
</div>
</div>
<!-- Footer -->
<div class="mt-8 text-center text-slate-400 text-xs">
💡 5 Why 的目的不是「湊滿五個問題」,而是穿透表面症狀直達根本原因
</div>
</div>
</div>
</div>
<!-- Tab 2: History -->
<div id="history" class="tab-content">
<div class="max-w-7xl mx-auto p-6">
<div class="bg-white rounded-xl shadow-sm p-6">
<div class="flex items-center justify-between mb-6">
<h2 class="text-2xl font-bold text-gray-800">📊 分析歷史記錄</h2>
<div class="flex gap-2">
<button class="px-4 py-2 bg-green-500 text-white rounded-lg hover:bg-green-600">
📥 匯入 CSV
</button>
<button class="px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600">
📤 匯出 CSV
</button>
</div>
</div>
<!-- Filters -->
<div class="grid md:grid-cols-4 gap-4 mb-6">
<input type="text" placeholder="搜尋 Finding..." class="px-4 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500">
<select class="px-4 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500">
<option>所有狀態</option>
<option>已完成</option>
<option>處理中</option>
<option>失敗</option>
</select>
<input type="date" class="px-4 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500">
<button class="px-4 py-2 bg-gray-200 rounded-lg hover:bg-gray-300">🔍 搜尋</button>
</div>
<!-- Table -->
<div class="overflow-x-auto">
<table class="w-full text-sm">
<thead class="bg-gray-50 border-b">
<tr>
<th class="px-4 py-3 text-left cursor-pointer hover:bg-gray-100">ID ↕</th>
<th class="px-4 py-3 text-left cursor-pointer hover:bg-gray-100">Finding ↕</th>
<th class="px-4 py-3 text-left cursor-pointer hover:bg-gray-100">使用者 ↕</th>
<th class="px-4 py-3 text-left cursor-pointer hover:bg-gray-100">語言 ↕</th>
<th class="px-4 py-3 text-left cursor-pointer hover:bg-gray-100">狀態 ↕</th>
<th class="px-4 py-3 text-left cursor-pointer hover:bg-gray-100">建立時間 ↕</th>
<th class="px-4 py-3 text-left">操作</th>
</tr>
</thead>
<tbody class="divide-y">
<tr class="hover:bg-gray-50">
<td class="px-4 py-3">#001</td>
<td class="px-4 py-3">A 機台過熱停機問題</td>
<td class="px-4 py-3">donald</td>
<td class="px-4 py-3">🇹🇼 繁中</td>
<td class="px-4 py-3"><span class="px-2 py-1 bg-green-100 text-green-700 rounded text-xs">已完成</span></td>
<td class="px-4 py-3">2025-12-05 14:30</td>
<td class="px-4 py-3">
<button class="text-blue-600 hover:text-blue-800 mr-2">查看</button>
<button class="text-red-600 hover:text-red-800">刪除</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3">#002</td>
<td class="px-4 py-3">品質不良率上升分析</td>
<td class="px-4 py-3">user001</td>
<td class="px-4 py-3">🇺🇸 English</td>
<td class="px-4 py-3"><span class="px-2 py-1 bg-yellow-100 text-yellow-700 rounded text-xs">處理中</span></td>
<td class="px-4 py-3">2025-12-05 15:20</td>
<td class="px-4 py-3">
<button class="text-blue-600 hover:text-blue-800 mr-2">查看</button>
<button class="text-red-600 hover:text-red-800">刪除</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Pagination -->
<div class="flex items-center justify-between mt-6">
<span class="text-sm text-gray-600">顯示 1-10 共 25 筆</span>
<div class="flex gap-2">
<button class="px-3 py-1 border rounded hover:bg-gray-50">上一頁</button>
<button class="px-3 py-1 bg-blue-500 text-white rounded">1</button>
<button class="px-3 py-1 border rounded hover:bg-gray-50">2</button>
<button class="px-3 py-1 border rounded hover:bg-gray-50">3</button>
<button class="px-3 py-1 border rounded hover:bg-gray-50">下一頁</button>
</div>
</div>
</div>
</div>
</div>
<!-- Tab 3: Admin Dashboard -->
<div id="admin" class="tab-content">
<div class="max-w-7xl mx-auto p-6">
<!-- Dashboard Stats -->
<div class="grid md:grid-cols-4 gap-6 mb-6">
<div class="bg-white rounded-xl shadow-sm p-6">
<div class="flex items-center justify-between">
<div>
<p class="text-gray-500 text-sm">總使用者數</p>
<p class="text-3xl font-bold text-gray-800 mt-1">156</p>
</div>
<div class="w-12 h-12 bg-blue-100 rounded-full flex items-center justify-center text-2xl">
👥
</div>
</div>
<p class="text-green-600 text-sm mt-2">↑ 12% 本月</p>
</div>
<div class="bg-white rounded-xl shadow-sm p-6">
<div class="flex items-center justify-between">
<div>
<p class="text-gray-500 text-sm">總分析次數</p>
<p class="text-3xl font-bold text-gray-800 mt-1">2,341</p>
</div>
<div class="w-12 h-12 bg-green-100 rounded-full flex items-center justify-center text-2xl">
📊
</div>
</div>
<p class="text-green-600 text-sm mt-2">↑ 24% 本月</p>
</div>
<div class="bg-white rounded-xl shadow-sm p-6">
<div class="flex items-center justify-between">
<div>
<p class="text-gray-500 text-sm">平均處理時間</p>
<p class="text-3xl font-bold text-gray-800 mt-1">45s</p>
</div>
<div class="w-12 h-12 bg-yellow-100 rounded-full flex items-center justify-center text-2xl">
⏱️
</div>
</div>
<p class="text-red-600 text-sm mt-2">↓ 8% 改善</p>
</div>
<div class="bg-white rounded-xl shadow-sm p-6">
<div class="flex items-center justify-between">
<div>
<p class="text-gray-500 text-sm">成功率</p>
<p class="text-3xl font-bold text-gray-800 mt-1">98.5%</p>
</div>
<div class="w-12 h-12 bg-purple-100 rounded-full flex items-center justify-center text-2xl">
</div>
</div>
<p class="text-green-600 text-sm mt-2">↑ 2% 改善</p>
</div>
</div>
<!-- Admin Tabs -->
<div class="bg-white rounded-xl shadow-sm p-6">
<div class="border-b mb-6">
<div class="flex space-x-8">
<button class="admin-tab-btn pb-3 border-b-2 border-blue-600 text-blue-600 font-semibold" onclick="showAdminTab('users')">
👥 使用者管理
</button>
<button class="admin-tab-btn pb-3 text-gray-600 hover:text-gray-800" onclick="showAdminTab('llm')">
🤖 LLM 設定
</button>
<button class="admin-tab-btn pb-3 text-gray-600 hover:text-gray-800" onclick="showAdminTab('settings')">
⚙️ 系統設定
</button>
<button class="admin-tab-btn pb-3 text-gray-600 hover:text-gray-800" onclick="showAdminTab('audit')">
📋 稽核日誌
</button>
</div>
</div>
<!-- Users Management -->
<div id="users-admin" class="admin-tab-content">
<div class="flex justify-between items-center mb-4">
<h3 class="text-xl font-bold">使用者管理</h3>
<button class="px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600">
新增使用者
</button>
</div>
<table class="w-full text-sm">
<thead class="bg-gray-50 border-b">
<tr>
<th class="px-4 py-3 text-left">工號</th>
<th class="px-4 py-3 text-left">姓名</th>
<th class="px-4 py-3 text-left">Email</th>
<th class="px-4 py-3 text-left">部門</th>
<th class="px-4 py-3 text-left">權限</th>
<th class="px-4 py-3 text-left">狀態</th>
<th class="px-4 py-3 text-left">操作</th>
</tr>
</thead>
<tbody class="divide-y">
<tr class="hover:bg-gray-50">
<td class="px-4 py-3">ADMIN001</td>
<td class="px-4 py-3">admin</td>
<td class="px-4 py-3">admin@example.com</td>
<td class="px-4 py-3">IT</td>
<td class="px-4 py-3"><span class="px-2 py-1 bg-red-100 text-red-700 rounded text-xs">最高權限</span></td>
<td class="px-4 py-3"><span class="px-2 py-1 bg-green-100 text-green-700 rounded text-xs">啟用</span></td>
<td class="px-4 py-3">
<button class="text-blue-600 hover:text-blue-800 mr-2">編輯</button>
<button class="text-red-600 hover:text-red-800">停用</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3">USER001</td>
<td class="px-4 py-3">user001</td>
<td class="px-4 py-3">user001@example.com</td>
<td class="px-4 py-3">Manufacturing</td>
<td class="px-4 py-3"><span class="px-2 py-1 bg-blue-100 text-blue-700 rounded text-xs">一般使用者</span></td>
<td class="px-4 py-3"><span class="px-2 py-1 bg-green-100 text-green-700 rounded text-xs">啟用</span></td>
<td class="px-4 py-3">
<button class="text-blue-600 hover:text-blue-800 mr-2">編輯</button>
<button class="text-red-600 hover:text-red-800">停用</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- LLM Config -->
<div id="llm-admin" class="admin-tab-content hidden">
<h3 class="text-xl font-bold mb-4">LLM API 設定</h3>
<div class="space-y-4">
<div class="border rounded-lg p-4">
<div class="flex items-center justify-between mb-2">
<h4 class="font-semibold">Ollama API</h4>
<label class="relative inline-flex items-center cursor-pointer">
<input type="checkbox" checked class="sr-only peer">
<div class="w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-blue-600"></div>
</label>
</div>
<div class="grid md:grid-cols-2 gap-4">
<div>
<label class="block text-sm text-gray-600 mb-1">API URL</label>
<input type="text" value="https://ollama_pjapi.theaken.com" class="w-full px-3 py-2 border rounded">
</div>
<div>
<label class="block text-sm text-gray-600 mb-1">Model</label>
<input type="text" value="qwen2.5:3b" class="w-full px-3 py-2 border rounded">
</div>
</div>
<button class="mt-3 px-4 py-2 bg-green-500 text-white rounded hover:bg-green-600">測試連線</button>
</div>
<div class="border rounded-lg p-4 opacity-50">
<div class="flex items-center justify-between mb-2">
<h4 class="font-semibold">OpenAI API</h4>
<label class="relative inline-flex items-center cursor-pointer">
<input type="checkbox" class="sr-only peer">
<div class="w-11 h-6 bg-gray-200 rounded-full peer peer-checked:bg-blue-600"></div>
</label>
</div>
<p class="text-sm text-gray-500">未設定</p>
</div>
</div>
</div>
<!-- System Settings -->
<div id="settings-admin" class="admin-tab-content hidden">
<h3 class="text-xl font-bold mb-4">系統設定</h3>
<div class="space-y-4">
<div class="grid md:grid-cols-2 gap-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">應用程式名稱</label>
<input type="text" value="5 Why Root Cause Analyzer" class="w-full px-4 py-2 border rounded-lg">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">預設語言</label>
<select class="w-full px-4 py-2 border rounded-lg">
<option selected>繁體中文</option>
<option>簡體中文</option>
<option>English</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">每日最大分析次數</label>
<input type="number" value="50" class="w-full px-4 py-2 border rounded-lg">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Session 逾時(分鐘)</label>
<input type="number" value="30" class="w-full px-4 py-2 border rounded-lg">
</div>
</div>
<button class="px-6 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600">儲存設定</button>
</div>
</div>
<!-- Audit Logs -->
<div id="audit-admin" class="admin-tab-content hidden">
<h3 class="text-xl font-bold mb-4">稽核日誌</h3>
<table class="w-full text-sm">
<thead class="bg-gray-50 border-b">
<tr>
<th class="px-4 py-3 text-left">時間</th>
<th class="px-4 py-3 text-left">使用者</th>
<th class="px-4 py-3 text-left">動作</th>
<th class="px-4 py-3 text-left">IP位址</th>
<th class="px-4 py-3 text-left">狀態</th>
</tr>
</thead>
<tbody class="divide-y">
<tr class="hover:bg-gray-50">
<td class="px-4 py-3">2025-12-05 16:30:15</td>
<td class="px-4 py-3">donald</td>
<td class="px-4 py-3">登入系統</td>
<td class="px-4 py-3">192.168.1.100</td>
<td class="px-4 py-3"><span class="px-2 py-1 bg-green-100 text-green-700 rounded text-xs">成功</span></td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3">2025-12-05 16:28:42</td>
<td class="px-4 py-3">user001</td>
<td class="px-4 py-3">建立分析</td>
<td class="px-4 py-3">192.168.1.105</td>
<td class="px-4 py-3"><span class="px-2 py-1 bg-green-100 text-green-700 rounded text-xs">成功</span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Tab 4: Login Page -->
<div id="login" class="tab-content">
<div class="min-h-screen bg-gradient-to-br from-blue-500 to-indigo-600 flex items-center justify-center p-4">
<div class="bg-white rounded-2xl shadow-2xl p-8 w-full max-w-md">
<div class="text-center mb-8">
<h1 class="text-3xl font-bold text-gray-800 mb-2">🔍 5 Why Analyzer</h1>
<p class="text-gray-600">根因分析系統</p>
</div>
<form class="space-y-6">
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">
工號 / Email
</label>
<input type="text" placeholder="請輸入工號或 Email" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">
密碼
</label>
<input type="password" placeholder="請輸入密碼" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent">
</div>
<div class="flex items-center justify-between">
<label class="flex items-center">
<input type="checkbox" class="w-4 h-4 text-blue-600 border-gray-300 rounded focus:ring-blue-500">
<span class="ml-2 text-sm text-gray-600">記住我</span>
</label>
<a href="#" class="text-sm text-blue-600 hover:text-blue-800">忘記密碼?</a>
</div>
<button type="submit" class="w-full py-3 bg-gradient-to-r from-blue-500 to-indigo-500 hover:from-blue-600 hover:to-indigo-600 text-white font-bold rounded-lg transition-all duration-300 transform hover:scale-[1.02] shadow-lg">
登入
</button>
</form>
<div class="mt-6 text-center text-sm text-gray-600">
還沒有帳號?<a href="#" class="text-blue-600 hover:text-blue-800 font-medium">聯絡管理員</a>
</div>
<div class="mt-8 pt-6 border-t text-center text-xs text-gray-500">
Powered by Ollama API (qwen2.5:3b)<br>
© 2025 5 Why Analyzer. All rights reserved.
</div>
</div>
</div>
</div>
<script>
// Tab switching
function showTab(tabName) {
// Hide all tabs
document.querySelectorAll('.tab-content').forEach(tab => {
tab.classList.remove('active');
});
document.querySelectorAll('.nav-tab').forEach(btn => {
btn.classList.remove('active');
});
// Show selected tab
document.getElementById(tabName).classList.add('active');
event.target.classList.add('active');
}
// Admin tab switching
function showAdminTab(tabName) {
document.querySelectorAll('.admin-tab-content').forEach(tab => {
tab.classList.add('hidden');
});
document.querySelectorAll('.admin-tab-btn').forEach(btn => {
btn.classList.remove('border-blue-600', 'text-blue-600', 'font-semibold');
btn.classList.add('text-gray-600');
});
document.getElementById(tabName + '-admin').classList.remove('hidden');
event.target.classList.add('border-blue-600', 'text-blue-600', 'font-semibold');
event.target.classList.remove('text-gray-600');
}
</script>
</body>
</html>