Files
5why-analyzer/README_FULL.md
donald 78efac64e2 Initial commit: 5 Why Root Cause Analyzer v1.0.0
Phase 0 & Phase 2 completed:
- Project structure setup
- Environment configuration (.env, .gitignore)
- Enterprise-grade dependencies (bcrypt, helmet, mysql2, etc.)
- Complete database schema with 8 tables + 2 views
- Database initialization scripts
- Comprehensive documentation

Database Tables:
- users (user management with 3-tier permissions)
- analyses (analysis records)
- analysis_perspectives (multi-angle analysis)
- analysis_whys (detailed 5 Why records)
- llm_configs (LLM API configurations)
- system_settings (system parameters)
- audit_logs (security audit trail)
- sessions (session management)

Tech Stack:
- Backend: Node.js + Express
- Frontend: React 18 + Vite + Tailwind CSS
- Database: MySQL 9.4.0
- AI: Ollama API (qwen2.5:3b)

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

344 lines
10 KiB
Markdown
Raw 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.

# 5 Why 根因分析器 (5 Why Root Cause Analyzer)
[![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)](https://github.com/yourusername/5why-analyzer)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
這是一個基於 5 Why 方法論的企業級根因分析工具,使用 Ollama API (qwen2.5:3b 模型) 進行智能分析。系統遵循完整的開發流程 SOP包含使用者管理、權限控制、資料庫整合等企業級功能。
## 📋 目錄
- [功能特點](#功能特點)
- [系統架構](#系統架構)
- [快速開始](#快速開始)
- [環境設定](#環境設定)
- [使用說明](#使用說明)
- [API 文件](#api-文件)
- [專案結構](#專案結構)
- [開發流程](#開發流程)
- [資安說明](#資安說明)
- [常見問題](#常見問題)
## ✨ 功能特點
### 核心分析功能
-**5 Why 深度分析**: 從三個不同角度進行根本原因分析
-**多語言支援**: 繁中、簡中、英文、日文、韓文、越南文、泰文
-**邏輯雙向檢核**: 驗證因果關係的嚴謹性
-**永久性對策**: 產出系統性解決方案,避免暫時性措施
-**執行要項指南**: 內建 5 Why 方法論最佳實踐指南
### 管理者功能(開發中)
- 👥 **使用者管理**: 工號、姓名、Email、權限等級
- 🔐 **三級權限控制**: 一般使用者 / 管理者 / 最高權限管理者
- 🤖 **LLM API 設定**: 支援 Gemini / DeepSeek / OpenAI / Ollama
- 📊 **系統參數設定**: 彈性的系統配置介面
### 通用功能(開發中)
- 📥 **CSV 匯入/匯出**: 所有資料表支援批次處理
- 🔍 **欄位排序**: 清單頁面支援多欄位排序
- ⚠️ **錯誤處理**: 統一的錯誤處理與通知機制
- 🔄 **Loading 指示器**: 改善使用者體驗
### 資安功能(規劃中)
- 🛡️ **SQL Injection 防護**: 參數化查詢
- 🔒 **XSS 防護**: 輸入驗證與輸出編碼
- 🔑 **密碼加密**: bcrypt 加密儲存
- 🚦 **API Rate Limiting**: 防止濫用
- 🎫 **Session 安全**: Secure cookie 設定
## 🏗️ 系統架構
### 後端技術棧
- **框架**: Node.js + Express
- **資料庫**: MySQL 8.0+ (規劃中)
- **AI 引擎**: Ollama API (qwen2.5:3b)
- **安全**: Helmet, bcryptjs, express-session
- **API**: RESTful API
### 前端技術棧
- **框架**: React 18
- **建置工具**: Vite
- **樣式**: Tailwind CSS
- **狀態管理**: React Hooks
- **響應式設計**: Mobile-first approach
### 資料庫架構(規劃中)
- `users` - 使用者資料表
- `analyses` - 分析記錄表
- `llm_configs` - LLM API 配置表
- `system_settings` - 系統設定表
- `audit_logs` - 稽核日誌表
詳細資料庫結構請參考 [docs/db_schema.md](docs/db_schema.md)(待建立)
## 🚀 快速開始
### 1. 環境需求
- Node.js 16.x 或更高版本
- MySQL 8.0 或更高版本(若需要資料庫功能)
- npm 或 yarn
- 現代瀏覽器Chrome、Firefox、Edge
### 2. 安裝步驟
```bash
# 1. 進入專案目錄
cd 5why
# 2. 安裝依賴
npm install
# 3. 設定環境變數(選擇性)
cp .env.example .env
# 編輯 .env 填入您的設定(當前版本可以不設定)
# 4. 啟動應用
npm run dev
```
### 3. 訪問應用
- 前端: http://localhost:5173
- 後端 API: http://localhost:3001
## ⚙️ 環境設定
### .env 配置說明(選擇性)
```bash
# Ollama API 設定
OLLAMA_API_URL=https://ollama_pjapi.theaken.com
OLLAMA_MODEL=qwen2.5:3b
# 伺服器設定
SERVER_PORT=3001
CLIENT_PORT=5173
```
完整配置說明請參考 [.env.example](.env.example)
## 📖 使用說明
### 基本使用流程
1. **填寫 Finding**: 具體描述問題現象(使用 5W1H
-Who涉及哪些人或部門
- 什麼What發生了什麼問題
- 何時When何時發生
- 何地Where在哪裡發生
- 為何Why初步判斷
- 如何How問題如何呈現
2. **說明工作內容**: 填寫您的職責範圍,幫助 AI 聚焦在可控因素
3. **選擇輸出語言**: 支援 7 種語言
- 🇹🇼 繁體中文
- 🇨🇳 简体中文
- 🇺🇸 English
- 🇯🇵 日本語
- 🇰🇷 한국어
- 🇻🇳 Tiếng Việt
- 🇹🇭 ภาษาไทย
4. **執行分析**: 點擊「Find My 5 Why」按鈕
5. **查看結果**: 系統會從三個不同角度進行分析:
- 流程面分析
- 系統面分析
- 管理面分析(或其他相關角度)
6. **切換語言**: 使用翻譯功能即時切換分析結果的語言
### 5 Why 執行要項指南
系統內建完整的 5 Why 方法論指南,包含:
1. **精準定義問題**: 描述現象,而非結論
2. **聚焦流程與系統**: 而非責備個人
3. **基於事實與現場**: 拒絕猜測
4. **邏輯雙向檢核**: 因果關係必須嚴謹
5. **止於可執行對策**: 永久性對策,非暫時性
## 🔌 API 文件
### 當前可用端點
```
GET /health - 健康檢查
GET /api/models - 列出可用的 Ollama 模型
POST /api/analyze - 執行 5 Why 分析
POST /api/translate - 翻譯分析結果
```
### API 請求範例
#### 執行分析
```javascript
const response = await fetch('http://localhost:3001/api/analyze', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
prompt: '您的完整分析提示...'
})
});
const data = await response.json();
console.log(data.content); // AI 回應內容
```
#### 翻譯結果
```javascript
const response = await fetch('http://localhost:3001/api/translate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
prompt: '翻譯提示...'
})
});
const data = await response.json();
console.log(data.content); // 翻譯後的內容
```
完整 API 文件請參考 [docs/API_DOC.md](docs/API_DOC.md)(待建立)
## 📁 專案結構
```
5why-analyzer/
├── server.js # Express 主程式
├── package.json # 專案配置
├── .env.example # 環境變數範本
├── .gitignore # Git 忽略清單
├── models/ # 資料庫模型(待建立)
├── routes/ # API 路由(待建立)
├── middleware/ # 中介層(待建立)
├── templates/ # 前端模板(待建立)
├── static/ # 靜態資源
│ ├── css/
│ ├── js/
│ └── images/
├── src/ # React 前端
│ ├── main.jsx # React 入口
│ ├── App.jsx # 主應用組件
│ ├── FiveWhyAnalyzer.jsx # 5 Why 分析器組件
│ └── index.css # 全局樣式
├── docs/ # 文件目錄
│ ├── user_command_log.md # 指令紀錄
│ ├── SDD.md # 系統設計文件(待建立)
│ ├── db_schema.md # 資料庫架構(待建立)
│ ├── API_DOC.md # API 文件(待建立)
│ ├── CHANGELOG.md # 變更紀錄(待建立)
│ └── security_audit.md # 資安稽核(待建立)
├── index.html # HTML 入口
├── vite.config.js # Vite 配置
├── tailwind.config.js # Tailwind CSS 配置
├── postcss.config.js # PostCSS 配置
└── README.md # 本文件
```
## 🔄 開發流程
本專案遵循完整的開發流程 SOP
-**Phase 0**: 專案初始化 (完成)
- ✅ 建立專案資料夾結構
- ✅ 建立 .env.example
- ✅ 建立 .gitignore
- ✅ 更新 package.json
- ✅ 建立 README.md
- 🔄 **Phase 1**: 版本控制設定(待用戶提供 Gitea 資訊)
- 🔄 **Phase 2**: 資料庫架構設計(待用戶提供 MySQL 資訊)
-**Phase 3**: UI/UX 預覽確認
-**Phase 4**: 核心程式開發
-**Phase 5**: 管理者功能開發
-**Phase 6**: 通用功能實作
-**Phase 7**: 資安檢視
-**Phase 8**: 文件維護
-**Phase 9**: 部署前檢查
進度追蹤請參考 [docs/user_command_log.md](docs/user_command_log.md)
## 🛡️ 資安說明
本系統將實施多層次資安防護Phase 7 實作):
1. **輸入驗證**: 所有用戶輸入進行驗證與淨化
2. **SQL Injection 防護**: 使用參數化查詢
3. **XSS 防護**: 輸出編碼與 Content Security Policy
4. **CSRF 防護**: CSRF Token 機制
5. **密碼安全**: bcrypt 加密 + 密碼強度檢查
6. **Session 安全**: HttpOnly + Secure + SameSite cookies
7. **Rate Limiting**: API 請求頻率限制
8. **Audit Logging**: 所有操作記錄
資安稽核報告將在 Phase 7 產出:[docs/security_audit.md](docs/security_audit.md)
## ❓ 常見問題
### Q: 分析時間過長怎麼辦?
A: Ollama API 回應時間約 30-60 秒,這是正常現象。請耐心等待,系統會顯示 Loading 動畫。
### Q: 為什麼分析結果是英文?
A: 請確認您在「輸出語言」選項中選擇了正確的語言。預設是繁體中文。
### Q: 可以離線使用嗎?
A: 目前不支援,因為需要連線至 Ollama API。未來可能會支援本地部署。
### Q: 分析結果準確嗎?
A: 分析結果由 AI 生成,僅供參考。建議結合實際情況進行驗證和調整。
### Q: 支援哪些瀏覽器?
A: 建議使用 Chrome、Firefox 或 Edge 的最新版本。不建議使用 IE。
### Q: 如何更換 AI 模型?
A: 目前固定使用 qwen2.5:3b。管理者功能完成後可在管理後台切換其他模型。
## 🚧 待開發功能
以下功能將在後續 Phase 開發:
- [ ] 使用者登入/註冊系統
- [ ] 使用者權限管理
- [ ] 分析歷史記錄
- [ ] CSV 匯入/匯出
- [ ] 多 LLM 支援Gemini、DeepSeek、OpenAI
- [ ] 資料庫整合
- [ ] 稽核日誌
- [ ] PDF 報告匯出
- [ ] 批次分析功能
## 📝 授權
MIT License
## 🤝 貢獻
歡迎提交 Issue 和 Pull Request
開發指南:
1. Fork 本專案
2. 建立您的功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交您的修改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 開啟 Pull Request
## 📞 聯絡方式
如有問題或建議,請:
- 提交 Issue
- 聯繫專案維護者
---
**版本**: v1.0.0
**最後更新**: 2025-12-05
**開發狀態**: Phase 0 完成Phase 1-9 進行中
**授權**: MIT License