Skip to content

Sen-CaPoo/ClarityDesk

Repository files navigation

ClarityDesk - 顧客問題紀錄追蹤系統

簡潔高效的顧客問題管理解決方案

📋 專案簡介

ClarityDesk 是一個基於 ASP.NET Core 8 Razor Pages 開發的顧客問題紀錄追蹤系統,提供直觀的介面讓團隊快速記錄、追蹤和管理客戶回報的問題。系統整合 LINE Login 身份驗證,讓使用者可以快速登入並開始使用。

✨ 功能特色

核心功能

  • 回報單管理 (使用者故事 1)

    • 建立、編輯、刪除回報單
    • 多條件篩選 (狀態、優先級、日期範圍、關鍵字)
    • 分頁顯示,支援大量資料
    • 即時統計資訊 (待處理、處理中、已完成)
  • LINE Login 整合 (使用者故事 2)

    • 透過 LINE 帳號快速註冊與登入
    • 自動同步 LINE 個人資料 (頭像、顯示名稱)
    • 安全的 OAuth 2.0 流程
  • 使用者權限管理 (使用者故事 3)

    • 角色管理 (普通使用者 / 管理人員)
    • 帳號啟用/停用控制
    • 管理員專屬功能保護
  • 問題所屬單位維護 (使用者故事 4)

    • 自訂問題分類單位
    • 為單位指派預設處理人員
    • 軟刪除機制,保留歷史資料

技術亮點

  • 響應式設計: 支援桌面、平板、手機多種螢幕尺寸 (320px - 1920px)
  • 商務白風格: 簡潔專業的 UI 設計,使用淺藍色點綴
  • 效能最佳化:
    • Response Compression (Gzip/Brotli)
    • 靜態檔案快取 (365 天)
    • 資料庫索引最佳化
    • 記憶體快取 (統計資訊、單位清單)
  • 安全性:
    • HTTPS 強制跳轉
    • XSS/CSRF 防護
    • 安全標頭設定

🛠 技術堆疊

後端

  • 框架: ASP.NET Core 8.0 (Razor Pages)
  • 語言: C# 12
  • 資料庫: Azure SQL Database
  • ORM: Entity Framework Core 8.0 (Code First)
  • 快取: IMemoryCache (ASP.NET Core 內建)

前端

  • UI 框架: Bootstrap 5.3
  • JavaScript: jQuery 3.7 + 原生 JavaScript
  • 驗證: jQuery Validation + Bootstrap Validation

身份驗證

  • OAuth 2.0: LINE Login
  • Session: Cookie-based Authentication

測試

  • 單元測試: xUnit
  • 斷言庫: FluentAssertions
  • 模擬庫: Moq

部署

  • 平台: Windows Server + IIS 10.0+
  • 環境: .NET 8.0 Runtime

🚀 快速開始

先決條件

1. 複製專案

git clone https://github.com/Sen-CaPoo/ClarityDesk.git
cd ClarityDesk

2. 設定資料庫連線

編輯 appsettings.Development.json:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=your-server.database.windows.net;Database=ClarityDesk;User Id=your-username;Password=your-password;Encrypt=True;"
  }
}

3. 設定 LINE Login

  1. 前往 LINE Developers Console
  2. 建立新的 Channel (LINE Login)
  3. 取得 Channel IDChannel Secret
  4. 設定 Callback URL: https://your-domain/signin-line

編輯 appsettings.Development.json:

{
  "LineLogin": {
    "ChannelId": "your-channel-id",
    "ChannelSecret": "your-channel-secret"
  }
}

4. 執行 Migration

dotnet ef database update

5. 執行專案

dotnet run

開啟瀏覽器訪問 https://localhost:5001

6. 預設帳號

系統會自動建立預設管理員帳號與 3 個預設單位:

  • 單位: 客服部、技術部、業務部
  • 管理員: 首次透過 LINE Login 登入後,需手動升級為管理員角色

📖 使用說明

普通使用者操作流程

  1. 登入系統

    • 點擊「使用 LINE 登入」
    • 授權 LINE Login 權限
    • 自動建立使用者帳號
  2. 建立回報單

    • 導覽至「回報單管理」
    • 點擊「新增回報單」
    • 填寫問題標題、內容、客戶資訊
    • 選擇緊急程度與所屬單位
    • 指派處理人員
  3. 管理回報單

    • 檢視所有回報單列表
    • 使用篩選條件快速找到特定回報單
    • 編輯回報單資訊
    • 更新處理狀態 (待處理 → 處理中 → 已完成)

管理人員操作流程

  1. 使用者權限管理

    • 導覽至「系統管理」→「使用者權限管理」
    • 查看所有註冊使用者
    • 變更使用者角色 (普通使用者 ↔ 管理人員)
    • 啟用/停用使用者帳號
  2. 問題所屬單位維護

    • 導覽至「系統管理」→「問題所屬單位維護」
    • 新增/編輯/刪除單位
    • 為單位指派預設處理人員

🧪 測試

執行單元測試

dotnet test Tests/ClarityDesk.UnitTests

執行整合測試

dotnet test Tests/ClarityDesk.IntegrationTests

測試覆蓋率

dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover

📦 部署

詳細部署說明請參考 docs/deployment/DEPLOYMENT.md

快速部署至 IIS

# 1. 發佈專案
dotnet publish -c Release -o ./publish

# 2. 將 publish 資料夾內容複製到 IIS 網站目錄
# 3. 確保 IIS 已安裝 ASP.NET Core Hosting Bundle
# 4. 設定應用程式集區為「無受管理的程式碼」
# 5. 重新啟動 IIS

完整檢查清單請見 docs/deployment/IIS-DEPLOYMENT-CHECKLIST.md

📁 專案結構

ClarityDesk/
├── Pages/                  # Razor Pages (UI 層)
│   ├── Issues/            # 回報單管理頁面
│   ├── Admin/             # 管理功能頁面
│   ├── Account/           # 身份驗證頁面
│   └── Shared/            # 共享版面配置與元件
├── Models/                 # 資料模型
│   ├── Entities/          # EF Core 實體
│   ├── DTOs/              # 資料傳輸物件
│   ├── ViewModels/        # 頁面顯示模型
│   └── Enums/             # 列舉型別
├── Services/              # 服務層 (業務邏輯)
│   ├── Interfaces/        # 服務介面
│   └── *.cs              # 服務實作
├── Data/                  # 資料存取層
│   ├── Configurations/    # EF Core Entity Configurations
│   └── Migrations/        # EF Core Migrations
├── Infrastructure/        # 基礎設施層
│   ├── Authentication/    # LINE Login 相關
│   ├── Middleware/        # 自訂 Middleware
│   └── TagHelpers/        # 自訂 Tag Helpers
├── wwwroot/               # 靜態資源
│   ├── css/              # 樣式表
│   ├── js/               # JavaScript
│   └── lib/              # 前端套件
├── docs/                  # 專案文件
│   ├── deployment/        # 部署文件
│   ├── development/       # 開發指南
│   ├── changelogs/        # 變更記錄
│   └── *.md              # 使用者手冊等
├── scripts/               # 腳本工具
│   └── *.ps1             # PowerShell 腳本
├── database/              # 資料庫腳本
│   └── *.sql             # SQL 腳本
├── specs/                 # 規格文件
│   └── 001-customer-issue-tracker/  # 功能規格
└── Tests/                 # 測試專案
    ├── UnitTests/        # 單元測試
    └── IntegrationTests/ # 整合測試

🤝 貢獻指南

詳細貢獻指南請參考 docs/development/CONTRIBUTING.md

📚 文件目錄

更多文件請參考 docs/README.md

📝 授權

本專案採用 MIT 授權條款 - 詳見 LICENSE 檔案

👥 作者

  • Sen-CaPoo - Initial work - GitHub

🙏 致謝

📞 聯絡方式

如有任何問題或建議,歡迎透過以下方式聯絡:


ClarityDesk - 讓問題管理變得更簡單 ✨

About

ClarityDesk 是一個基於 ASP.NET Core 8 Razor Pages 開發的顧客問題紀錄追蹤系統,提供直觀的介面讓團隊快速記錄、追蹤和管理客戶回報的問題。系統整合 LINE Login 身份驗證,讓使用者可以快速登入並開始使用。

Resources

License

Stars

Watchers

Forks

Contributors