問題
MdrToFlowConverter 目前把 MacroDroid 的 options 原封不動塞進 NexFlow 的 config:
// MdrToFlowConverter.kt
return TriggerJson(
id = ...,
type = mappedType ?: "MANUAL",
config = trigger.options, // ← 直接沿用,沒有做 key 對應
)
但兩邊的欄位名稱完全不同。以時間觸發為例,NexFlow 的 TIME 期待的 key 是
time / repeat / days(見 app/.../config/TriggerConfig.kt),
MacroDroid 匯出的則是自己的一套(m_hour、m_minute 之類)。
結果:即使 class type 有對照、匯入時看起來成功,打開流程會發現設定欄位是空的,
使用者得自己重填一次。而且因為沒有警告,這是靜默的。
要做什麼
需要一層 option key 的對應。可能的做法(歡迎提出更好的):
- 每個 type 一個
Map<String, String> 的 key 對照表 —— 簡單,但處理不了值的格式差異
(例如 MacroDroid 分開存 hour/minute,NexFlow 存 "HH:mm" 字串)
- 每個 type 一個轉換 function(
(JsonObject) -> JsonObject)—— 彈性夠,程式碼多一點
- 折衷:多數用對照表,少數需要格式轉換的寫 function
也要決定轉不出來的欄位怎麼辦:丟掉?留著並加警告?
為什麼標 help wanted 而不是 good first issue
範圍比「加一行對照」大,而且需要先做設計決策。但每個 type 可以獨立進行 ——
先做 TIME 一種、把架構立起來,剩下的可以拆成後續的 good first issue。
驗收標準(以第一個 PR 為例)
- 選一到兩個 type(建議
TIME 與 BATTERY)做完整的 option 轉換
- 架構讓後續新增 type 只要加一筆對照,不用改核心邏輯
MdrToFlowConverterTest 有「匯入後的 config key 是 NexFlow 期待的 key、值也正確」的測試
- 轉不出來的欄位有對應的 warning,不要靜默丟掉
動手前先在這串留言講一下你打算怎麼做,避免方向不合白做工。
問題
MdrToFlowConverter目前把 MacroDroid 的 options 原封不動塞進 NexFlow 的 config:但兩邊的欄位名稱完全不同。以時間觸發為例,NexFlow 的
TIME期待的 key 是time/repeat/days(見app/.../config/TriggerConfig.kt),MacroDroid 匯出的則是自己的一套(
m_hour、m_minute之類)。結果:即使 class type 有對照、匯入時看起來成功,打開流程會發現設定欄位是空的,
使用者得自己重填一次。而且因為沒有警告,這是靜默的。
要做什麼
需要一層 option key 的對應。可能的做法(歡迎提出更好的):
Map<String, String>的 key 對照表 —— 簡單,但處理不了值的格式差異(例如 MacroDroid 分開存 hour/minute,NexFlow 存
"HH:mm"字串)(JsonObject) -> JsonObject)—— 彈性夠,程式碼多一點也要決定轉不出來的欄位怎麼辦:丟掉?留著並加警告?
為什麼標 help wanted 而不是 good first issue
範圍比「加一行對照」大,而且需要先做設計決策。但每個 type 可以獨立進行 ——
先做
TIME一種、把架構立起來,剩下的可以拆成後續的 good first issue。驗收標準(以第一個 PR 為例)
TIME與BATTERY)做完整的 option 轉換MdrToFlowConverterTest有「匯入後的 config key 是 NexFlow 期待的 key、值也正確」的測試動手前先在這串留言講一下你打算怎麼做,避免方向不合白做工。