

■ MỤC LỤC
  1. Tổng quan mục tiêu
  2. Mô tả Input (Source Code)
  3. Mô tả Output mong muốn (Tài liệu phân tích)
  4. Yêu cầu chức năng (Functional Requirements)
  5. Yêu cầu xử lý từng Section Output
  6. Yêu cầu về Prompt / AI Flow
  7. Yêu cầu phi chức năng
  8. Ví dụ tham chiếu Input → Output

================================================================================
1. TỔNG QUAN 
================================================================================

- Nhận đầu vào là một tập hợp source code Java từ hệ thống legacy (BSS/OSS)
- Tự động phân tích cấu trúc, logic nghiệp vụ, luồng xử lý, dependencies
- Sinh ra tài liệu phân tích nghiệp vụ chi tiết dạng Markdown
- Tài liệu output phải đạt chất lượng tương đương mẫu trong thư mục OuputSample/

Đối tượng sử dụng: Team phát triển (để hiểu hệ thống cũ khi migration/rebuild)

================================================================================
2. MÔ TẢ INPUT (SOURCE CODE)
================================================================================

2.1. Cấu trúc Input
────────────────────
Input là các file Java source liên quan đến MỘT class nghiệp vụ chính (target class).
Cần cung cấp đầy đủ các file sau:

  (A) FILE CHÍNH (Target Class)
      - File Java chứa class cần phân tích
      - Ví dụ: JKKHakkoSODCC.java (31,120 dòng, 352 methods, 116 fields)
      - Thuộc package: com.fujitsu.futurity.bp.custom.common
      - Nằm trong module: koptBp/ejbModule/

  (B) FILE HẰNG SỐ (Constants) - liên quan trực tiếp
      - Các file định nghĩa hằng số được class chính sử dụng
      - Ví dụ:
        + JKKHakkoSODConstCC.java  (hằng số nghiệp vụ SOD)
        + JKKItntokiStaEndConstCC.java (hằng số trạng thái)
        + JKKSvcConst.java (hằng số dịch vụ)
        + JDKStrConst.java (hằng số chuỗi chung)
        + JKKStrConst.java (hằng số chuỗi KK)
        + JPCModelConstant.java (hằng số model)

  (C) FILE TIỆN ÍCH (Utility Classes)
      - Các class utility được class chính gọi
      - Ví dụ: JKKStringUtil.java

  (D) FILE CBS MESSAGE (Data Transfer Objects / Message Classes)
      - Tất cả các file CBSMsg liên quan đến các SC (Service Component) 
        mà class chính gọi
      - Mỗi SC call thường có 2 file: XXXCBSMsg.java + XXXCBSMsg1List.java
      - Ví dụ: EKK0341B002CBSMsg.java, EKK0341B002CBSMsg1List.java, v.v.
      - Đây là cấu trúc dữ liệu IN/OUT khi gọi các service interface

2.2. Quy tắc xác định phạm vi Input
─────────────────────────────────────
Để parser hoạt động chính xác, cần thu thập đủ source theo quy tắc:

  RULE-1: File chính (target) - BẮT BUỘC
  RULE-2: Tất cả file hằng số mà target import hoặc reference - BẮT BUỘC
  RULE-3: Tất cả file CBSMsg mà target class tạo instance/sử dụng - BẮT BUỘC
  RULE-4: Các utility class mà target gọi trực tiếp - BẮT BUỘC
  RULE-5: File caller (BPCheck classes gọi vào target) - TÙY CHỌN (cần để 
           phân tích INPUT/ServiceIF chính xác hơn)

2.3. Ví dụ cụ thể cho JKKHakkoSODCC
─────────────────────────────────────
  Source/
  ├── koptBp/ejbModule/.../custom/
  │   ├── common/
  │   │   └── JKKHakkoSODCC.java          ← (A) File chính
  │   └── constant/
  │       ├── JKKHakkoSODConstCC.java      ← (B) Hằng số
  │       ├── JKKItntokiStaEndConstCC.java ← (B) Hằng số
  │       └── JKKSvcConst.java             ← (B) Hằng số
  ├── koptCommon/src/eo/common/
  │   ├── constant/
  │   │   ├── JDKStrConst.java             ← (B) Hằng số
  │   │   ├── JKKStrConst.java             ← (B) Hằng số
  │   │   └── JPCModelConstant.java        ← (B) Hằng số
  │   └── util/
  │       └── JKKStringUtil.java           ← (C) Utility
  └── koptModel/src/eo/ejb/cbs/cbsmsg/
      ├── EKK0341B002CBSMsg.java           ← (D) CBS Message
      ├── EKK0341B002CBSMsg1List.java      ← (D) CBS Message List
      ├── ... (tổng ~98 file CBSMsg)
      └── EZM0411A010CBSMsg1List.java

================================================================================
3. MÔ TẢ OUTPUT MONG MUỐN (TÀI LIỆU PHÂN TÍCH)
================================================================================

Output là một bộ tài liệu Markdown, được chia thành nhiều section/file:

  FILE                    | MÔ TẢ                              | ĐỘ ƯU TIÊN
  ────────────────────────┼─────────────────────────────────────┼──────────
  00_INDEX.md             | Mục lục tổng hợp                    | BẮT BUỘC
  01_Overview.md          | Tổng quan + Flow nghiệp vụ (Mermaid)| BẮT BUỘC
  02_Logic_01..N.md       | Chi tiết logic từng method (chia part)| BẮT BUỘC
  05_ParameterIF.md       | Phân loại method + parameter        | BẮT BUỘC
  06_ServiceIF.md         | Danh sách Service Interface         | BẮT BUỘC
  07_CRUD_Matrix.md       | Ma trận CRUD (qua SC call)          | BẮT BUỘC
  08_Fields.md            | Danh sách fields/constants          | BẮT BUỘC
  09_INPUT.md             | Phân tích input (upstream callers)   | CẦN THIẾT
  10_OUTPUT.md            | Phân tích output (DB write/read)    | CẦN THIẾT
  11_ExternalAPI.md       | Phân tích external API              | CẦN THIẾT
  12_ImpactAnalysis.md    | Phân tích ảnh hưởng                 | CẦN THIẾT
  {ClassName}_Spec.md     | Full document tổng hợp (all-in-one) | TÙY CHỌN

================================================================================
4. YÊU CẦU CHỨC NĂNG (FUNCTIONAL REQUIREMENTS)
================================================================================

FR-01: PHÂN TÍCH CẤU TRÚC CLASS
────────────────────────────────
- Parse Java source để trích xuất: tên class, package, số dòng code, 
  tổng số methods, tổng số fields
- Nhận diện layer/module (CC, BPCheck, SC, Model...)
- Trích xuất tất cả import statements và xác định dependency

FR-02: PHÂN TÍCH DEPENDENCY (QUAN HỆ PHỤ THUỘC)
─────────────────────────────────────────────────
- Xác định INCOMING (ai gọi class này): upstream callers
- Xác định OUTGOING (class này gọi ai): downstream services, SC calls
- Phân loại theo layer: BPCheck → CC → SC → DB
- Đếm số lượng SC call, nhóm theo SC code prefix (EKK, EZM, EDK, EKU, ETU...)

FR-03: PHÂN TÍCH METHODS
─────────────────────────
- Trích xuất signature đầy đủ: tên method, parameters, return type
- Đếm LOC (lines of code) cho mỗi method
- Phân loại method theo nhóm nghiệp vụ:
  + Service Call (SC): các method gọi SC (callEKK*, callEZM*...)
  + Mapping (InMsg/OutMsg): các method edit InMsg/OutMsg
  + Edit (Transform): các method chỉnh sửa/biến đổi dữ liệu
  + Query (Get): các method lấy dữ liệu
  + Judgment/Validation: các method kiểm tra/đánh giá điều kiện
  + SOD Order: các method xử lý service order
  + Setter: các method set giá trị
  + BMP Control: các method điều khiển BMP
  + Other: còn lại
- Trích xuất Javadoc/comment mô tả từng method

FR-04: PHÂN TÍCH LOGIC NGHIỆP VỤ CHI TIẾT
───────────────────────────────────────────
- Với MỖI method, phân tích:
  a) Vai trò (role/purpose) - tóm tắt 1-2 câu
  b) Xử lý pattern (Business Logic Steps):
     - Các bước xử lý tuần tự
     - Tất cả điều kiện rẽ nhánh (if/else/switch) kèm giá trị hằng số
     - Vẽ flowchart bằng Mermaid cho luồng chính
  c) Tham số (Parameters): bảng mô tả từng tham số
  d) CRUD Operations: liệt kê tất cả SC call trong method đó
     - CRUD type (C/R/U/D)
     - SC method name
     - SC code
     - Entity/table
     - Mô tả thao tác
  e) Message IDs: liệt kê message/error codes nếu có
  f) Call tree: cây gọi ngược (reverse call tree) - ai gọi method này

FR-05: SERVICE INTERFACE ANALYSIS
──────────────────────────────────
- Bảng INCOMING: liệt kê tất cả class/method gọi vào target class
  + Layer, class name, calling method, target method
- Bảng OUTGOING: liệt kê tất cả SC target class gọi ra ngoài
  + SC Code, số methods, danh sách method đại diện
- Bảng External Class References (non-constant)
  + Class tên, qua method nào, gọi method gì

FR-06: CRUD MATRIX
──────────────────
- Ma trận: SC method × CRUD operation
- Nhận diện CRUD type dựa vào Javadoc keywords:
  + "照会" (inquiry/read) → R
  + "登録" (register/insert) → C
  + "更新" (update) → U
  + "削除" (delete) → D
  + "論理削除" (logical delete) → D
- Nhóm theo SC code prefix để suy đoán entity/table
- Tổng hợp: tổng C/R/U/D counts

FR-07: FIELDS & CONSTANTS ANALYSIS
───────────────────────────────────
- Trích xuất tất cả constants: name, type, value, ý nghĩa (từ comment/Javadoc)
- Trích xuất tất cả instance fields: name, type, ý nghĩa (từ comment/naming)
- Nhận diện ý nghĩa trường từ Japanese comments hoặc naming convention

FR-08: INPUT ANALYSIS
─────────────────────
- Trace ngược upstream: class nào → method nào → gọi vào target class
- Bảng tổng hợp theo layer
- Bảng chi tiết từng caller
- Vẽ Mermaid graph: caller → target

FR-09: OUTPUT ANALYSIS
──────────────────────
- Phân loại DB operations thành WRITE (INSERT/UPDATE/DELETE) và READ (SELECT)
- Nếu class không thao tác DB trực tiếp (qua SC), ghi nhận "qua SC"
- Vẽ Mermaid data flow

FR-10: EXTERNAL API ANALYSIS
─────────────────────────────
- Nhận diện các external service call (CBS_IN, CBS_OUT)
- Phân loại: direct (class trực tiếp gọi) vs indirect (qua dependency)
- Liệt kê service ID, type, class kinh qua
- Vẽ Mermaid connection graph

FR-11: IMPACT ANALYSIS
──────────────────────
- Tổng hợp: tổng methods, tổng LOC, core business methods count
- Tổng SC calls
- Số upstream callers, số downstream dependencies
- DB tables (trực tiếp vs qua SC)

FR-12: SINH MERMAID DIAGRAM
────────────────────────────
- Flow tổng thể nghiệp vụ (Overview): caller → main control → domain subgroups
- Flowchart chi tiết cho mỗi method phức tạp
- Pie chart phân bổ method categories
- Graph cho Input/Output/External API flows
- Tất cả diagram phải dùng Mermaid syntax hợp lệ, render được

FR-13: CHIA PART CHO FILE LỚN
──────────────────────────────
- Khi số method > 30, chia 02_Logic thành nhiều part (02_Logic_01.md, 02_Logic_02.md...)
- Mỗi part chứa ~30 methods
- Đánh số liên tục xuyên suốt các part

================================================================================
5. YÊU CẦU XỬ LÝ TỪNG SECTION OUTPUT
================================================================================

5.1 Section 00_INDEX.md
───────────────────────
Prompt gợi ý:
  "Tạo file INDEX dạng Markdown cho class {ClassName}.
   Bao gồm: tên class đầy đủ, ngày sinh, tổng methods/fields/LOC, 
   số part file, danh sách link tới từng section file."

Nội dung cần có:
  - Header: {ClassName} — 業務分析ドキュメント
  - Metadata: Class path, Generated date, Methods/Fields/LOC counts, Parts count
  - Table of Contents: link tới mỗi section file
  - Link tới file All-in-One

5.2 Section 01_Overview.md
──────────────────────────
Prompt gợi ý:
  "Phân tích class {ClassName} và tạo tài liệu Overview gồm:
   ① Bảng tổng quan (tên, layer, module, LOC, methods, fields, mô tả nghiệp vụ)
   ② Liệt kê dependency (incoming BPCheck callers, outgoing SC calls, DB entities)
   ③ Tóm tắt SC calls theo nhóm SC code
   ④ Vẽ Mermaid flowchart: caller → main control methods → domain subgroups → SC calls"

Nội dung cần có:
  - Bảng tổng quan class (7-8 fields)
  - Mô tả nghiệp vụ chi tiết (vai trò, đặc điểm chính)
  - Dependency: INCOMING (callers), OUTGOING (SC targets), DB/SC services
  - SC call summary: nhóm theo prefix, số lượng, vai trò từng nhóm
  - Mermaid flowchart TD: callers → main methods → domain subgroups → SC calls

5.3 Section 02_Logic_XX.md (Multiple Parts)
────────────────────────────────────────────
Prompt gợi ý (cho mỗi method):
  "Với method {methodName}() trong class {ClassName}:
   1. Tóm tắt vai trò 1-2 câu
   2. Phân tích logic chi tiết: các bước xử lý, điều kiện rẽ nhánh
      (liệt kê TẤT CẢ if/else/switch với giá trị hằng số cụ thể)
   3. Vẽ Mermaid flowchart cho luồng xử lý chính
   4. Bảng parameters
   5. Bảng CRUD operations (SC calls trong method)
   6. Liệt kê message IDs nếu có
   7. Reverse call tree (ai gọi method này)"

Nội dung MỖI method cần có:
  - Header: ### {methodName}()
  - Reverse Call Tree (text tree format)
  - Metadata: Class, Method signature, Return type
  - 1. Vai trò
  - 2. Processing Pattern (Mermaid flowchart + bảng conditions)
  - 3. Parameter Analysis (bảng)
  - 4. CRUD Operations / SC calls (bảng)
  - 4.5 Message IDs
  - (Separator --- giữa các methods)

5.4 Section 05_ParameterIF.md
─────────────────────────────
Prompt gợi ý:
  "Phân loại tất cả {N} methods trong class {ClassName} theo nhóm:
   SC Call, Mapping, Edit, Query, Judgment, SOD Order, Setter, BMP Control, Other.
   Cho mỗi nhóm: liệt kê bảng (tên method, số params, return type, LOC, mô tả).
   Vẽ Mermaid pie chart phân bổ."

5.5 Section 06_ServiceIF.md
────────────────────────────
Prompt gợi ý:
  "Phân tích Service Interface cho class {ClassName}:
   INCOMING: tất cả class gọi vào → layer, class, calling method, target method
   OUTGOING SC: tất cả SC calls → SC code, số methods, danh sách methods
   External Class References: các class bên ngoài tham chiếu (non-constant)
   Tổng hợp counts."

5.6 Section 07_CRUD_Matrix.md
──────────────────────────────
Prompt gợi ý:
  "Tạo CRUD Matrix cho class {ClassName}:
   1. Bảng DB table trực tiếp (nếu có): table × C/R/U/D
   2. Bảng SC CRUD: mỗi SC method → CRUD type, return type, mô tả
      (suy CRUD từ Javadoc: 照会=R, 登録=C, 更新=U, 削除=D)
   3. Bảng SC → DB Table Mapping: nhóm theo SC code prefix"

5.7 Section 08_Fields.md
─────────────────────────
Prompt gợi ý:
  "Liệt kê tất cả fields/constants trong class {ClassName}:
   Constants: name, type, value, ý nghĩa (từ comment)
   Instance fields: name, type, ý nghĩa (từ comment hoặc naming convention)"

5.8 Section 09_INPUT.md
───────────────────────
Prompt gợi ý:
  "Trace ngược tất cả upstream callers của class {ClassName}:
   Bảng: layer, class gọi, method gọi, method được gọi trong target
   Tổng hợp theo layer
   Vẽ Mermaid graph: callers → target (color-coded theo layer)"

5.9 Section 10_OUTPUT.md
────────────────────────
Prompt gợi ý:
  "Phân tích DB output operations của class {ClassName}:
   WRITE (INSERT/UPDATE/DELETE): tables + counts
   READ (SELECT): tables + counts
   Nếu class không thao tác DB trực tiếp, ghi nhận 'qua SC'"

5.10 Section 11_ExternalAPI.md
──────────────────────────────
Prompt gợi ý:
  "Phân tích external API connections từ class {ClassName}:
   1. Nhận diện tất cả editInMsg_*, editInMsg* methods → CBS_IN service IDs
   2. Phân loại direct vs indirect
   3. Bảng: service ID, type, class kinh qua, connection route
   4. Vẽ Mermaid graph: class → external services"

5.11 Section 12_ImpactAnalysis.md
─────────────────────────────────
Prompt gợi ý:
  "Tổng hợp Impact Analysis cho class {ClassName}:
   Bảng summary: tổng methods, LOC, core business methods,
   SC calls, upstream count, downstream count, DB tables"

================================================================================
6. YÊU CẦU VỀ PROMPT / AI FLOW
================================================================================

6.1. Kiến trúc Pipeline đề xuất
────────────────────────────────
Pipeline gồm các bước (có thể chạy tuần tự hoặc song song):

  STEP 0: THU THẬP INPUT
  ├── Nhận danh sách file Java source
  ├── Parse imports để xác định dependency scope
  └── Thu thập thêm file liên quan nếu thiếu

  STEP 1: PARSE CẤU TRÚC (Structure Extraction)
  ├── Parse AST hoặc regex: classes, methods, fields, imports
  ├── Trích xuất Javadoc/comments cho mỗi element
  ├── Tính LOC cho mỗi method
  └── Output: structured JSON/object chứa metadata

  STEP 2: PHÂN TÍCH DEPENDENCY (Dependency Analysis)
  ├── Từ imports + method body → xác định INCOMING/OUTGOING
  ├── Nhận diện SC call pattern: callXXXSC(), callSvcInter()
  ├── Nhận diện CBS Message usage: XXXCBSMsg classes
  ├── Nhóm SC theo prefix code
  └── Output: dependency graph

  STEP 3: PHÂN LOẠI METHOD (Method Classification)
  ├── Dựa vào naming convention + Javadoc + body analysis
  ├── Gán category cho mỗi method
  └── Output: categorized method list

  STEP 4: PHÂN TÍCH LOGIC CHI TIẾT (Deep Logic Analysis)  ★ QUAN TRỌNG NHẤT
  ├── Cho MỖI method (hoặc nhóm method):
  │   ├── Gửi prompt kèm source code method
  │   ├── AI phân tích: vai trò, steps, conditions, branches
  │   ├── AI sinh Mermaid flowchart
  │   ├── AI trích CRUD operations
  │   └── AI liệt kê message IDs
  └── Output: detailed analysis per method

  STEP 5: TỔNG HỢP & SINH TÀI LIỆU (Document Generation)
  ├── Ghép kết quả từ Step 1-4
  ├── Sinh từng section Markdown file
  ├── Chia part nếu cần (Logic files)
  ├── Sinh INDEX + All-in-One
  └── Output: bộ Markdown files hoàn chỉnh

6.2. Prompt Template cho Step 4 (Phân tích logic chi tiết)
──────────────────────────────────────────────────────────
Template gợi ý cho từng method:

  """
  Bạn là chuyên gia phân tích hệ thống legacy Java (BSS/OSS telecom).
  
  ## Context
  - Class: {full_qualified_name}
  - Layer: {layer} (CC/BPCheck/SC...)
  - Tổng quan class: {class_description}
  
  ## Hằng số tham chiếu
  {relevant_constants}
  
  ## CBS Message structures
  {relevant_cbsmsg_fields}
  
  ## Source code method cần phân tích
  ```java
  {method_source_code}
  ```
  
  ## Yêu cầu phân tích
  Hãy phân tích method trên và trả về JSON/Markdown với cấu trúc:
  
  1. **Vai trò** (1-2 câu tóm tắt nghiệp vụ)
  2. **Xử lý chi tiết** (Processing Pattern):
     - Liệt kê từng bước xử lý
     - TẤT CẢ điều kiện rẽ nhánh (if/switch) với giá trị hằng số cụ thể
     - Mermaid flowchart
  3. **Parameters**: bảng (tên, type, mô tả nghiệp vụ)
  4. **CRUD Operations**: bảng (CRUD type, SC method, SC code, entity, mô tả)
     - Nhận diện từ pattern: callXXXSC(), quy chiếu với CBSMsg
     - CRUD type: 照会/inquiry=R, 登録/register=C, 更新/update=U, 削除/delete=D
  5. **Message IDs**: liệt kê error/message codes nếu có
  6. **Reverse Call Tree**: ai gọi method này (từ analysis Step 2)
  
  Lưu ý:
  - Mô tả bằng tiếng Nhật (hoặc song ngữ JP-VN) cho thuật ngữ nghiệp vụ
  - Giữ nguyên tên biến/method/constant gốc
  - Flowchart phải dùng Mermaid syntax hợp lệ
  """

6.3. Chiến lược chia nhỏ cho class lớn
───────────────────────────────────────
- Với class > 30 methods: chia thành batch, mỗi batch ~25-30 methods
- Mỗi batch gửi 1 prompt, kèm context chung (class description, constants)
- Có thể song song hóa các batch
- Sau đó merge results theo thứ tự

6.4. Chiến lược giải quyết hằng số
───────────────────────────────────
- Pre-parse tất cả constant files → build dictionary: constant_name → value + meaning
- Khi phân tích method body, resolve constant references
  Ví dụ: IDO_DIV_ADCHGFIX → "住所変更・確定" (từ JKKHakkoSODConstCC.java)
- Cung cấp dictionary trong prompt context để AI hiểu giá trị thực tế

6.5. Chiến lược giải quyết CBS Message
───────────────────────────────────────
- Pre-parse các CBSMsg files → trích xuất tên fields
- Khi method sử dụng CBSMsg, cung cấp field list trong prompt
- Giúp AI hiểu data structure IN/OUT khi gọi SC

================================================================================
7. YÊU CẦU PHI CHỨC NĂNG
================================================================================

NF-01: NGÔN NGỮ OUTPUT
  - Thuật ngữ nghiệp vụ: giữ nguyên tiếng Nhật (gốc từ source code)
  - Header/structure: tiếng Nhật + tiếng Anh (song ngữ)
  - Mô tả/giải thích: có thể tiếng Nhật hoặc song ngữ
  - Tên biến, method, class: giữ nguyên

NF-02: ĐỊNH DẠNG
  - Output phải là valid Markdown
  - Bảng dùng Markdown table syntax
  - Diagrams dùng Mermaid (phải render được)
  - Code blocks dùng ``` với language hint (java, mermaid)

NF-03: ĐỘ CHÍNH XÁC
  - Tên method/field/class phải chính xác 100% (copy từ source)
  - Số liệu (LOC, method count, field count) phải đếm chính xác
  - CRUD type phải khớp với Javadoc description
  - Constant values phải đúng với source

NF-04: SCALABILITY
  - Xử lý được class từ vài trăm dòng đến > 30,000 dòng
  - Xử lý được class với > 300 methods
  - Tự động chia part khi cần

NF-05: TÍNH NHẤT QUÁN
  - Format giữa các section phải đồng nhất
  - Numbering phải liên tục (xuyên part)
  - Cross-reference giữa sections phải đúng

NF-06: HIỆU SUẤT
  - Nên tận dụng parallel processing cho các method độc lập
  - Cache kết quả parse structure (Step 1) để dùng cho các step sau
  - Tối ưu token usage: chỉ gửi context cần thiết cho mỗi prompt

================================================================================
8. VÍ DỤ THAM CHIẾU INPUT → OUTPUT
================================================================================

8.1. Input mẫu
───────────────
  - Thư mục: Source/
  - Target class: JKKHakkoSODCC.java 
    (Source/koptBp/ejbModule/.../custom/common/JKKHakkoSODCC.java)
  - Constants: 6 files (xem Section 2.3)
  - Utility: 1 file
  - CBSMsg: ~98 files (Source/koptModel/src/eo/ejb/cbs/cbsmsg/)

8.2. Output mẫu
────────────────
  - Thư mục: OuputSample/JKKHakkoSODCC/
  - 22 files Markdown (00_INDEX.md → 12_ImpactAnalysis.md + _Spec.md)
  - Tổng hợp 69,853 dòng (file _Spec.md all-in-one)

8.3. Mapping Input → Output
────────────────────────────
  INPUT                              → OUTPUT SECTION
  ─────────────────────────────────────────────────────
  JKKHakkoSODCC.java (class header)  → 01_Overview (①)
  JKKHakkoSODCC.java (method list)   → 05_ParameterIF (③)
  JKKHakkoSODCC.java (fields)        → 08_Fields (③.5)
  JKKHakkoSODCC.java (method body)   → 02_Logic_XX (⑥) ★ core
  JKKHakkoSODCC.java (SC calls)      → 06_ServiceIF (⑤), 07_CRUD (④)
  JKKHakkoSODCC.java (editInMsg*)    → 11_ExternalAPI (⑫)
  CBSMsg files (field definitions)   → 07_CRUD (entity mapping)
  Constant files (value definitions) → 02_Logic (condition values)
  BPCheck callers (nếu có)           → 09_INPUT (⑩), 06_ServiceIF (⑤)
  Tổng hợp tất cả                    → 12_ImpactAnalysis (⑦)
  Tất cả sections                    → 00_INDEX, _Spec.md (all-in-one)

================================================================================
KẾT LUẬN
================================================================================

Để AI parser sinh output chính xác như mẫu, cần đảm bảo:

  ✓ THU THẬP ĐỦ INPUT: File chính + Constants + Utility + CBSMsg + (Callers)
  ✓ PARSE STRUCTURE TRƯỚC: AST/regex parse → metadata JSON
  ✓ PHÂN TÍCH DEPENDENCY: Xác định rõ INCOMING/OUTGOING trước khi vào logic
  ✓ CONTEXT ĐẦY ĐỦ CHO PROMPT: Gửi kèm constants dictionary, CBSMsg fields
  ✓ CHIA NHỎ CHO CLASS LỚN: Batch methods, merge results
  ✓ VALIDATE OUTPUT: Kiểm tra Mermaid syntax, số liệu counts, cross-references
  ✓ GIỮU NHẤT QUÁN FORMAT: Dùng template cố định cho mỗi section

================================================================================
