jimmy60504 commited on
Commit
6663675
·
1 Parent(s): ed6729a

docs: update copilot instructions and project plan for improved workflow and user experience

Browse files
Files changed (2) hide show
  1. app.py +33 -3
  2. changelog.md +10 -4
app.py CHANGED
@@ -861,6 +861,29 @@ def on_event_select(event_name):
861
  return None
862
 
863
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
864
  def create_input_station_map(selected_stations, epicenter_lat, epicenter_lon):
865
  """創建輸入測站分布地圖:顯示所有測站 + 突顯被選中的 25 個"""
866
  import folium
@@ -1225,9 +1248,9 @@ with gr.Blocks(title="TTSAM 震度預測系統") as demo:
1225
 
1226
  # 綁定事件
1227
  event_dropdown.change(
1228
- fn=on_event_select,
1229
- inputs=[event_dropdown],
1230
- outputs=[observed_intensity_image]
1231
  )
1232
 
1233
  load_waveform_btn.click(
@@ -1242,4 +1265,11 @@ with gr.Blocks(title="TTSAM 震度預測系統") as demo:
1242
  outputs=[observed_intensity_image, predicted_intensity_map, stats_output]
1243
  )
1244
 
 
 
 
 
 
 
 
1245
  demo.launch()
 
861
  return None
862
 
863
 
864
+ def on_event_change(event_name, start_time, duration, epicenter_lon, epicenter_lat):
865
+ """
866
+ 當選擇事件時,同時更新波形地圖、波形圖、實際觀測圖
867
+
868
+ Returns:
869
+ (station_map_html, waveform_plot, info_text, observed_intensity_path)
870
+ """
871
+ try:
872
+ # 同時更新波形地圖
873
+ station_map_html, waveform_plot, info_text, _ = load_and_display_waveform(
874
+ event_name, start_time, duration, epicenter_lon, epicenter_lat
875
+ )
876
+
877
+ # 同時更新實際觀測圖
878
+ observed_intensity_path = load_observed_intensity_image(event_name)
879
+
880
+ return station_map_html, waveform_plot, info_text, observed_intensity_path
881
+
882
+ except Exception as e:
883
+ logger.error(f"事件切換時發生錯誤: {e}")
884
+ return None, None, f"錯誤: {str(e)}", None
885
+
886
+
887
  def create_input_station_map(selected_stations, epicenter_lat, epicenter_lon):
888
  """創建輸入測站分布地圖:顯示所有測站 + 突顯被選中的 25 個"""
889
  import folium
 
1248
 
1249
  # 綁定事件
1250
  event_dropdown.change(
1251
+ fn=on_event_change,
1252
+ inputs=[event_dropdown, start_slider, duration_slider, epicenter_lon_input, epicenter_lat_input],
1253
+ outputs=[input_station_map, waveform_plot, info_output, observed_intensity_image]
1254
  )
1255
 
1256
  load_waveform_btn.click(
 
1265
  outputs=[observed_intensity_image, predicted_intensity_map, stats_output]
1266
  )
1267
 
1268
+ # 應用啟動時自動載入預設地震事件的波形
1269
+ demo.load(
1270
+ fn=on_event_change,
1271
+ inputs=[event_dropdown, start_slider, duration_slider, epicenter_lon_input, epicenter_lat_input],
1272
+ outputs=[input_station_map, waveform_plot, info_output, observed_intensity_image]
1273
+ )
1274
+
1275
  demo.launch()
changelog.md CHANGED
@@ -4,6 +4,13 @@
4
 
5
  ## [Unreleased]
6
 
 
 
 
 
 
 
 
7
  ### Changed
8
  - **規格理念調整**:從「穩定可靠系統」改為「互動式教育展示 Demo」
9
  - 強調預裝化設計:所有資源(模型、Vs30、波形、測站表)預裝於 HF Space,無需運行時下載
@@ -24,10 +31,9 @@
24
  - 更新「快速參考」與「進一步閱讀」指向新的模塊化規格
25
  - 更新「專案結構」說明 spec 資料夾的模塊化檔案
26
 
27
- ### Added
28
- - 模塊化規格文件(`spec/00-*.md` `spec/04-*.md`)
29
- - Copilot 開發指南(`.github/copilot-instructions.md`)
30
- - 完整的錯誤處理策略文檔(`spec/03-error-handling.md`)
31
 
32
  ### Fixed
33
  - (待填)
 
4
 
5
  ## [Unreleased]
6
 
7
+ ### Added
8
+ - **UI 流程自動化**(2025-10-26)
9
+ - 應用啟動時自動載入預設地震事件的波形地圖(測站分布 + 波形圖)
10
+ - 地震事件切換時同步自動更新波形地圖與實際觀測圖
11
+ - 新增 `on_event_change()` callback 協調多個 UI 組件的聯動更新
12
+ - 新增 `demo.load` 事件綁定,實現應用啟動自動初始化
13
+
14
  ### Changed
15
  - **規格理念調整**:從「穩定可靠系統」改為「互動式教育展示 Demo」
16
  - 強調預裝化設計:所有資源(模型、Vs30、波形、測站表)預裝於 HF Space,無需運行時下載
 
31
  - 更新「快速參考」與「進一步閱讀」指向新的模塊化規格
32
  - 更新「專案結構」說明 spec 資料夾的模塊化檔案
33
 
34
+ - **Gradio 事件綁定優化**
35
+ - `event_dropdown.change` 現使用 `on_event_change()` 而非 `on_event_select()`
36
+ - 一次事件切換可同時更新波形地圖、波形圖、實際觀測圖
 
37
 
38
  ### Fixed
39
  - (待填)