From 0756bf12d10cf1b7f78c571de0a9ad69cbaeb7ca Mon Sep 17 00:00:00 2001
From: curtis <curtis@i-mps.com>
Date: 星期一, 30 三月 2026 14:24:17 +0800
Subject: [PATCH] fix: 更新內部引用方法參照

---
 doc/curtis/prompt/scanimpl_analysis/scanimpl_annalysis.BusinessLogic.json |  364 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 364 insertions(+), 0 deletions(-)

diff --git a/doc/curtis/prompt/scanimpl_analysis/scanimpl_annalysis.BusinessLogic.json b/doc/curtis/prompt/scanimpl_analysis/scanimpl_annalysis.BusinessLogic.json
new file mode 100644
index 0000000..cff2780
--- /dev/null
+++ b/doc/curtis/prompt/scanimpl_analysis/scanimpl_annalysis.BusinessLogic.json
@@ -0,0 +1,364 @@
+[
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetSetInf1 : Boolean; //取系統設定資訊Mode1 DOC_INF",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.paramState",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "En_DecryptionStr_Base64",
+      "ProcessServlet_Get"
+    ],
+    "lIndex": "5665",
+    "rIndex": "5707",
+    "description": "向伺服器請求 DOC_INF 資料表資訊(模式 1)。方法會加密目前伺服器時間戳記並發送 HTTP GET 請求。若成功取得資料(狀態碼 '0'),則利用 SetSQLData 將結果解析並存入本地快取 Doc_Inf_List;若發生通訊錯誤或 Session 逾時(偵測到登入頁面標籤),則會記錄對應的 HttpErrStr 並返回 False。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetSetInf2 : Boolean; //取系統設定資訊Mode2  DM_FORM_INF",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.paramState",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "En_DecryptionStr_Base64",
+      "ProcessServlet_Get"
+    ],
+    "lIndex": "5708",
+    "rIndex": "5746",
+    "description": "向伺服器請求 DM_FORM_INF 表單關聯資訊(模式 2)。流程包含加密請求參數與發送 GET 請求。此方法負責取得表單間的主從關係、相依性以及互斥規則,並將回傳的資料行解析後存入本地的 DM_FORM_INF_List。若通訊失敗或 Session 過期,會設定錯誤訊息並中斷流程。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetSetInf3 : Boolean; //取系統設定資訊mode3  FORM_INF",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.paramState",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "En_DecryptionStr_Base64",
+      "ProcessServlet_Get"
+    ],
+    "lIndex": "5747",
+    "rIndex": "5786",
+    "description": "向伺服器請求 FORM_INF 表單詳細資料(模式 3)。方法會取得包含表單名稱、說明、分類、定位點類型(ANCHOR/FRAME)、最大頁數及預設高寬等中繼數據。取得的資料會被快取至 FORM_INF_List,作為影像處理(如自動縮放與 OMR 檢核)的重要依據。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetSetInf4 : Boolean; //取系統設定資訊mode4  CHECK_RULE_INF",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.paramState",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "En_DecryptionStr_Base64",
+      "ProcessServlet_Get"
+    ],
+    "lIndex": "5787",
+    "rIndex": "5827",
+    "description": "向伺服器請求 CHECK_RULE_INF 檢核規則資訊(模式 4)。此方法取得包含檢核代號、描述及顯示類型在內的驗證規則,並將其儲存於 CHECK_RULE_INF_List。最後會呼叫 CheckRule2OMRErrInfo,將取得的規則同步更新至 OMR 錯誤資訊記錄中,以確保前端檢核邏輯與伺服器同步。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetSetInf5 : Boolean; //取系統設定資訊mode5  MEMO_INF",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.paramState",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "En_DecryptionStr_Base64",
+      "ProcessServlet_Get"
+    ],
+    "lIndex": "5828",
+    "rIndex": "5866",
+    "description": "向伺服器請求 MEMO_INF 註記資訊(模式 5)。方法會取得預設的註記內容及其對應的類型名稱,並將其快取至 MEMO_INF_List。這些資料通常用於 UI 上的註記選擇選單,方便掃瞄人員在影像處理過程中快速標註預設的說明文字。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetSetInf6 : Boolean; //取系統設定資訊mode5  WORK_INF",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.paramState",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "En_DecryptionStr_Base64",
+      "ProcessServlet_Get"
+    ],
+    "lIndex": "5867",
+    "rIndex": "5906",
+    "description": "向伺服器請求 WORK_INF 工作參數資訊(模式 6)。此方法取得當前工作項目的全域參數(如 PARA_NO 與 PARA_CONTENT),並儲存於 WORK_INF_List。這些參數控制了掃瞄器的預設行為(如 DPI、雙面掃瞄等),是系統初始化環境設定的關鍵步驟。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetSetInf7 : Boolean; //取系統設定資訊mode5  LASTEST_FORM_INF",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.paramState",
+      "API 呼叫相關"
+    ],
+    "deps": [
+      "En_DecryptionStr_Base64",
+      "ProcessServlet_Get"
+    ],
+    "lIndex": "5907",
+    "rIndex": "5946",
+    "description": "向伺服器請求 LASTEST_FORM_INF 最新表單版本資訊(模式 7)。方法會獲取各文件編號對應的最新表單 ID 與版本號,並儲存於 LASTEST_FORM_INF_List。此資訊用於確保使用者掃瞄的是最新版表單,或是用於舊案件轉檔時與歷史版本對照。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DeleteDocNoFileForESCAN(Path,DocNo:String):Boolean;  //刪除指定DocNo文件",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.caseManager",
+      "檔案操作"
+    ],
+    "deps": [
+      "DeleteDocNoFile",
+      "LoadFromFile",
+      "SaveToFile",
+      "_DelTree"
+    ],
+    "lIndex": "6141",
+    "rIndex": "6174",
+    "description": "在補件模式 (ESCAN) 下刪除屬於特定文件類型 (DocNo) 的影像。方法會從索引清單 (ContextList) 的末尾開始向前遍歷,識別符合目標文件編號或附件名稱的圖檔。若該檔案並非預先存在的(ISExistImg 返回 False),則執行實體刪除並從索引清單中移除。若整個文件目錄因此清空,則會進一步移除該目錄並從文件清單中刪除紀錄。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.BarCode2CaseID : String; //Barcode依規則轉成CaseID",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.entityMapping"
+    ],
+    "deps": [],
+    "lIndex": "8155",
+    "rIndex": "8172",
+    "description": "從目前掃瞄到的條碼清單中提取案件編號 (CaseID)。方法會遍歷條碼暫存對象 (MpsBarcodeinf),並將第一個長度正好等於預設 CaseIDLength 的條碼值視為合法的案件編號返回。若遍歷結束仍未找到符合長度限制的條碼,則返回空字串。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.BarCode2FormID : String; //Barcode依規則轉成FormID",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.entityMapping"
+    ],
+    "deps": [],
+    "lIndex": "8173",
+    "rIndex": "8195",
+    "description": "從目前掃瞄到的條碼清單中識別有效的表單代碼 (FormID)。方法會過濾長度符合 FormIDLength 的條碼,並呼叫 FormIDAppear 驗證其格式。若初步驗證通過,會進一步呼叫 FormIDExists 確認該代碼在系統中已註冊且可用。返回第一個完全符合條件的表單代碼,否則返回空。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SetSQLData(ColumeStr:String;FromList,ToList:TStringlist); //把SQL值塞入",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.paramState"
+    ],
+    "deps": [],
+    "lIndex": "8651",
+    "rIndex": "8662",
+    "description": "將 SQL 查詢結果格式化後塞入目標字串清單。此方法會先清除目標清單 (ToList),第一行加入欄位定義字串 (ColumeStr),隨後將來源清單 (FromList) 中扣除標題後的資料列依序填入,用於更新系統本地的資料快取。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetSQLData(TableList:TStringlist;Colname:String;colNo:Integer):String; //依欄位及索引取值",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.paramState"
+    ],
+    "deps": [],
+    "lIndex": "8663",
+    "rIndex": "8723",
+    "description": "從結構化字串清單中提取特定欄位的值。邏輯如下:1. 解析 TableList 的第一行(欄位定義)以確定目標欄位 (Colname) 的索引位置。2. 讀取指定行 (colNo) 的資料字串,該字串使用 '!@!' 作為欄位分隔符。3. 透過循環將資料拆分並存入臨時清單,最後返回對應欄位索引位置的數值內容。若找不到欄位或索引超出範圍,則返回空字串。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FindSQLData(TableList:TStringlist;ColumeStr,KeyColumeStr,KeyStr:String;ColNo:Integer;Var ResultList:TStringlist):Boolean; //找指定的資料",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.paramState"
+    ],
+    "deps": [],
+    "lIndex": "8724",
+    "rIndex": "8802",
+    "description": "在資料快取清單中搜尋符合鍵值的紀錄。核心邏輯:1. 支援多個鍵值比對 (KeyColumeStr 與 KeyStr 可包含多個欄位)。2. 若 ColNo 為 0,則從頭搜尋清單;若非 0 則僅檢查該指定行。3. 搜尋時會調用 GetSQLData 提取欄位值並與目標鍵值比對。4. 一旦匹配成功,會將 ColumeStr 中指定的所有欄位名稱及其對應數值(格式為「欄位名,數值」)填入 ResultList 中並返回 True。若搜尋無結果則返回 False。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.OldCasetoNewCase(CaseID:String); //將舊案份數轉成新規則",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.caseManager",
+      "舊案/異動件處理"
+    ],
+    "deps": [
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "10456",
+    "rIndex": "10524",
+    "description": "將舊系統格式的案件文件份數轉換為新系統規則。方法會載入案件的文件目錄清單 (CaseDocNo.dat),並解析由全域變數傳入的舊案文件編號與名稱清單(以 Tab 字串傳遞)。流程中會針對每個目錄編號統計其在舊資料中的出現次數,並將統計後的份數結果更新至 CaseDocNo_Copies.dat 檔案中,以完成歷史資料的規格對接。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.ErrFormtoCurrentForm(CaseID,EFormID,CFormID:String);//將舊案的錯誤FormID改正確的FormID",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.caseManager",
+      "舊案/異動件處理"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "MoveFile",
+      "RenameFile",
+      "SaveToFile"
+    ],
+    "lIndex": "10525",
+    "rIndex": "10574",
+    "description": "修正案件中歸類錯誤的表單代碼及其關聯檔案。邏輯如下:1. 取得錯誤與正確表單對應的文件編號。2. 遍歷案件下的所有文件目錄,載入各目錄的影像索引檔 (Context.dat)。3. 識別檔名中包含 EFormID 的影像,執行實體重新命名並更新索引。4. 若該目錄編號與錯誤文件編號一致,則會執行 MoveFile 搬移整個目錄至新路徑,並同步更新總文件清單 (CaseDocNo.dat),確保影像與分類資訊的一致性。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.SetUseCase(Mode:Char;Path,DocDir,FormCaseID,ToCaseID:String);   //記錄引用其他案件 A:加入 D:刪掉",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.caseManager"
+    ],
+    "deps": [],
+    "lIndex": "11506",
+    "rIndex": "11526",
+    "description": "管理案件間的文件引用紀錄。此方法使用 Tinifile 操作案件目錄下的 UseCase.ini 檔案。當 Mode 為 'A' (Add) 時,會在指定的 DocDir 區段下紀錄來源案件 (FROM_CASEID) 與目標案件 (TO_CASEID) 的引用關係;當 Mode 為 'D' (Delete) 時,則會移除該目錄對應的引用資訊。這用於追蹤不同案件間影像資源的重複利用情況。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.GetUseCase(Mode:Char;Path,DocDir:String):String;  //F:取被引用 To:引用",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.caseManager"
+    ],
+    "deps": [],
+    "lIndex": "11527",
+    "rIndex": "11546",
+    "description": "取得指定目錄的文件引用資訊。方法讀取 UseCase.ini 設定檔,根據 Mode 參數返回對應的案件 ID:模式 'F' 返回被引用的來源案件 ID (FROM_CASEID),模式 'T' 返回執行引用的目標案件 ID (TO_CASEID)。若查無紀錄則返回空字串。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.FormCode2DocNo(FormCode:String):String;   //FormCode轉Docno",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.entityMapping",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "11994",
+    "rIndex": "12018",
+    "description": "將表單代碼 (FormCode) 轉換為對應的文件編號 (DocNo)。方法遍歷預載的 FormID_List,若找到匹配的表單代碼,則返回 DocNo_List 中相同索引位置的數值。若表單代碼不在清單中(通常為使用者自訂的文件),則預設截取代碼的前 8 位字元作為文件編號返回。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DocNo2DocName(CaseID,DocNo:String):String; //Docno轉Doc名稱",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.entityMapping",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "12029",
+    "rIndex": "12066",
+    "description": "解析文件編號對應的描述性名稱。優先權邏輯為:1. 若編號符合附件名稱 (AttName),返回「未歸類」。2. 從系統定義快取 (Doc_Inf_List) 中搜尋對應的描述 (DOC_U_DESC)。3. 若系統定義查無結果,則呼叫 GetCustomDocName 從案件本地的自訂文件設定中尋找對應名稱。此方法確保 UI 上能顯示人類可讀的文件類別名稱。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.DocNoNeedDiv(DocNo:String):Boolean; //是否是需分份數的文件代號",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.entityMapping",
+      "轉換區(名稱/格式轉換)"
+    ],
+    "deps": [],
+    "lIndex": "12100",
+    "rIndex": "12112",
+    "description": "檢查指定的文件類型是否需要執行頁面拆分(分份數)。方法透過 FindSQLData 在 Doc_Inf_List 中查詢該編號的 'IS_DOC_DIV' 欄位,若旗標值為 'Y' 則返回 True,否則返回 False。此設定決定了掃瞄流程中是否需要根據條碼自動切分文件目錄。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.OMRCheckCase(CaseID:String):Boolean; //OMR檢核",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.ormRuleEngine",
+      "OMR 檢核"
+    ],
+    "deps": [
+      "FileExists",
+      "FindPoint",
+      "GetSiteOMR",
+      "ImageReSize_FormID",
+      "ImageResize",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "12255",
+    "rIndex": "12950",
+    "description": "執行案件的自動化 OMR 規則檢核,這是確保掃瞄案件合規性的核心邏輯。程序流程:1. 初始化檢核日誌。2. 識別主文件並驗證必要文件是否缺漏、相依與互斥文件是否衝突、以及表單是否已停用。3. 檢查各文件類型是否超過預設的最大頁數。4. 針對案件內每張影像,執行十字定位點縮放 (ImageReSize_FormID) 後,載入對應表單的 XML 規則檔。5. 執行欄位級檢核,包含必填項 (settype1)、跨文件欄位關聯 (settype3/settype8)、相依文件需求 (settype4) 及備註填寫要求 (settype6) 等。6. 將所有檢核失敗原因紀錄至 Checkerr.ini。最終返回案件是否通過所有檢核規則。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.OMRErr2ini(CaseID,Reason,FileName,Site,RelaFileName,RelaSite,Anchor,Anchor1:String;Del,Ingnore,Display:Boolean); //OMR檢核失敗寫入ini",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.ormRuleEngine",
+      "OMR 檢核"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile",
+      "SaveToFile"
+    ],
+    "lIndex": "12951",
+    "rIndex": "12990",
+    "description": "紀錄 OMR 檢核失敗的詳細資訊。方法根據 Display 旗標決定紀錄方式:若為 True,則在案件目錄下的 Checkerr.ini 中建立新的錯誤序號區段,詳細紀錄失敗原因、檔案路徑、OMR 座標點、關聯檔案及定位點類型,用於後續 UI 呈現;若為 False,則僅將錯誤原因字串附加於 CheckMemo.dat 純文字日誌中,作為背景紀錄之用。"
+  },
+  {
+    "matcher": "Procedure TCB_IMGPSScanX.OMRErrini2List(CaseID:String;ErrlistForm:TErrlistForm); //OMR檢核失敗從ini寫入ListView",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.ormRuleEngine",
+      "UIView",
+      "UIView.listView",
+      "OMR 檢核"
+    ],
+    "deps": [],
+    "lIndex": "12991",
+    "rIndex": "13020",
+    "description": "將檢核失敗紀錄從 INI 設定檔載入至 UI 介面。方法會讀取 Checkerr.ini,遍歷所有錯誤紀錄,並過濾掉已標記為刪除 (Del) 的項目。將符合條件的錯誤原因填入 ErrlistForm 中的 ListView 元件,供使用者查看與修正。若清單中仍存在錯誤,會同步停用介面上的上傳按鈕以防止不合規案件送出。"
+  },
+  {
+    "matcher": "function TCB_IMGPSScanX.OMRErrini2ListForLog(CaseID: String): String;",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.ormRuleEngine",
+      "OMR 檢核"
+    ],
+    "deps": [
+      "LoadFromFile"
+    ],
+    "lIndex": "13021",
+    "rIndex": "13058",
+    "description": "彙整系統中所有活動案件的 OMR 檢核錯誤訊息。方法讀取全域的 CaseList.dat,依次遍歷每個案件子目錄下的 Checkerr.ini,收集所有未被移除的錯誤原因,並將其合併為一個完整的文字區塊返回。此功能主要用於產生系統運行日誌,方便追蹤與審查多案件的檢核狀態。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CreateDocNo_Info(CaseID:String):String; //產生 DocNo[tab]份數[tab]總頁數[tab]是否異動[換行]DocNo[tab]份數[tab]總頁數[tab]是否異動",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.entityMapping",
+      "上傳前置資料產生"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "13985",
+    "rIndex": "14068",
+    "description": "產生案件內標準文件(非自訂)的彙總資訊字串。方法讀取 CaseDocNo.dat,針對每個非 'ZZZZZ' 開頭的文件編號,計算其在案件中的總份數、累計總頁數,並檢查編輯狀態(異動旗標)。結果以「編號[Tab]份數[Tab]頁數[Tab]狀態」的格式逐行組成,作為案件上傳時與伺服器比對資料完整性的核心依據。"
+  },
+  {
+    "matcher": "Function TCB_IMGPSScanX.CreateCustDocNo_Info(CaseID:String):String; //產生自訂文件 DocName[tab]份數[tab]總頁數[tab]是否異動[#13#10]DocName[tab]份數[tab]總頁數[tab]是否異動",
+    "tags": [
+      "BusinessLogic",
+      "BusinessLogic.entityMapping",
+      "上傳前置資料產生"
+    ],
+    "deps": [
+      "FileExists",
+      "LoadFromFile"
+    ],
+    "lIndex": "14069",
+    "rIndex": "14121",
+    "description": "產生案件內自訂文件的彙總資訊字串。方法專門處理代碼開頭為 'ZZZZZ' 的文件目錄,透過 GetCustomDocName 取得使用者定義的文件名稱,並彙整其總份數、總頁數與編輯異動狀態。最終格式與標準文件一致,但首位欄位改為顯示自訂名稱,確保自訂類別的文件也能正確被伺服器識別與儲存。"
+  }
+]
\ No newline at end of file

--
Gitblit v1.8.0