這是一個基於 Flask 的 KANO 模型問卷調查系統,用於收集和分析用戶對產品或服務特性的評價。系統支援問卷管理、資料收集、結果統計和個別回應查看等功能。
- 📝 問卷管理:新增、編輯、刪除問卷題目
- 📊 統計分析:自動計算 KANO 分類結果
- 👥 使用者友善:直覺的問卷填寫界面
- 📱 響應式設計:支援各種設備尺寸
- 🔍 詳細記錄:查看個別問卷回應
- 📈 視覺化呈現:統計結果圖表展示
- 🛠️ 批量導入:支援批量導入問題
- Python 3.8+
- SQLite3
- 現代網頁瀏覽器
- 使用
python:3.9-slim
作為基礎映像,這是一個輕量級的 Python 3.9 映像 - 設定環境變數防止 Python 生成
.pyc
檔案並確保輸出不被緩衝 - 安裝必要的系統依賴
- 建立並設定
/app/instance
目錄用於存放 SQLite 資料庫 - 設定適當的檔案權限
- 暴露 12345 端口
- 定義一個名為
web
的服務 - 將容器的 12345 端口映射到主機的 12345 端口
- 使用 volumes 持久化資料庫和靜態檔案
- 設定自動重啟機制
- 設定環境變數
- 執行以下命令建立和啟動容器:
# 建立和啟動容器
docker-compose up -d
# 查看容器日誌
docker-compose logs -f
- 停止和移除容器:
docker-compose down
- 資料庫檔案會被保存在
instance
目錄中 - 靜態檔案會被掛載到容器中的
/app/static
目錄 - 系統會在 http://localhost:12345 上執行
- 容器會自動重啟(如果發生錯誤或系統重啟)
如果需要進入容器執行指令:
docker exec -it kano_survey_lite bash
這個配置已經考慮到:
- 資料持久化
- 安全性設定
- 效能優化
- 錯誤恢復
- 方便的維護和更新
要更新應用程式時,只需要:
- 修改程式碼
- 重新建立映像:
docker-compose build
- 重新啟動容器:
docker-compose up -d
kano-survey-system/
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── app.py # 主應用程式
├── config.py # 配置檔案
├── constants.py # 常數定義
├── models.py # 資料模型
├── requirements.txt # 依賴包列表
├── static/ # 靜態資源
│ └── img/
├── templates/ # 模板檔案
│ ├── base.html
│ ├── manage_questions.html
│ ├── responses.html
│ ├── results.html
│ └── survey.html
└── data/ # 資料存儲
└── kano_survey.db
Docker 容器中的資料庫檔案位於 /app/data
目錄,建議定期備份該目錄:
# 備份資料
docker cp kano-survey-app:/app/data ./backup
# 還原資料
docker cp ./backup/. kano-survey-app:/app/data
可以通過環境變數配置以下參數:
FLASK_APP
: Flask 應用入口(預設:app.py)FLASK_ENV
: 執行環境(development/production)SECRET_KEY
: 應用程式金鑰
-
資料庫連接錯誤:
- 確保 data 目錄具有正確的讀寫權限
- 檢查 SQLite 資料庫檔案是否存在
-
端口衝突:
- 修改 app.py 中的端口號
- 或修改 Docker 映射端口
-
Docker 容器無法啟動:
- 檢查 logs:
docker logs kano-survey-app
- 確保沒有其他服務佔用相同端口
- 檢查 logs:
-
生產環境部署時:
- 修改
config.py
中的SECRET_KEY
- 設定適當的檔案權限
- 使用 HTTPS
- 配置適當的防火牆規則
- 修改
-
定期備份:
- 設定自動備份機制
- 保存多個備份版本
MIT License - see LICENSE file for details
- Fork 專案
- 建立特性分支:
git checkout -b feature/amazing-feature
- 提交變更:
git commit -m 'Add amazing feature'
- 推送分支:
git push origin feature/amazing-feature
- 發起 Pull Request
如有問題或建議,請提交 Issue 或聯絡專案維護者。
🔗 相關文件: