Spaces:
Sleeping
Sleeping
把 docs/ 文件納入版本控制,.gitignore 補 .venv/ 與本機測試樣本
Browse files- docs/需求彙整-UIUX改版.md 與 docs/進度報告-2026-07-21.md 從建立至今
未被追蹤過,前者是要交付業主的需求文件
- docs/design/ 維持排除(設計素材不進版本控制,沿用原本排除 00pic/ 的慣例)
- .gitignore 補 .venv/ 與 _bug2test/
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- .gitignore +4 -0
- docs/進度報告-2026-07-21.md +35 -0
- docs/需求彙整-UIUX改版.md +305 -0
.gitignore
CHANGED
|
@@ -33,6 +33,7 @@ __pycache__/
|
|
| 33 |
*.pyc
|
| 34 |
*.pyo
|
| 35 |
.env
|
|
|
|
| 36 |
|
| 37 |
# IDE
|
| 38 |
.vscode/
|
|
@@ -50,3 +51,6 @@ shot.*
|
|
| 50 |
|
| 51 |
# 殘留 log
|
| 52 |
sessionsapp_log.txt
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.pyc
|
| 34 |
*.pyo
|
| 35 |
.env
|
| 36 |
+
.venv/
|
| 37 |
|
| 38 |
# IDE
|
| 39 |
.vscode/
|
|
|
|
| 51 |
|
| 52 |
# 殘留 log
|
| 53 |
sessionsapp_log.txt
|
| 54 |
+
|
| 55 |
+
# 本機手動測試用的壞格式樣本
|
| 56 |
+
_bug2test/
|
docs/進度報告-2026-07-21.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 致理語料分析平台 UI/UX 改版 — 進度報告(2026-07-21)
|
| 2 |
+
|
| 3 |
+
## 總覽
|
| 4 |
+
|
| 5 |
+
改版分成 11 個階段,依風險由低到高排序執行,每個階段都是「先做完、驗證通過才進下一階段」,不會一次改太多混在一起。目前狀態:
|
| 6 |
+
|
| 7 |
+
**已完成 6 / 11 個階段**(Phase 0-6),全部經過實測驗證,程式碼已在獨立的工作分支上逐步提交存檔,尚未合併回主版本(等全部完成、確認過再一次推上去,不影響目前線上運作中的版本)。
|
| 8 |
+
|
| 9 |
+
---
|
| 10 |
+
|
| 11 |
+
## 各階段工作任務與施行複雜度
|
| 12 |
+
|
| 13 |
+
| Phase | 工作任務 | 施行複雜度 | 狀態 |
|
| 14 |
+
|---|---|---|---|
|
| 15 |
+
| 0 | 建立測試基準(跑一次完整流程確認系統正常,作為之後每次改動的比對依據) | 低 | ✅ 已完成 |
|
| 16 |
+
| 1 | 全站文字大小統一、Metadata表單標題編號跳號的小瑕疵修正、頁尾多餘連結移除、略過補充說明的文案定稿 | 低 | ✅ 已完成 |
|
| 17 |
+
| — | (額外項目)對話框視覺調整:氣泡寬度、留白、配色微調 | 低 | ✅ 已完成 |
|
| 18 |
+
| 2 | 修復「格式驗證失敗後無法重新上傳」的既有bug——原本使用者上傳檔案不符規定後,系統會要求重傳卻又不給重傳的入口,形成死結 | 中 | ✅ 已完成 |
|
| 19 |
+
| 3 | 上傳驗證強化:檔名字首檢查(依研究情境判斷合法性)、每組至少需有1個檔案的完整性檢查、Metadata表單「群組數量」與實際上傳分組數的一致性檢查 | 中 | ✅ 已完成 |
|
| 20 |
+
| 4 | 修復「運算失敗時步驟列沒有失敗提示」的既有bug——原本失敗時圓點會卡在「進行中」動畫上,使用者容易誤以為系統當機 | 中 | ✅ 已完成 |
|
| 21 |
+
| 5 | 結果分頁排版微調(下載按鈕移到頁面頂部、圖表移到表格上方);補上「監督式學習」「非監督式學習」兩個分頁原本缺少的下載按鈕 | 中 | ✅ 已完成 |
|
| 22 |
+
| 6 | 修復「選定研究情境後無法變更」的既有bug(需求訪談時提到的重要問題)——新增「開始新分析」重置機制,讓使用者可以隨時安全地重新開始,不會卡在錯的情境選擇裡出不來 | 中高 | ✅ 已完成 |
|
| 23 |
+
| 7 | 對話框與上傳欄合併成單一輸入框(原本上傳欄在對話框下方要往下捲動才看得到,使用者常找不到) | 高——牽涉到新舊元件並存過渡,需分兩步驟做(先新增新的、驗證沒問題後才拿掉舊的) | ⏳ 待進行 |
|
| 24 |
+
| 8 | **左側導覽列大改版**——把現有「情境按鈕+上傳卡片」的版面,改成設計討論時定案的左側固定導覽列(開始新分析/讀取進度/結果導覽) | 高——牽動整個版面結構重排 | ⏳ 待進行,**第一個看得出明顯視覺差異的階段** |
|
| 25 |
+
| 9 | **首頁改版**——把設計稿的「4張情境卡片」首頁,真正實作進系統畫面 | 最高——全案技術難度最高的部分,因為 Gradio 這個開發框架本身沒有現成的方式能呈現這種卡片視覺,需要額外寫一段橋接程式,沒有前例可循 | ⏳ 待進行,**完整還原設計稿的階段** |
|
| 26 |
+
| 10 | 持久化功能——中途可存檔、之後能讀檔繼續分析(不用整個重跑),分三小段(存檔/讀檔/錯誤狀況處理) | 高——全新功能,非既有bug修復 | ⏳ 待進行 |
|
| 27 |
+
| 11 | 收尾:剩餘的畫面提示文字補齊+全站完整回歸測試 | 低-中 | ⏳ 待進行 |
|
| 28 |
+
|
| 29 |
+
---
|
| 30 |
+
|
| 31 |
+
## 進度總結
|
| 32 |
+
|
| 33 |
+
目前已經把系統裡「使用起來會卡住、會誤導使用者」的幾個既有問題都修好了(情境選錯無法重來、上傳失敗無法補救、運算失敗畫面沒反應、部分結果缺下載按鈕),這部分屬於「地基工程」,畫面上不會有明顯的視覺差異,但實際操作起來會順很多。
|
| 34 |
+
|
| 35 |
+
接下來要做的是「看得到的改版」:把畫面重新排版(左側導覽列)、把首頁換成新設計(4張情境卡片),這兩個階段做完,畫面才會跟設計稿一致。
|
docs/需求彙整-UIUX改版.md
ADDED
|
@@ -0,0 +1,305 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# SpectraEngine(譯彩紛呈 II 分析引擎)UI/UX 改版需求彙整
|
| 2 |
+
|
| 3 |
+
- 文件建立日期:2026-07-20
|
| 4 |
+
- 最後更新日期:2026-07-20
|
| 5 |
+
- 專案委託方:致理科技大學應日系鄧老師
|
| 6 |
+
- 專案執行:吳千卉
|
| 7 |
+
- 用途:①與 UI/UX Pro Max Skill 協作設計時的需求依據 ②向業主說明本次改版變動內容與理由的對照文件
|
| 8 |
+
|
| 9 |
+
---
|
| 10 |
+
|
| 11 |
+
## 一、專案背景
|
| 12 |
+
|
| 13 |
+
`SpectraEngine` 是一套針對重譯文本(retranslation)語言特徵的量化分析平台,技術上是 **Python + Gradio 單頁研究工具**(`app_agent.py`,約 3400 行),並非傳統前後端分離的 HTML/CSS/JS 網站,部署在 Hugging Face Spaces。系統採雙 Agent 架構:主 Agent(LLM1)負責研究情境引導與報告撰寫,工作程序 Agent(LLM2)負責上傳引導與格式驗證。
|
| 14 |
+
|
| 15 |
+
本次改版目標:**優化操作流程與介面風格**,方向參考 ChatGPT/Claude 網頁版的排版與操作體驗,同時修正過程中發現的既有問題。
|
| 16 |
+
|
| 17 |
+
## 二、技術背景與限制(改版時務必遵守)
|
| 18 |
+
|
| 19 |
+
| 項目 | 說明 |
|
| 20 |
+
|---|---|
|
| 21 |
+
| Repo 結構 | 業主原始 repo:`github.com/minchun-git/SpectraEngine`(唯讀,**不可直接推送**);工作用 fork:`github.com/unlag/SpectraEngine`;本地工作分支:`redesign/ui-refresh`,`main` 保持乾淨不動 |
|
| 22 |
+
| 本地路徑 | `500_Projects\致理應日系-譯彩紛呈分析引擎`(`origin`=fork 可推,`upstream`=業主原始repo 唯讀) |
|
| 23 |
+
| 本機測試 | `.venv` 已建置,`python app_agent.py` 啟動於 `http://127.0.0.1:7860`;無 API key 也能看主頁畫面,LLM 對話功能需 `.env` 填 `LLM1_API_KEY`/`LLM2_API_KEY` |
|
| 24 |
+
| 測試套件 | **無**,每次改動需手動跑過完整流程驗證,不能只憑程式碼檢查 |
|
| 25 |
+
| 風險分區 | `_CUSTOM_CSS`(1639–2550行)純樣式、低風險;`create_app()`(2706行起)版面配置、中風險(勿動 `.click()`/`.change()` 事件綁定);`handle_*` 流程函式(1429–1620行)與核心運算函式(320–1330行)為高風險,**改版不應觸碰** |
|
| 26 |
+
| Gradio 版本 | 6.20.0(`footer_links` 等新版 API 可用,不需 CSS hack) |
|
| 27 |
+
|
| 28 |
+
## 三、已確認的既有 Bug(本次改版應一併修正,非新功能)
|
| 29 |
+
|
| 30 |
+
### Bug 1:選定研究情境後無法變更
|
| 31 |
+
- **位置**:`app_agent.py` 第 3170–3171 行
|
| 32 |
+
- **原因**:情境按鈕選擇後 `scenario_btn_col` 被設為 `visible=False`,程式碼中沒有任何地方會再設回 `visible=True`;對話框打字輸入也不會被辨識為「換情境」指令
|
| 33 |
+
- **修法**:與新版「開始新分析」的未儲存警示機制共用同一套邏輯(換情境=重新開始)
|
| 34 |
+
|
| 35 |
+
### Bug 2:格式驗證失敗後無法重新上傳
|
| 36 |
+
- **位置**:`app_agent.py` 第 3209–3213 行(`on_upload_confirm` 失敗分支)
|
| 37 |
+
- **原因**:驗證失敗訊息本身清楚(逐檔列出原因+修正工具連結),但失敗分支把 `upload_row` 寫死 `gr.update(visible=False)`,導致使用者被叫去重新上傳卻沒有任何上傳欄位可用。目前無存檔機制,使用者唯一解法是重整頁面,導致整個流程歸零
|
| 38 |
+
- **修法**:失敗分支的 `upload_row` 輸出改為 `visible=True`
|
| 39 |
+
- **一併處理**:目前驗證失敗會把**全部**上傳檔案清空(`state["uploaded_files"] = []`),不論哪個檔案有問題。改為**只清除驗證失敗的檔案,已通過的檔案保留**,使用者只需補傳有問題的檔案
|
| 40 |
+
- ⚠️ 修改僅能留在 `redesign/ui-refresh` 分支與 `origin`(千卉 fork),不推送到 `upstream`(業主原始 repo)
|
| 41 |
+
|
| 42 |
+
### 既有小瑕疵:語料 Metadata 表單章節編號跳號
|
| 43 |
+
- **位置**:Metadata 表單「二、比較結構」區塊僅情境 3、4 顯示,情境 1、2 時整段隱藏但編號未跟著調整,導致畫面顯示「一、三、四」跳過「二」
|
| 44 |
+
- **修法**:**拿掉數字編號,改用純文字區塊標題**(不做動態重新編號,避免情境增減時編號邏輯複雜化)
|
| 45 |
+
|
| 46 |
+
### Bug 3:步驟列沒有「失敗」視覺狀態,且此失敗路徑確定會被真實觸發
|
| 47 |
+
- **位置**:`run_computation_pipeline_streaming`(第 1538 行起)的指標計算/統計分析例外處理分支(第 1556、1580 行附近),會把 `state["state"]` 設為 `"COMPLETE"` 並停止流程,但**頂部步驟列的渲染邏輯(`_todo_update`/`_build_header_html`)只看 `done_steps`/`current_step`,完全不管 `state["state"]`**,只有「完成/進行中/未開始」三種視覺狀態,沒有「失敗」狀態
|
| 48 |
+
- **實際後果**:失敗當下卡在那一步的圓點會維持「進行中」的呼吸動畫效果,**永遠停在那裡閃爍**,只有對話串裡一行文字錯誤訊息,使用者容易誤以為系統還在運算、進而手滑刷新頁面
|
| 49 |
+
- **確認會被真實觸發,不是純理論**:查了 `run_statistical_analysis` 的分群運算(`AgglomerativeClustering`/`KMeans`/`linkage`),這些函式都要求**樣本數(上傳文本數)必須 ≥ 分群數**,否則 scikit-learn 直接丟例外。���**目前的格式驗證完全沒有檢查「每組至少要上傳幾個檔案」**,使用者只上傳 1-2 個檔案或漏傳某一組,就會在統計分析階段真的撞上這個失敗路徑——這是新手使用者第一次操作就可能踩到的情況,不是極端邊界案例
|
| 50 |
+
- **修法**:①步驟列加第四種視覺狀態(失敗/警示樣式,如紅色或驚嘆號圖示),失敗時明確停留顯示,不要繼續播放進行中動畫;錯誤訊息旁加明確的下一步動作(如「重新上傳」連結),不要只留文字說明 ②在格式驗證階段攔截根本原因,見下方「上傳驗證強化」
|
| 51 |
+
- 補充:LLM 報告撰寫失敗的處理方式較好,會繼續往下走並提示「其他分析結果仍可下載」,只有指標計算與統計分析這兩個失敗分支有上述問題
|
| 52 |
+
|
| 53 |
+
### Bug 3 附帶:上傳驗證強化(同一批修,分兩個檢查點)
|
| 54 |
+
現況只驗證斷詞內容格式(`validate_ckip_format`),完全沒檢查檔名字首合法性、分組完整性。三項合併設計如下:
|
| 55 |
+
|
| 56 |
+
**✅ 千卉判斷應修正的既有缺陷,非待業主確認事項(2026-07-20)**
|
| 57 |
+
|
| 58 |
+
**第一階段(格式驗證關卡,`run_format_check`,第 1489 行)——可一次到位:**
|
| 59 |
+
1. **檔名字首合法性**:與現有逐檔驗證斷詞格式的迴圈合併,依 `state["scenario"]` 判斷允許的字首集合——情境1、2 只接受 {A,B};情境3、4 接受 {A,B,C}。不合法視同格式不符,錯誤訊息風格比照現有:「檔名 xxx.txt 的字首不符——本情境僅接受 A_xx.txt / B_xx.txt(或 C_xx.txt)格式」
|
| 60 |
+
2. **每組至少1個檔案**:全部檔案通過檔名+格式驗證後,統計實際出現的字首集合——情境1、2必須同時有A、B,缺一即擋下,提示「請確認 A、B 兩組皆已上傳,目前偵測到:{...}」;情境3、4至少要有A、B
|
| 61 |
+
|
| 62 |
+
**第二階段(無法併入格式驗證,時序限制):**
|
| 63 |
+
3. **Metadata表單「群組數量」跟實際上傳分組數的一致性**:使用者選「二群/三群」是在格式驗證**之後**的 Metadata 表單才填,格式驗證當下系統還不知道使用者意圖,結構上無法併入同一關。改在 `on_metadata_confirm`(第3331行附近)送出時多一道比對,不吻合就跳出提醒讓使用者確認
|
| 64 |
+
|
| 65 |
+
## 四、新增功能缺口(非 Bug,需與業主確認是否納入本次改版範圍)
|
| 66 |
+
|
| 67 |
+
### 缺口 1:無「整包下載」功能
|
| 68 |
+
- `run_computation_pipeline_streaming`(第 1538 行起)只把所有產出檔案路徑收集進 `state["output_files"]`,跑完後僅顯示文字提示「各項結果請點選上方各分頁查看」,**沒有任何 zip 打包邏輯**。`state` 裡雖有 `zip_path` 欄位(第 1367 行)但從未被賦值使用
|
| 69 |
+
- 使用者目前要拿到全部產出,必須跑進 3 個結果分頁各自下載
|
| 70 |
+
- **本次改版做法**:先做 UI 假按鈕(「下載完整報告」,位置見下方左側導覽規劃),**不接真正的 zip 打包邏輯**,是否要做後端由業主決定
|
| 71 |
+
|
| 72 |
+
### 缺口 2:「語料 Metadata 說明」略過後無法回頭補填
|
| 73 |
+
- 目前點「略過」後,系統標記為「使用者未提供」並永久跳過,**沒有任何入口可以事後回來編輯**
|
| 74 |
+
- **本次改版做法**:不做「回來補」功能,只調整文案誠實告知:「以下資訊會寫入報告開頭,您也可以先略過(略過後這次分析將不會用到這些補充說明)」
|
| 75 |
+
|
| 76 |
+
### 缺口 3:統計比較分析「監督式學習」「非監督式學習」兩子頁沒有下載按鈕
|
| 77 |
+
- 「1. 敘述統計」「2. 差異性分析」有各自的下載按鈕,但「3. 監督式學習」「4. 非監督式學習」**完全沒有下載入口**
|
| 78 |
+
- 澄清:**不是內容產不出來**——後端 `run_statistical_analysis` 已經有算出並存檔(`imp_path`/`imp_fig_path`/`dendro_path`/`elbow_path`/`cluster_fig_path`/`cluster_csv_path`),只是沒有接對應的 UI 下載按鈕
|
| 79 |
+
- **技術上確認可行、且是低成本修改**:「敘述統計」「差異性分析」兩子頁已經有接 `gr.File` 元件顯示下載按鈕(`tab_desc_file`/`tab_diff_file`),照同一種寫法幫「監督式學習」「非監督式學習」各加一個 `gr.File` 接到已存在的檔案路徑即可,不需新增任何運算邏輯
|
| 80 |
+
- **結論**:不並入「整包下載」或左側導覽「下載指標數據」,維持跟敘述統計/差異性分析一致的做法,各自在右側子頁內容區補一顆自己的下載按鈕
|
| 81 |
+
- **命名**:「下載監督式學習」/「下載非監督式學習」(比照現有 `label="下載敘述統計"`/`label="下載差異性分析"` 命名模式)
|
| 82 |
+
- **下載內容**:
|
| 83 |
+
|
| 84 |
+
| 子頁 | 下載內容 |
|
| 85 |
+
|---|---|
|
| 86 |
+
| 監督式學習 | `imp_path`:特徵重要性分數排序表(CSV);`imp_fig_path`:Top20 特徵重要性長條圖(PNG) |
|
| 87 |
+
| 非監督式學習 | `dendro_path`:階層式分群樹狀圖(PNG);`elbow_path`:K-means Elbow 曲線(PNG);`cluster_fig_path`:PCA 二維分群散佈圖(PNG);`cluster_csv_path`:分群結果表(CSV) |
|
| 88 |
+
|
| 89 |
+
- **✅ 已確認要做**:補上下載按鈕以維持四個子頁一致性
|
| 90 |
+
|
| 91 |
+
## 五、資訊架構設計
|
| 92 |
+
|
| 93 |
+
### 5.1 首頁(新增,取代原本「情境選擇」是對話中第一步的設計)
|
| 94 |
+
- 單欄置中,大標題+簡短說明
|
| 95 |
+
- **直接展示 4 個情境選項卡片**(不做「開始新分析」按鈕→再選情境的兩步驟,選了任一情境卡片即直接開始)
|
| 96 |
+
- 每個情境卡片需附一行說明文字(原本在對話中選情境旁邊只有短標籤,搬到首頁沒有 AI 陪同引導,需要更清楚的說明避免選錯)
|
| 97 |
+
- **卡片說明文字草稿**(基於 `SCENARIOS` 字典裡現成但目前完全未使用的 `desc` 欄位改寫,供 Skill 協作時進一步優化語氣/字數):
|
| 98 |
+
|
| 99 |
+
| 情境 | 卡片說明文字草稿 |
|
| 100 |
+
|---|---|
|
| 101 |
+
| 1. 人工翻譯 vs 機器翻譯 | 比較人工與機器譯本在語言特徵上的差異,聚焦人機翻譯風格對比。 |
|
| 102 |
+
| 2. 全譯 vs 編譯(節譯、改寫) | 比較完整翻譯與節譯/改寫版本,聚焦文本完整性與改寫策略。 |
|
| 103 |
+
| 3. 不同譯者的同期譯本 | 比較同一時期不同譯者的譯本,聚焦個人風格差異(已排除時代因素)。 |
|
| 104 |
+
| 4. 同一原文的不同時期人工譯本 | 比較同一原文在不同時期的譯本,聚焦歷時語言變化與翻譯規範演變。 |
|
| 105 |
+
- 「讀取進度」為次要連結,入口在首頁;讀檔後**直接跳過首頁**,回到中斷當下的步驟與畫面狀態(不用再選一次情境)
|
| 106 |
+
|
| 107 |
+
### 5.2 導覽層級:頂部步驟列 vs 左側「結果導覽」
|
| 108 |
+
兩者互補、不衝突,但視覺上要做出層級差異避免使用者誤認重複:
|
| 109 |
+
|
| 110 |
+
| | 頂部步驟列 | 左側結果導覽 |
|
| 111 |
+
|---|---|---|
|
| 112 |
+
| 性質 | 時間軸型:進度到第幾步 | 空間型:跳著看已完成結果 |
|
| 113 |
+
| 內容 | ①上傳引導②文本上傳③格式驗證④指標計算⑤統計分析⑥報告撰寫⑦下載成果(共 7 步,原 8 步扣掉已搬到首頁的「情境選擇」) | 🏠對話/📊語言指標分析/📈統計比較分析(展開4子項)/📝LLM輔助分析 |
|
| 114 |
+
| 生命週期 | 全部完成(第7步)後**隱藏**,讓畫面空間交給結果內容 | 分析開始前不出現;完成後接手成為主要瀏覽方式,與步驟列隱藏的時機交接一致 |
|
| 115 |
+
|
| 116 |
+
### 5.3 情境標籤(新增,因情境選擇搬到首頁後產生的需求)
|
| 117 |
+
- 進入工作區後需常駐顯示「目前情境」小標籤,**獨立於步驟列存在**(步驟列隱藏後仍要留著)
|
| 118 |
+
- 格式:「情境:3. 不同譯者的同期譯本 [變更]」
|
| 119 |
+
- 位置:右欄最上方、步驟列正上方
|
| 120 |
+
- 「變更」連結沿用「開始新分析」的未儲存警示機制(換情境=重新開始,同一套邏輯/同一個 Bug 1 修法)
|
| 121 |
+
|
| 122 |
+
## 六、版面配置
|
| 123 |
+
|
| 124 |
+
### 6.1 整體:二欄式(不做三欄)
|
| 125 |
+
左欄導覽(窄)+右欄主畫面。原因:「執行進度」已在業主上一版整併進頂部步驟列,不需要獨立第三欄。
|
| 126 |
+
|
| 127 |
+
### 6.2 左側導覽列
|
| 128 |
+
```
|
| 129 |
+
┌─────────────────────┐
|
| 130 |
+
│ 🆕 開始新分析 │
|
| 131 |
+
│ 📂 讀取進度 │
|
| 132 |
+
├─────────────────────┤
|
| 133 |
+
│ 情境:X. ○○○○ [變更] │ ← 分析開始後才出現
|
| 134 |
+
│ 🏠 對話 │
|
| 135 |
+
│ 📊 語言指標分析 │
|
| 136 |
+
│ 📈 統計比較分析 ▾ │
|
| 137 |
+
│ ├ 敘述統計 │
|
| 138 |
+
│ ├ 差異性分析 │
|
| 139 |
+
│ ├ 監督式學習 │
|
| 140 |
+
│ └ 非監督式學習 │
|
| 141 |
+
│ 📝 LLM輔助分析 │
|
| 142 |
+
├─────────────────────┤ ← 分隔線
|
| 143 |
+
│ ⬇️ 下載指標數據 │ ← 指標計算一跑完即可下載,不用等全部結束
|
| 144 |
+
│ ⬇️ 下載完整報告(假按鈕) │ ← 全案完成才出現/啟用
|
| 145 |
+
├─────────────────────┤
|
| 146 |
+
│ ⚙️ 設定 🔌 API │ ← 置底,低視覺權重
|
| 147 |
+
└─────────────────────┘
|
| 148 |
+
```
|
| 149 |
+
- 固定窄寬 240–280px
|
| 150 |
+
- **桌面版可收合**成 ChatGPT 式細窄 icon bar(收合後只留:新對話/讀取進度 icon + 置底設定/API icon)
|
| 151 |
+
- **手機版**:漢堡選單/抽屜收合,預設只顯示對話主畫面,點擊展開側欄
|
| 152 |
+
- 統計比較分析第二層 4 個子分頁用 Accordion 展開(沿用現有「技術執行紀錄」已使用過的收合元件模式,風險中低)
|
| 153 |
+
|
| 154 |
+
### 6.3 右欄(對話畫面)
|
| 155 |
+
```
|
| 156 |
+
┌──────────────────────────────────────────┐
|
| 157 |
+
│ 情境:3. 不同譯者的同期譯本 [變更] │ ← 常駐情境標籤
|
| 158 |
+
│ ① 上傳引導 ② 文本上傳 ③ 格式驗證 ④ 指標計算 ... │ ← 頂部步驟列(7步,完成後淡出)
|
| 159 |
+
├─────────────────────────���────────────────┤
|
| 160 |
+
│ 對話串(AI訊息左側藍線/使用者訊息右側) │
|
| 161 |
+
│ [若目前是 Metadata 步驟 → 插入獨立表單卡片, │
|
| 162 |
+
│ 不套用聊天泡泡左右分欄邏輯,佔滿全欄寬, │
|
| 163 |
+
│ 對話視窗仍在其上方,同頁面往下捲動、非彈出視窗] │
|
| 164 |
+
├──────────────────────────────────────────┤
|
| 165 |
+
│ ▸ 技術執行紀錄(預設收合,弱化字級,主要給技術夥伴用) │
|
| 166 |
+
├──────────────────────────────────────────┤
|
| 167 |
+
│ 📎 [ 輸入文字,或附加檔案… ] 送出 → │ ← 改用 gr.MultimodalTextbox
|
| 168 |
+
└──────────────────────────────────────────┘
|
| 169 |
+
```
|
| 170 |
+
- 對話與上傳改用 `gr.MultimodalTextbox` 合併(現有 UI 對話框在上、上傳欄在下要往下滾動,使用者常找不到)
|
| 171 |
+
- 「技術執行紀錄」判斷是給業主的工程夥伴看的,非一般使用者需求,維持現況的收合行為即可,字級再弱化
|
| 172 |
+
|
| 173 |
+
### 6.4 結果分頁排版
|
| 174 |
+
| 分頁 | 內容 | 排版決策 |
|
| 175 |
+
|---|---|---|
|
| 176 |
+
| 📊 語言指標分析 | 說明文字+75項指標數值表格+下載 | 下載按鈕移到頁面頂部,不要放表格後面 |
|
| 177 |
+
| 📈 統計-1 敘述統計 | 說明+表格+下載 | 沿用現有排版 |
|
| 178 |
+
| 📈 統計-2 差異性分析 | 表格+箱形圖+下載 | 圖表在上、表格在下,先看圖抓重點 |
|
| 179 |
+
| 📈 統計-3 監督式學習 | 特徵重要性表格+圖(現有左右並排) | 沿用;側欄縮窄後放不下則改上下堆疊 |
|
| 180 |
+
| 📈 統計-4 非監督式學習 | 樹狀圖+Elbow並排/PCA全寬/分群表格 | 沿用現有配置 |
|
| 181 |
+
| 📝 LLM輔助分析 | 報告文字+下載 | 舒適閱讀排版(適中行寬、寬鬆行高) |
|
| 182 |
+
|
| 183 |
+
## 七、語料 Metadata 說明表單
|
| 184 |
+
|
| 185 |
+
- **四種情境都會出現此表單**:只要格式驗證通過即跳出,不因情境而整段略過;差異只在表單「內容」,不是「是否顯示」——情境1、2固定二群,不會出現「二、比較結構」(群組數量/比較方式)欄位;情境3、4可能二群或三群,才會多出這段。「略過」整份表單的選項四種情境皆可使用
|
| 186 |
+
- **不套用「對話+上傳合併」邏輯**:欄位量大(原文資訊5欄+群組層表格+個體層表格,情境3/4再加2欄),不適合塞進聊天氣泡或合併輸入框
|
| 187 |
+
- **維持獨立表單卡片**,佔滿右欄全寬,位於對話視窗下方(同頁面往下捲動關係,**非 dialog/彈出視窗**,已實機截圖驗證)
|
| 188 |
+
- 群組層/個體層表格**維持現有 Dataframe 元件不變**(先前曾提議改成卡片式已收回:現有元件已內建全螢幕展開編輯功能,且卡片式無法應對 20–30 組的規模)
|
| 189 |
+
- 章節數字編號(一、二、三、四)拿掉,改純文字標題(見 Bug 清單)
|
| 190 |
+
- 「略過」文案定稿:「以下資訊會寫入報告開頭,您也可以先略過(略過後這次分析將不會用到這些補充說明)」
|
| 191 |
+
|
| 192 |
+
## 八、持久化機制(方案 D:進度存檔/讀檔)
|
| 193 |
+
|
| 194 |
+
不做登入、不做 server 端多 session 儲存。理由:避免資安疑慮(無登入代表任何人拿到 session 網址都能看到他人資料)、避免與現有 Gradio session 架構衝突。
|
| 195 |
+
|
| 196 |
+
| 機制 | 說明 |
|
| 197 |
+
|---|---|
|
| 198 |
+
| 防手滑 | `beforeunload` 事件,離開頁面前跳出確認 |
|
| 199 |
+
| 中途下載 | 任一步驟完成即可下載當前已產出的部分成果 |
|
| 200 |
+
| **存檔/讀檔** | 核心機制。存檔內容**含原始上傳文本**(不只中繼結果),確保讀檔後完整還原、不用重新上傳;讀取進度入口在首頁,讀檔後直接跳過首頁回到中斷步驟 |
|
| 201 |
+
| 檔名/格式區分 | 存檔用自訂副檔名(如 `.spectra`),次要按鈕樣式+警語;成果下載才用一般格式+醒目主色按鈕,避免非技術使用者誤認「中繼存檔=最終成果」 |
|
| 202 |
+
| 多開分析 | 不需特別開發——開新分頁天生是獨立 session(Gradio `session_hash` 機制);僅需在首次進站提示註明「建議同時只跑一個分析,以確保運算速度」(避免多分頁同時佔用運算資源) |
|
| 203 |
+
|
| 204 |
+
## 九、下載機制與命名
|
| 205 |
+
|
| 206 |
+
| 下載項目 | 內容 | 格式 | 命名 | 出現時機 |
|
| 207 |
+
|---|---|---|---|---|
|
| 208 |
+
| 下載指標數據 | 75項指標原始數值(工作底稿) | xlsx + csv | 「下載指標數據」 | 指標計算完成即可,不用等全部結束 |
|
| 209 |
+
| 下載完整報告 | LLM生成研究報告本文 | docx + txt | 「下載完整報告」 | 全案完成才出現(**本次先做假按鈕,不接真正zip打包,見缺口1**) |
|
| 210 |
+
|
| 211 |
+
⚠️ 兩者性質完全不同(數據 vs 報告),且**出現時機不同**,UI 互動邏輯不可誤設計成兩顆按鈕同時解鎖。
|
| 212 |
+
|
| 213 |
+
## 十、Footer/設定/API 處理
|
| 214 |
+
|
| 215 |
+
| 項目 | 決策 |
|
| 216 |
+
|---|---|
|
| 217 |
+
| 透過 API 使用 | 保留(技術文件用途),低視覺權重 |
|
| 218 |
+
| 使用 Gradio 建構 | **不保留**。技術做法:`app.launch(footer_links=["api","settings"])`(Gradio 6.20.0 官方原生支援,非 CSS hack,無授權疑慮) |
|
| 219 |
+
| 設定 | 整個面板保留,不拿掉任何子項(語言下拉/PWA提示/Screen Studio錄影工具都留著;其中僅「顯示主題」Light/Dark/System 為常用項) |
|
| 220 |
+
| 呈現方式 | 不做懸停展開子選單(觸控裝置無 hover 狀態);低視覺權重靜態呈現,置底 |
|
| 221 |
+
| 技術備註 | API文件面板與設定面板是 Gradio 原生元件,會自動套用現有 `gr.themes.Base` 主題色,不需逐畫面客製設計 |
|
| 222 |
+
|
| 223 |
+
## 十一、視覺規範
|
| 224 |
+
|
| 225 |
+
- **全站基礎字級統一 14px**(`0.875rem`):現況內文字級散亂寫死在 0.78–0.84rem 各處、無統一變數,改法是在 CSS Tokens 區塊定義 `--font-size-base: 0.875rem` 共用變數;標題與小徽章/步驟列不在統一範圍內,屬純 CSS 整理、風險低
|
| 226 |
+
|
| 227 |
+
### 11.1 風格方向(與 UI/UX Pro Max Skill 協作結論,2026-07-20)
|
| 228 |
+
- **對話區**(左側導覽+對話串+輸入框):參考 **AI-Native UI** 風格——訊息泡泡、打字中三點跳動動畫、串流文字顯示,直接對應報告撰寫等待期間的載入體感需求
|
| 229 |
+
- **結果分頁**(表格/圖表區):參考 **Data-Dense Dashboard** 風格——多圖表/資料表並存、緊湊排版、最大化資訊密度,對應75項指標表格與4種統計圖表的呈現需求
|
| 230 |
+
|
| 231 |
+
### 11.2 字體
|
| 232 |
+
- **英文/數字**:Crimson Pro(學術感、研究工具調性)
|
| 233 |
+
- **中文本文**:維持現有 **Noto Sans TC**(Skill 的字體資料庫為西文導向,不含中文字體,此為千卉判斷後的中西混搭決定,非 Skill 資料庫建議)
|
| 234 |
+
|
| 235 |
+
### 11.3 配色——維持現有雙主題系統,不重新設計
|
| 236 |
+
業主上一版已建立完整淺色/深色雙主題 token(sky+indigo+slate 系),經 WCAG 對比度驗算後確認品質良好,**本次改版不更換配色,只驗證與微調用法**:
|
| 237 |
+
|
| 238 |
+
| | 淺色模式 | 深色模式 |
|
| 239 |
+
|---|---|---|
|
| 240 |
+
| 背景 | `#f8fafc` | `#020617` |
|
| 241 |
+
| 主要文字對比度 | 約 14:1 | 約 14:1(同等優異) |
|
| 242 |
+
| 一般強調色 `--c-accent`(按鈕/圖示/大字用) | `#0284c7`,約 4.09:1 | `#0ea5e9`,約 6.58:1 |
|
| 243 |
+
| 加強強調色 `--c-accent-strong`(小字/連結文字用) | `#0369a1`,約 5.93:1 | 同等更高 |
|
| 244 |
+
|
| 245 |
+
⚠️ **微調重點**:淺色模式的一般強調色 `#0284c7` 若直接用於一般大小的內文文字,對比度 4.09:1 略低於 WCAG AA 的 4.5:1 門檻(但用於按鈕/圖示/大字等允許 3:1 門檻的地方完全合格)。系統已內建 `--c-accent-strong`(`#0369a1`,5.93:1)供小字/連結使用,改版時**須確認一般強調色與加強強調色的使用場景沒有混用**,不需要新增變數,只是用法要正確對應。
|
| 246 |
+
|
| 247 |
+
## 十二、既有架構限制(改版時不可誤改壞)
|
| 248 |
+
|
| 249 |
+
- 4 個情境(人機對比/全譯vs編譯/譯者風格/歷時重譯)共用同一組步驟數,情境間步驟數一致,頂部步驟列可通用
|
| 250 |
+
- 但同一步驟內部依情境分支:
|
| 251 |
+
- 情境1/2固定二群、情境3/4可二群或三群
|
| 252 |
+
- 語料Metadata表單情境3/4會多出「群組數量」「比較方式」欄位
|
| 253 |
+
- 統計分析依群組數用不同效果量算法(Cohen's d vs Eta squared)
|
| 254 |
+
- 報告撰寫依情境套用不同分析角度模板(SCENARIO_MODULE_1~4)
|
| 255 |
+
- → **Metadata表單這步不能設計成4情境長相完全一樣**
|
| 256 |
+
|
| 257 |
+
## 十三、空狀態/極限狀態/錯誤狀態設計規劃
|
| 258 |
+
|
| 259 |
+
### 13.1 空狀態(Empty States)
|
| 260 |
+
| 情境 | 設計方向 |
|
| 261 |
+
|---|---|
|
| 262 |
+
| 首頁初訪(尚未選情境) | 單欄置中大標題+4情境卡片+讀取進度次要連結(見五之5.1) |
|
| 263 |
+
| 結果分頁在分析尚未開始時 | 現有已有 `_EMPTY_HINT` 元件(置中圖示+提示文字,內容近似「尚未產生資料/請先於主頁完成分析流程」),**沿用現有設計**,只需適配新版面(右欄/左側結果導覽)位置 |
|
| 264 |
+
| 左側「結果導覽」在分析未開始前 | 整段不顯示(已決定,見六之6.2) |
|
| 265 |
+
| 讀取進度但尚無任何存檔可讀(新功能首次使用) | 需設計提示文案;使用者第一次使用本系統不會有任何存檔,按下「讀取進度」前應清楚說明這是「上傳先前下載的存檔」,不是「系統幫你保存的雲端紀錄」 |
|
| 266 |
+
|
| 267 |
+
### 13.2 極限狀態(Extreme States)
|
| 268 |
+
| 情境 | 設計方向 |
|
| 269 |
+
|---|---|
|
| 270 |
+
| 上傳檔案數量極多(20–30 個群組) | 維持 Dataframe 元件(已內建全螢幕展開編輯),見七 |
|
| 271 |
+
| **上傳檔案數量過少(單一檔案、或某組缺漏)** | 見 Bug 3:目前格式驗證未檢查「每組至少幾個檔案」,會導致統計分析分群運算真的失敗。**建議格式驗證階段就攔截**,並非只在結果端顯示失敗狀態即可 |
|
| 272 |
+
| 完全沒有顯著指標(差異性分析 `sig_count=0`) | 現有邏輯 `if len(sig_df) > 0` 才產生箱形圖,無顯著指標時不產生圖片;**需設計對應的空狀態提示**(例如「本次分析未發現統計顯著的指標差異」),不要讓畫面留白讓使用者以為是系統壞掉 |
|
| 273 |
+
| 報告內容極長 | 舒適閱讀排版+下載按鈕固定定位(已決定,見六之6.4) |
|
| 274 |
+
| 情境卡片標題/說明文字過長 | 首頁卡片版型需保留彈性,避免長文案破版 |
|
| 275 |
+
|
| 276 |
+
### 13.3 錯誤狀態(Error States)
|
| 277 |
+
| 情境 | 狀態 |
|
| 278 |
+
|---|---|
|
| 279 |
+
| 格式驗證失敗 | 已列入 Bug 2,本次修正 |
|
| 280 |
+
| 情境無法變更 | 已列入 Bug 1,本次修正 |
|
| 281 |
+
| 指標計算/統計分析失敗 | 已列入 Bug 3(新增步驟列第四種視覺狀態),本次修正,且已確認為真實可觸發 |
|
| 282 |
+
| LLM 報告撰寫失敗 | 現有已有優雅降級處理(提示「其他分析結果仍可下載」),**沿用現有邏輯** |
|
| 283 |
+
| 讀取進度檔案毀損或格式不符 | **新功能,尚無現成邏輯**,需設計對應錯誤訊息(例如「這個檔案看起來不是有效的進度存檔,請確認檔案是否正確」),並讓使用者能重新選擇檔案或改為開始新分析 |
|
| 284 |
+
| LLM API 金鑰未設定/呼叫逾時 | 現有已有 try/except 文字降級訊息,**沿用現有機制**即可,不需額外設計 |
|
| 285 |
+
|
| 286 |
+
## 十四、待業主確認的範圍清單(影響工作量估計,需業主拍板)
|
| 287 |
+
|
| 288 |
+
1. 「下載完整報告」是否要做真正的 zip 整包後端邏輯(本次僅做假按鈕)
|
| 289 |
+
2. 是否要做「Metadata 略過後事後回來補填」功能(本次不做,只調整文案)
|
| 290 |
+
3. Session 輸出目錄的清理機制(維運層面,非 UI/UX 範圍,但影響 Hugging Face Space 長期磁碟空間)
|
| 291 |
+
4. 是否要加入致理科技大學品牌/校徽識別(目前系統僅有 SpectraEngine 自身品牌,無委託單位識別)
|
| 292 |
+
5. 是否要設定上傳檔案大小上限(目前無任何限制,異常巨大檔案可能拖慢運算或超出 Gradio 上傳限制),不急迫,可延後決定
|
| 293 |
+
|
| 294 |
+
## 十五、更新紀錄
|
| 295 |
+
|
| 296 |
+
| 日期 | 修改摘要 |
|
| 297 |
+
|---|---|
|
| 298 |
+
| 2026-07-20 | 初版建立:專案背景、技術限制、Bug 1-2、資訊架構、版面配置、Metadata 表單、持久化機制(方案D)、下載機制、Footer/設定/API處理、視覺規範(14px字級)、既有架構限制 |
|
| 299 |
+
| 2026-07-20 | 新增 Bug 3(步驟列失敗視覺狀態,已確認真實可觸發)+上傳驗證強化(檔名字首合法性/每組檔案數下限/Metadata群組數一致性);新增十三章空狀態/極限狀態/錯誤狀態規劃;新增十四章待業主確認清單 |
|
| 300 |
+
| 2026-07-20 | 「監督式學習」「非監督式學習」補下載按鈕確認要做(移出待業主清單),命名定為「下載監督式學習」/「下載非監督式學習」;格式驗證每組檔案數下限確認為既有缺陷修正、非待業主確認事項;精簡缺口3內容;補充 Metadata 表單四種情境皆會出現、差異僅在內容的說明 |
|
| 301 |
+
| 2026-07-20 | 開始與 UI/UX Pro Max Skill 協作視覺設計:確定風格方向(對話區參考AI-Native UI、結果分頁參考Data-Dense Dashboard)、字體(英文數字Crimson Pro+中文維持Noto Sans TC)、配色(維持業主既有雙主題系統,WCAG對比度驗算通過,不重新設計) |
|
| 302 |
+
|
| 303 |
+
---
|
| 304 |
+
|
| 305 |
+
*本文件會隨協作進度持續更新,最新版本以此檔案為準;每次重大修改請同步更新上方「最後更新日期」與本章節。*
|