編輯 | 究查 | 歷程 | 原始

---
base_path: "doc/curtis/prompt/scanimpl_analysis"

script_path: "script"

B1.1 分析方法集合:

請依 @Delphi_套件相依.md 裡 「依功能拆分模組與第三方套件綁定分析」要項
對 @CB_IMGPSScanImp.pas 檔案進行分析,將合於該分類的方法名集合找出來
生成對應的 json 檔, 該生成的 json 檔可用來代表 @CB_IMGPSScanImp.pas.bk
拆分前的每個方法,其分類是什麼,其所在區段是什麼,最後該 json 檔將餵入
腳本,透過腳本執行,進行檔案拆分及測試,而不是透過 AI 拆分

以下是詳細規格需求:

B1.1.1. 輸入檔案

  • 程式需讀取同一目錄下的 CB_IMGPSScanImp.pas.bk 檔案。

B1.1.2. 方法擷取

  • 尋找檔案中所有以 procedure TCB_IMGPSScanX.function TCB_IMGPSScanX. 開頭的行。
  • 紀錄每個方法的:
    • lIndex:該方法在檔案中的起始行號(從 1 開始計算)。
    • methodName:方法的完整簽名字串 (例如:procedure TCB_IMGPSScanX.StatrTwainScan;, procedure TCB_IMGPSScanX.OnAcquire( const DibHandle : THandle;)。

B1.1.3. 計算 rIndex

  • 每個方法的結束行 (rIndex) 可以假設是下一個方法開始的前一行 (lIndex - 1)。
  • 如果是最後一個方法,它的 rIndex 應該是檔案的總行數。

B1.1.4. 分類邏輯 (tags)

我需要你將找到的每個方法,分配到對應的 `tags`。
請根據以下關鍵字進行簡單的字串比對分類 (如果不在此列表內,則預設分類到 `"UIView"` / `"UIView.misc"`):
  • ScannerControl (硬體掃描控制模組)

    • StatrTwainScan, OnAcquire, initkscan, CheckScannerConfig, PageEnd, PageDone, R_W_Scanini, GetDefScanIni -> ScannerControl.twainWrapper
  • ImageProcessor (影像處理與轉換模組)

    • DeskewImg, Rotate, CropImg, ImageReSize_FormID, ImageReSize_tmp, CheckNeedCrop -> ImageProcessor.transformer
    • ConvertToBW, ConvertToGray, Image_Smooth, NegativeImg, CleanupBorder -> ImageProcessor.converter
    • MpsGetBarcode, Get_OMR -> ImageProcessor.barcodeRecognizer
    • FindPoint, CheckSize, GetSiteOMR -> ImageProcessor.anchorAnalyzer
  • TransportManager (安全傳輸與 API 通訊模組)

    • ProcessServlet, ProcessServlet_Get, ProcessServlet_FormData -> TransportManager.requestWrapper
    • upFile, dnFile, dnFile_Get, GetftpInfo, SetFtpInfo, FtpCaseComplete -> TransportManager.fileTransfer
    • En_DecryptionStr_Base64, LoadFileGetMD5, HTTPSClientCertificateValidate -> TransportManager.utilities
    • ZipMainFile, ZipMaskFile, ExecuteUnZip -> TransportManager.payloadArchiver
  • BusinessLogic (業務邏輯與資料解析模組)

    • SetSQLData, GetSQLData, FindSQLData, GetSetInf1, GetSetInf2, GetSetInf3, GetSetInf4, GetSetInf5, GetSetInf6, GetSetInf7 -> BusinessLogic.paramState
    • BarCode2FormID, BarCode2CaseID, FormCode2DocNo, DocNo2DocName, DocNoNeedDiv, CreateDocNo_Info, CreateCustDocNo_Info -> BusinessLogic.entityMapping
    • OMRCheckCase, OMRErr2ini, OMRErrini2List -> BusinessLogic.ormRuleEngine
    • SetUseCase, GetUseCase, OldCasetoNewCase, ErrFormtoCurrentForm, DeleteDocNoFileForESCAN -> BusinessLogic.caseManager
  • UIView (UI 視圖與介面呈現模組)

    • 包含 TreeView 的方法 (如 TreeView1Click, DrawDocItem2 等) -> UIView.treeView
    • 包含 ISB, ImageScrollBox, ScrollBox 的方法 (如 ISB1Click, CreatePreViewISB 等) -> UIView.scrollView
    • InitialLanguage, DownLanguage -> UIView.i18n
    • DisplayMode, GoViewMode -> UIView.misc
    • DataLoading, Timer2Timer, StatusBar1DblClick -> UIView.statusMessenger

B1.1.5. 方法分類 tags 說明

ScannerController (掃描硬體控制模組)

  • ScannerController.twainWrapper (TWAIN 介面與硬體初始化)
  • ScannerController.acquisitionHandler (硬體取像非同步回呼與後處理)

ImageProcessor

  • ImageProcessor.transformer (影像幾何與物理變換):如各種縮放 (ReSize)、裁切 (CheckNeedCrop)、旋轉 (Rotate)、去斜 (Deskew) 及所有 UI 比例變換等。
  • ImageProcessor.converter (影像色彩與品質轉換):包含黑白轉換 (ConvertToBW)、平滑化 (Smooth)、遮罩處理 (Mask)、浮水印列印 (PrintImg)。
  • ImageProcessor.anchorAnalyzer (特徵定位與 OMR 分析):包含了分析黑點密度的 GetSiteOMR。

TransportManager (傳輸與網路管理模組),新增了:

  • TransportManager.apiClient (RESTful / Servlet 參數與組態拉取)
  • TransportManager.fileTransfer (大檔、影像、FTP 實體傳輸)
  • TransportManager.certificateManager (HTTPS 與 SSL 憑證驗證)
  • TransportManager.payloadArchiver (ZIP 壓縮、解壓縮與進匯出封裝)

BusinessLogic

  • BusinessLogic.systemInternal': 系統參數與組態儲存庫 (Config & Parameter Repository),
  • BusinessLogic.configRepository: 系統參數與組態儲存庫 (Config & Parameter Repository),
  • BusinessLogic.ormRuleEngine': OMR 與業務規則檢核引擎 (OMR & Business Rule Engine),
  • BusinessLogic.entityMapping: 領域實體對映與結構管理器 (Entity Mapping & Structure Manager),
  • BusinessLogic.entityModel: 領域實體對映與結構管理器 (Entity Mapping & Structure Manager),
  • BusinessLogic.fileManager': 案件異動與舊案引用處理器 (Case Modification & Legacy Handler),
  • BusinessLogic.caseManager': 案件異動與舊案引用處理器 (Case Modification & Legacy Handler),
  • BusinessLogic.activeXWrapper': 處理 ActiveX 相關,

UIView

  • UIView.treeView:樹狀結構呈現與操作 (如 TreeView 的節點刷新、拖曳、點擊)
  • UIView.listView:清單結構呈現 (如 PageLV, AttListBox)
  • UIView.imageScrollBox:影像預覽與捲動 (對應 EnImgScr / TImageScrollBox 相關的視覺控制與預覽)
  • UIView.toolBar:互動工具與面板按鈕 (如各類 BtnClick、FC 分類按鈕)
  • UIView.popupMenu:快顯選單控制 (各類 PMxxxClick 或是 PopupMenuPopup)
  • UIView.i18n:多國語言與翻譯載入
  • UIView.feedback:系統狀態與進度回饋 (包含 Timer、DataLoading、StatusBar)

B1.1.5. 輸出格式

  • JSON 輸出的結構應該類似這樣:
    json [ { "matcher": "procedure TCB_IMGPSScanX.OnAcquire( const DibHandle : THandle;", "tags": [ "ScannerController", "ScannerController.acquisitionHandler" ], "deps": [], "lIndex": "4444", "rIndex": "4476", "description": "" } ]
  • 盡量將相同 tags 的 items 群組在一個 block 內。
  • deps 保持空陣列

B1.2 分類結果生成:

B1.2.1 生成分類結果 json - tags 說明:

透過 B1.1 取得的結果將各個方法名進行分類,分類時請合於 @Delphi_套件相依.md
的分類方法,並依 "B1.1.5 方法分類 tags 說明" 判定其 tags 屬性

example:
pascal // CB_IMGPSScanImp.pas, 假定該分類為 ImageProcessor.anchorAnalyzer function TCB_IMGPSScanX.GetSiteOMR(FileName,Site:String;bt: Integer): Integer;

{
  "matcher": "function TCB_IMGPSScanX.GetSiteOMR(FileName,Site:String;bt: Integer): Integer;",
  "tags": [
    "ImageProcessor",
    "ImageProcessor.anchorAnalyzer"
  ],
  "deps": [],
  "lIndex": "5173",
  "rIndex": "5226",
  "description": ""
}

B1.2.2 生成分類結果 json - 輸出位置說明:

  • B1.2.2.1 - 若 tag 名其一綴包含 ScannerController:
    > output: {{base_path}}/scanimpl_annalysis.ScannerController.json
  • B1.2.2.2 - 若 tag 名其一綴包含 BusinessLogic:
    > output: {{base_path}}/scanimpl_annalysis.BusinessLogic.json
  • B1.2.2.3 - 若 tag 名其一綴包含 ImageProcessor:
    > output: {{base_path}}/scanimpl_annalysis.ImageProcessor.json
  • B1.2.2.4 - 若 tag 名其一綴包含 TransportManager:
    > output: {{base_path}}/scanimpl_annalysis.TransportManager.json
  • B1.2.2.5 - 若 tag 名其一綴包含 UIView:
    > output: {{base_path}}/scanimpl_annalysis.UIView.json

B1.3 生成分類結果 json 驗證腳本

生成腳本,以驗證 "B1.2 分類結果生成" 是否正確,該腳本檔針對 @CB_IMGPSScanImp.pas.bk
與 '"B1.2 分類結果生成" 生成之 json'(以下簡程 [B1.2Jsons] ) 進行驗證

B1.3.1 驗證原則說明:

  • B1.3.1.1: [B1.2Jsons] 其方法名(matcher) 必須等於 @CB_IMGPSScanImp.pas 所對應的 lIndex
  • B1.3.1.2: [B1.2Jsons] 裡的 rIndex, lIndex 不可能為 -1, 因為該值必須正確映射 @CB_IMGPSScanImp.pas.bk 的行號
  • B1.3.1.3: 移除 @CB_IMGPSScanImp.pas 中於 [B1.2Jsons] 所標示之區段另存為文字檔,並於腳本結束時,顯其文字檔路徑,我想人工審核
    > output: {{base_path}}/scanimpl_annalysis.remainings.txt

B1.3.2 驗證腳本路徑:

output: {{script_path}}/scanimpl_annalysis_json.test.js