Spaces:
Sleeping
Sleeping
E5:_TAB_OUTPUTS 拆成具名子清單(零行為改變)
Browse files原本 37 元素的單一扁平清單改拆成 11 個具名子清單(語言指標分析/敘述
統計/差異性分析/監督式學習/非監督式學習/研究報告/Canvas可見性/
補的下載按鈕/技術執行紀錄/導覽列下載捷徑/結果導覽閘門)再串接,
方便肉眼對照 index 屬於哪個功能區塊。最終串接後的順序與內容跟原本
逐一相同,13 處呼叫端的 positional tuple 完全不受影響。
Playwright 端到端驗證(情境3,三群比較,含從未測過的 on_metadata_confirm
真實送出路徑,非略過):指標計算/統計分析/報告撰寫全部完成,語言指標
分析/敘述統計/差異性分析/監督式學習/非監督式學習/LLM輔助分析
六個結果頁與下載檔案全部正確顯示,server log 無 error/traceback。
- app_agent.py +31 -18
app_agent.py
CHANGED
|
@@ -3127,24 +3127,37 @@ def create_app():
|
|
| 3127 |
# ── 結果內容輸出元件 + 3 個 Canvas 結果區塊可見性 ─────────────────
|
| 3128 |
# Phase 8-C:tab2/tab3/tab6(原 gr.Tab())已改成 canvas_idx_col/
|
| 3129 |
# canvas_stat_col/canvas_report_col(gr.Column()),可見性語意不變。
|
| 3130 |
-
|
| 3131 |
-
|
| 3132 |
-
|
| 3133 |
-
|
| 3134 |
-
|
| 3135 |
-
|
| 3136 |
-
|
| 3137 |
-
|
| 3138 |
-
|
| 3139 |
-
|
| 3140 |
-
|
| 3141 |
-
|
| 3142 |
-
|
| 3143 |
-
|
| 3144 |
-
|
| 3145 |
-
|
| 3146 |
-
|
| 3147 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3148 |
_N_TAB = len(_TAB_OUTPUTS)
|
| 3149 |
|
| 3150 |
# ── helper ──────────────────────────────────────────────────────────
|
|
|
|
| 3127 |
# ── 結果內容輸出元件 + 3 個 Canvas 結果區塊可見性 ─────────────────
|
| 3128 |
# Phase 8-C:tab2/tab3/tab6(原 gr.Tab())已改成 canvas_idx_col/
|
| 3129 |
# canvas_stat_col/canvas_report_col(gr.Column()),可見性語意不變。
|
| 3130 |
+
#
|
| 3131 |
+
# E5(2026-08-05):這份清單是純位置對應——13 處呼叫端(_populate_tabs
|
| 3132 |
+
# 的回傳、_run_computation/on_metadata_confirm/on_metadata_skip 等
|
| 3133 |
+
# generator 的每個 yield)都要交出跟 _TAB_OUTPUTS 完全等長、順序完全
|
| 3134 |
+
# 一致的一份值,Gradio 只認位置、不認名字。拆成下面這些具名子清單只是
|
| 3135 |
+
# 讓「這個 index 屬於哪個功能區塊」肉眼看得出來,**串接後的最終順序與
|
| 3136 |
+
# 內容跟原本的單一扁平清單逐一相同,行為零改變**。真正的規則沒有變:
|
| 3137 |
+
# 子清單內部就代表最終 index 順序,新增元件只能加在對應子清單的尾端,
|
| 3138 |
+
# 不可插入中間、也不可調整子清單彼此的串接順序,否則所有呼叫端的
|
| 3139 |
+
# index 對應會全部錯位。
|
| 3140 |
+
_TAB_IDX = [tab_idx_md, tab_idx_df, tab_idx_file] # 語言指標分析
|
| 3141 |
+
_TAB_DESC = [tab_desc_md, tab_desc_df, tab_desc_file] # 敘述統計(含下載)
|
| 3142 |
+
_TAB_DIFF = [tab_diff_head, tab_diff_df, tab_box_img, tab_diff_file] # 差異性分析(含下載)
|
| 3143 |
+
_TAB_SUPERVISED = [tab_rf_md, tab_imp_df, tab_imp_img] # 監督式學習
|
| 3144 |
+
_TAB_UNSUPERVISED = [tab_clust_md, tab_dendro_img, tab_elbow_img,
|
| 3145 |
+
tab_pca_img, tab_cluster_df] # 非監督式學習
|
| 3146 |
+
_TAB_REPORT = [tab_rpt_md, tab_rpt_file] # 研究報告
|
| 3147 |
+
_TAB_CANVAS_VIS = [canvas_idx_col, canvas_stat_col, canvas_report_col] # 3 個 Canvas 結果區塊可見性
|
| 3148 |
+
_TAB_EXTRA_DL = [tab_imp_file, tab_cluster_file] # 補的下載按鈕(監督式/非監督式學習)
|
| 3149 |
+
_TAB_EXEC_LOG = [canvas_exec_col] # 技術執行紀錄(2026-07-23 轉正成獨立頁面)
|
| 3150 |
+
_TAB_NAV_DL = [nav_dl_idx_btn, nav_dl_stat_btn, # 導覽列下載捷徑(2026-07-24)
|
| 3151 |
+
nav_dl_report_btn, nav_dl_all_btn,
|
| 3152 |
+
nav_dl_group] # 下載捷徑整組(分隔線+四顆)可見性
|
| 3153 |
+
_TAB_NAV_GATES = [nav_idx_btn, nav_stat_sub_0, nav_stat_sub_1, # 結果導覽 interactive 閘門(A2)
|
| 3154 |
+
nav_stat_sub_2, nav_stat_sub_3, nav_report_btn]
|
| 3155 |
+
|
| 3156 |
+
_TAB_OUTPUTS = (
|
| 3157 |
+
_TAB_IDX + _TAB_DESC + _TAB_DIFF + _TAB_SUPERVISED + _TAB_UNSUPERVISED +
|
| 3158 |
+
_TAB_REPORT + _TAB_CANVAS_VIS + _TAB_EXTRA_DL + _TAB_EXEC_LOG +
|
| 3159 |
+
_TAB_NAV_DL + _TAB_NAV_GATES
|
| 3160 |
+
)
|
| 3161 |
_N_TAB = len(_TAB_OUTPUTS)
|
| 3162 |
|
| 3163 |
# ── helper ──────────────────────────────────────────────────────────
|