Spaces:
Sleeping
Sleeping
拆分對話區塊與內容區塊,逐項對照程式碼校正 4.1-4.5
Browse files原「右欄(對話畫面)」把對話區塊與內容區塊混為一段,且版面圖畫成
單欄。實際結構是:AI 對話頁為三欄(導覽+對話+內容),其他結果頁
為二欄(對話區塊收起,由 JS 在 .main-layout-row 記 data-nav、CSS
據此控制顯隱)。拆成兩個小節分別說明,各自附版面圖與元件對照。
內容區塊補充步驟列與捲動區分兩層的原因(步驟列自己 position:sticky
會被 Gradio 自動包的 .block wrapper 框住而跟著捲走,已實測)。
結果分頁排版表改為逐頁列出實際元件順序,並補上監督式學習表格與圖
的 1:2 寬度比、非監督式學習兩張圖等寬並排等細節。
空狀態補上 _EMPTY_HINT 的實際文案與行號;無顯著指標的情況補上
tab_box_img 預設 visible=False、該處確實一片空白的說明。
新增兩處「已知待修正」:
- 下載鈕命名不一致:四個統計子頁用具名標籤,但語言指標分析是
「下載檔案」、LLM 輔助分析是「下載報告」
- _EMPTY_HINT 文案「請先於「主頁」完成分析流程」是舊版導覽用語,
現行導覽列沒有「主頁」項目,對應的是「AI 對話」
4.3 語料 Metadata 表單經對照確認與程式碼一致,未修改。
- docs/UIUX優化成果與技術說明.md +62 -24
docs/UIUX優化成果與技術說明.md
CHANGED
|
@@ -303,26 +303,35 @@ commit `d928c91`
|
|
| 303 |
- **手機版**:漢堡選單/抽屜收合(`mobile_nav_toggle`/`nav_drawer_close`/`nav_backdrop`),預設只顯示對話主畫面,點擊展開側欄
|
| 304 |
- 「讀取進度」不在左側導覽,改放首頁下方(目前為佔位連結)
|
| 305 |
|
| 306 |
-
####
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 307 |
|
| 308 |
```
|
| 309 |
-
┌────────────────────────────
|
| 310 |
-
│
|
| 311 |
-
|
| 312 |
-
│
|
| 313 |
-
│
|
| 314 |
-
|
| 315 |
-
│
|
| 316 |
-
|
| 317 |
-
│ [ 對話輸入框 ] │ ← 已實作,目前隱藏
|
| 318 |
-
└──────────────────────────────────────────┘
|
| 319 |
```
|
| 320 |
|
| 321 |
-
**對話
|
|
|
|
|
|
|
| 322 |
|
| 323 |
-
原規劃是把對話與上傳合併成單一輸入框(`gr.MultimodalTextbox`),解決舊版「對話框在上、上傳欄在下要往下滾動、使用者常找不到」的問題。元件已建置完成(`chat_upload`,app_agent.py:2891),但外層 `chat_upload_col` 設為 `visible=False`(app_agent.py:2890),畫面上看不到。
|
| 324 |
|
| 325 |
-
目前的
|
| 326 |
|
| 327 |
- `sources=[]`:不掛附加檔案功能,避免顯示迴紋針圖示卻按了沒作用
|
| 328 |
- `submit_btn=False`:不顯示送出鈕
|
|
@@ -331,20 +340,47 @@ commit `d928c91`
|
|
| 331 |
|
| 332 |
原本的轉接函式 `on_chat_upload_submit` 已於 2026-07-24 當作死碼移除。日後要啟用時,把 `chat_upload_col` 改為 `visible=True` 並重新接上 `.submit()` 事件即可,程式碼中該處留有註解說明。
|
| 333 |
|
| 334 |
-
檔案上傳目前走獨立
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 335 |
|
| 336 |
#### 結果分頁排版
|
| 337 |
|
| 338 |
-
|
|
|
|
|
|
|
| 339 |
|---|---|---|
|
| 340 |
-
| 語言指標分析 |
|
| 341 |
-
| 統計-1 敘述統計 |
|
| 342 |
-
| 統計-2 差異性分析 |
|
| 343 |
-
| 統計-3 監督式學習 | 特徵重要性表格
|
| 344 |
-
| 統計-4 非監督式學習 | 樹狀圖
|
| 345 |
-
| LLM 輔助分析 | 報告文字
|
| 346 |
| 技術執行紀錄 | 逐行執行 log | 弱化字級 |
|
| 347 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 348 |
### 4.3 語料 Metadata 說明表單設計
|
| 349 |
|
| 350 |
- **四種情境都會出現此表單**:只要格式驗證通過即跳出,不因情境而整段略過。差異只在表單「內容」而非「是否顯示」:情境 1、2 固定二群,不會出現「比較結構」(群組數量/比較方式)欄位;情境 3、4 可能二群或三群,才會多出這段。「略過」整份表單的選項四種情境皆可使用
|
|
@@ -393,17 +429,19 @@ commit `d928c91`
|
|
| 393 |
| 情境 | 設計 |
|
| 394 |
|---|---|
|
| 395 |
| 首頁初訪 | 單欄置中:品牌介紹+「開始研究分析」單一入口+讀取進度佔位連結(見 4.1)|
|
| 396 |
-
| 結果分頁在分析尚未開始時 | 沿用
|
| 397 |
| 左側結果導覽在分析未開始前 | 整段不顯示 |
|
| 398 |
| 讀取進度但尚無任何存檔可讀 | 待設計(功能未實作,見 5.2)。設計時須說明這是「上傳先前下載的存檔」,不是「系統幫你保存的雲端紀錄」|
|
| 399 |
|
|
|
|
|
|
|
| 400 |
#### 極限狀態
|
| 401 |
|
| 402 |
| 情境 | 設計 |
|
| 403 |
|---|---|
|
| 404 |
| 上傳檔案數量極多(20–30 個群組)| 維持 Dataframe 元件(已內建全螢幕展開編輯),見 4.3 |
|
| 405 |
| 上傳檔案數量過少、或某組缺漏 | 已於格式驗證階段攔截,見 2.1 ⑥ |
|
| 406 |
-
| 完全沒有顯著指標
|
| 407 |
| 報告內容極長 | 舒適閱讀排版+下載按鈕固定定位,見 4.2 |
|
| 408 |
| 情境卡片標題/說明文字過長 | 卡片版型保留彈性,避免長文案破版 |
|
| 409 |
|
|
|
|
| 303 |
- **手機版**:漢堡選單/抽屜收合(`mobile_nav_toggle`/`nav_drawer_close`/`nav_backdrop`),預設只顯示對話主畫面,點擊展開側欄
|
| 304 |
- 「讀取進度」不在左側導覽,改放首頁下方(目前為佔位連結)
|
| 305 |
|
| 306 |
+
#### 欄數會依所在頁面變動
|
| 307 |
+
|
| 308 |
+
| 所在頁面 | 欄數 | 組成 |
|
| 309 |
+
|---|---|---|
|
| 310 |
+
| AI 對話 | 三欄 | 導覽區塊 + **對話區塊** + 內容區塊 |
|
| 311 |
+
| 其他所有結果頁 | 二欄 | 導覽區塊 + 內容區塊(對話區塊收起)|
|
| 312 |
+
|
| 313 |
+
切換由 JavaScript 在 `.main-layout-row` 上記錄 `data-nav` 屬性、再由 CSS 據此控制對話區塊的顯隱。內容區塊是唯一橫跨全流程都在的區域。
|
| 314 |
+
|
| 315 |
+
#### 對話區塊(`chat-col`,`scale=3`/`min_width=280`)
|
| 316 |
|
| 317 |
```
|
| 318 |
+
┌────────────────────────────┐
|
| 319 |
+
│ 對話串 │
|
| 320 |
+
│ AI 訊息靠左/使用者訊息靠右 │
|
| 321 |
+
│ │
|
| 322 |
+
│ │
|
| 323 |
+
├────────────────────────────┤
|
| 324 |
+
│ [ 對話輸入框 ] │ ← 已實作,目前隱藏
|
| 325 |
+
└────────────────────────────┘
|
|
|
|
|
|
|
| 326 |
```
|
| 327 |
|
| 328 |
+
**對話氣泡視窗**:`chatbot`(`gr.Chatbot`,`elem_classes=["main-chat"]`,app_agent.py:2868)。AI 訊息與使用者訊息左右分欄呈現。
|
| 329 |
+
|
| 330 |
+
**對話輸入框:已實作但目前隱藏,依業主要求先不對使用者開放。**
|
| 331 |
|
| 332 |
+
原規劃是把對話與上傳合併成單一輸入框(`gr.MultimodalTextbox`),解決舊版「對話框在上、上傳欄在下要往下滾動、使用者常找不到」的問題。元件已建置完成(`chat_upload`,app_agent.py:2891),但外層 `chat_upload_col` 設為 `visible=False`(app_agent.py:2890),畫面上看不到。這裡用 `visible=False` 而不是整個拿掉,是為了讓元件仍存在於畫面樹中,日後啟用只需改一個參數。
|
| 333 |
|
| 334 |
+
目前的參數狀態:
|
| 335 |
|
| 336 |
- `sources=[]`:不掛附加檔案功能,避免顯示迴紋針圖示卻按了沒作用
|
| 337 |
- `submit_btn=False`:不顯示送出鈕
|
|
|
|
| 340 |
|
| 341 |
原本的轉接函式 `on_chat_upload_submit` 已於 2026-07-24 當作死碼移除。日後要啟用時,把 `chat_upload_col` 改為 `visible=True` 並重新接上 `.submit()` 事件即可,程式碼中該處留有註解說明。
|
| 342 |
|
| 343 |
+
檔案上傳目前走內容區塊裡的獨立上傳卡片(`file_input`,app_agent.py:2946),不受此影響。
|
| 344 |
+
|
| 345 |
+
#### 內容區塊(`canvas-col`,`scale=7`/`min_width=380`)
|
| 346 |
+
|
| 347 |
+
```
|
| 348 |
+
┌──────────────────────────────────────────┐
|
| 349 |
+
│ ① 研究選擇 ② 文本上傳 ③ 語料說明 ④ 分析運算 │ ← 步驟列(固定不捲動,
|
| 350 |
+
├──────────────────────────────────────────┤ 只在 AI 對話頁顯示)
|
| 351 |
+
│ │
|
| 352 |
+
│ 依目前步驟顯示對應內容(此區可捲動): │
|
| 353 |
+
│ ・研究選擇 → 四張情境卡片 │
|
| 354 |
+
│ ・文本上傳 → 上傳卡片+格式說明+進度 │
|
| 355 |
+
│ ・語料說明 → Metadata 表單卡片 │
|
| 356 |
+
│ ・分析運算 → 三子階段進度與摘要 │
|
| 357 |
+
│ 分析完成後,改顯示左側導覽點選的結果內容 │
|
| 358 |
+
│ │
|
| 359 |
+
└──────────────────────────────────────────┘
|
| 360 |
+
```
|
| 361 |
+
|
| 362 |
+
**步驟列與捲動區是分開的兩層**:步驟列(`app_header_html`,app_agent.py:2918)直接放在 `canvas-col` 下,捲動內容另外包一層 `canvas-scroll`。這樣步驟列才會真正固定在內容區頂端不動。先前嘗試讓步驟列自己 `position:sticky` 失敗,原因是 Gradio 自動包的 `.block` wrapper 高度只比內容高一點點,sticky 的可移動範圍被那層 wrapper 框住,捲動一小段後就整個跟著捲走。
|
| 363 |
+
|
| 364 |
+
**語料 Metadata 表單在此區呈現**:不套用聊天泡泡的左右分欄邏輯,佔滿內容區全寬,與上方內容是同頁面往下捲動的關係,**非 dialog/彈出視窗**(已實機截圖驗證)。設計理由見 4.3。
|
| 365 |
|
| 366 |
#### 結果分頁排版
|
| 367 |
|
| 368 |
+
六個結果頁是三個互斥可見性的區塊(`canvas_idx_col`/`canvas_stat_col`/`canvas_report_col`),取代舊版的整頁分頁切換。各頁由上而下的實際元件順序:
|
| 369 |
+
|
| 370 |
+
| 分頁 | 由上而下的元件順序 | 排版決策 |
|
| 371 |
|---|---|---|
|
| 372 |
+
| 語言指標分析 | 下載鈕 → 指標計算結果表格 | **下載鈕放在表格之前**(表格有 75 項指標,放後面要捲很久才看得到)|
|
| 373 |
+
| 統計-1 敘述統計 | 敘述性統計表格 → 下載鈕 | 沿用原排版 |
|
| 374 |
+
| 統計-2 差異性分析 | 顯著指標箱形圖 → 差異性分析表格 → 下載鈕 | **圖在上、表格在下**,先看圖抓重點 |
|
| 375 |
+
| 統計-3 監督式學習 | 〔特徵重要性 Top 20 表格 | 特徵重要性圖〕左右並排 → 下載鈕 | 表格與圖的寬度比為 1:2,讓圖有足夠寬度 |
|
| 376 |
+
| 統計-4 非監督式學習 | 〔層次分群樹狀圖 | K-means Elbow Curve〕左右等寬並排 → PCA 2D 分群圖(全寬)→ 分群結果表格 → 下載鈕 | 沿用原配置 |
|
| 377 |
+
| LLM 輔助分析 | 報告文字 → 下載鈕 | 舒適閱讀排版(適中行寬、寬鬆行高)|
|
| 378 |
| 技術執行紀錄 | 逐行執行 log | 弱化字級 |
|
| 379 |
|
| 380 |
+
所有圖表元件預設 `visible=False`,待對應結果產出後才顯示。
|
| 381 |
+
|
| 382 |
+
> **已知待修正**:下載鈕的命名風格不一致。四個統計子頁用具名標籤(「下載敘述統計」「下載差異性分析」「下載監督式學習」「下載非監督式學習」),但語言指標分析那顆是「下載檔案」、LLM 輔助分析那顆是「下載報告」。建議統一為具名形式(「下載語言指標」「下載 LLM 報告」),使用者在不同頁面間切換時才不會困惑。
|
| 383 |
+
|
| 384 |
### 4.3 語料 Metadata 說明表單設計
|
| 385 |
|
| 386 |
- **四種情境都會出現此表單**:只要格式驗證通過即跳出,不因情境而整段略過。差異只在表單「內容」而非「是否顯示」:情境 1、2 固定二群,不會出現「比較結構」(群組數量/比較方式)欄位;情境 3、4 可能二群或三群,才會多出這段。「略過」整份表單的選項四種情境皆可使用
|
|
|
|
| 429 |
| 情境 | 設計 |
|
| 430 |
|---|---|
|
| 431 |
| 首頁初訪 | 單欄置中:品牌介紹+「開始研究分析」單一入口+讀取進度佔位連結(見 4.1)|
|
| 432 |
+
| 結果分頁在分析尚未開始時 | 沿用 `_EMPTY_HINT` 元件(app_agent.py:1826):置中的圖示方塊+兩行文字「尚未產生資料/請先於「主頁」完成分析流程」,適配新版面位置。**文案待修正**,見下方說明 |
|
| 433 |
| 左側結果導覽在分析未開始前 | 整段不顯示 |
|
| 434 |
| 讀取進度但尚無任何存檔可讀 | 待設計(功能未實作,見 5.2)。設計時須說明這是「上傳先前下載的存檔」,不是「系統幫你保存的雲端紀錄」|
|
| 435 |
|
| 436 |
+
> **已知待修正**:`_EMPTY_HINT` 的文案「請先於**「主頁」**完成分析流程」是舊版導覽的用語。目前左側導覽列上沒有任何叫「主頁」的項目,對應的是「AI 對話」。使用者照著這句話找不到入口。建議改為「請先於『AI 對話』完成分析流程」。
|
| 437 |
+
|
| 438 |
#### 極限狀態
|
| 439 |
|
| 440 |
| 情境 | 設計 |
|
| 441 |
|---|---|
|
| 442 |
| 上傳檔案數量極多(20–30 個群組)| 維持 Dataframe 元件(已內建全螢幕展開編輯),見 4.3 |
|
| 443 |
| 上傳檔案數量過少、或某組缺漏 | 已於格式驗證階段攔截,見 2.1 ⑥ |
|
| 444 |
+
| 完全沒有顯著指標 | 現有邏輯 `if len(sig_df) > 0`(app_agent.py:946)才產生箱形圖,無顯著指標時不產生圖片,而 `tab_box_img` 預設 `visible=False`,該處就是一片空白。**尚未實作對應提示**,建議補上「本次分析未發現統計顯著的指標差異」之類的說明,避免使用者以為系統壞掉 |
|
| 445 |
| 報告內容極長 | 舒適閱讀排版+下載按鈕固定定位,見 4.2 |
|
| 446 |
| 情境卡片標題/說明文字過長 | 卡片版型保留彈性,避免長文案破版 |
|
| 447 |
|