curtis
21小時前 0477cdc73e835cea8f827e04f548ef0a6e23860b
reassemble/mermaid/omr/OMRCheckCase.md
@@ -1,31 +1,33 @@
```mermaid
graph TD
    Start([開始 OMRCheckCase]) --> Init[刪除舊日誌/初始化變數]
    Init --> GetMainID[獲取 MainFormID]
flowchart TD
    Start([開始 OMRCheckCase]) --> Init[刪除暫存檔並初始化變數]
    Init --> GetMainID[取得主文件 ID]
    
    GetMainID --> MainCheck{MainFormID 是否存在?}
    MainCheck -- 否 --> Phase2[進入檔案清單檢查]
    MainCheck -- 是 --> CheckDep[檢查主要文件頁數 / 相依文件 / 互斥文件]
    GetMainID --> CaseMain{主文件 ID 是否存在?}
    
    CheckDep --> Phase2
    Phase2 --> LoopContext[遍歷 Context.dat 檢查停用文件]
    CaseMain -- 是 --> CheckMajor[執行主要文件頁數檢核]
    CheckMajor --> CheckDeps[執行相依與互斥文件檢核]
    CheckDeps --> CheckDisabled
    
    LoopContext --> MaxPage[檢查各表單是否超過最大頁數]
    MaxPage --> LoopOMRFiles{遍歷 OMRFileList 進行欄位檢核}
    CaseMain -- 否 --> CheckDisabled[檢查所有表單是否停用]
    
    LoopOMRFiles -- 每張影像 --> Resize[執行十字定位縮放 ImageReSize_FormID]
    Resize --> LoadXML[載入對應 XML 規則]
    CheckDisabled --> MaxPage[檢查表單最大頁數限制]
    MaxPage --> LoopFiles[遍歷 OMRFileList]
    
    LoadXML --> CheckField1[Type 1: 必填欄位檢核]
    CheckField1 --> CheckField3[Type 3: 關聯欄位檢核]
    CheckField3 --> CheckField8[Type 8: 互斥填寫檢核]
    CheckField8 --> CheckField4[Type 4: 欄位有值附文件檢核]
    CheckField4 --> CheckField5[Type 5: 欄位有值不附文件檢核]
    CheckField5 --> CheckField6[Type 6: 欄位有值寫備註檢核]
    CheckField6 --> SaveValue[Type 7: OMR 帶值處理]
    LoopFiles --> Resize[影像十字定位點縮放]
    Resize --> LoadRules[載入對應 XML 規則檔]
    
    SaveValue --> NextOMRFile[下一個影像]
    NextOMRFile --> LoopOMRFiles
    LoadRules --> Rule1[必填欄位檢核 settype1]
    Rule1 --> Rule3[相關欄位關聯檢核 settype3]
    Rule3 --> Rule8[互斥欄位關聯檢核 settype8]
    Rule8 --> Rule4[相依文件檢核 settype4]
    Rule4 --> Rule5[互斥文件檢核 settype5]
    Rule5 --> Rule6[備註檢核 settype6]
    Rule6 --> Rule7[OMR 帶值處理 settype7]
    
    LoopOMRFiles -- 結束 --> Finish([返回 CaseOk 結果])
    Rule7 --> NextFile[下一張影像]
    NextFile --> LoopFiles
    LoopFiles -- 遍歷結束 --> FinalResult[返回 CaseOk 結果]
    FinalResult --> End([結束])
```