# Business Logic — JBSbatKKKojiKnrnInfToroku.createKojiRsvInfTv() [182 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.business.service.JBSbatKKKojiKnrnInfToroku` |
| Layer | Service (Batch) |
| Module | `service` (Package: `eo.business.service`) |

## 1. Role

### JBSbatKKKojiKnrnInfToroku.createKojiRsvInfTv()

This method performs the **construction schedule information (TV) registration processing** — it reads a pre-mashed CSV file containing work schedule data for television-related construction activities, transforms each CSV row into a structured parameter array of 33 fields, and inserts the records into the construction schedule work table (`KK_T_KJ_RSV_WK`). The method acts as a **batch data ingestion pipeline** within the larger construction information registration subsystem: it is a shared service method called by the batch orchestrator `execute()`, which manages multiple similar registration methods for different service types (Network, TV, etc.). The design pattern used is a **read-transform-write** loop: read raw CSV lines from an intermediate file directory, map/transform each line to a domain-specific parameter list with type code `03` (TV) hardcoded for the `KOJIAK_SVC_SBT_CD` field, fill missing fields with half-width spaces (or `"0"` for STB count), and insert into the database via primary-key-based insertion. The method handles one specific service type category: **TV (television) construction schedule** identified by the constant `KOJIAK_SBT_CD_TV = "03"`.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["createKojiRsvInfTv_mid_dir_kk"])

    START --> LOG_START["Print debug log START"]
    LOG_START --> INIT["Initialize local variables data_work and file_path"]
    INIT --> SYS_DATE["Get system datetime from JBSbatDateUtil"]
    SYS_DATE --> FILE_PATH["Build file path mid_dir_kk plus KOJI_RSV_INF_TV_FILE_ID plus FILE_KEISHIKI"]
    FILE_PATH --> READ_FILE["Read input file via getInputFile"]

    READ_FILE --> LOOP_CHECK{data_list_size greater than 0}
    LOOP_CHECK -->|Yes| LOOP_BODY["For each line in data_list"]
    LOOP_CHECK -->|No| END_LOG["Print debug log END"]
    END_LOG --> END(["Return void"])

    LOOP_BODY --> GET_LINE["Get line data_work"]
    GET_LINE --> SPLIT["Split CSV data_work into data array"]

    SPLIT --> BUILD_PARAM["Build param_add ArrayList with 33 fields"]

    BUILD_PARAM --> F0["F0 svc_kei_no"]
    BUILD_PARAM --> F1["F1 svc_kei_kaisen_ucwk_no"]
    BUILD_PARAM --> F2["F2 rnki_ymd"]
    BUILD_PARAM --> F3["F3 rnki_seq"]

    BUILD_PARAM --> C4_NEW{F4 null or empty}
    C4_NEW -->|Has value| C4_VAL["Add F4 new_chge_cd"]
    C4_NEW -->|Empty| C4_DEF["Add HAFU_SPACE half-width space"]

    BUILD_PARAM --> C5_NEW{F5 null or empty}
    C5_NEW -->|Has value| C5_VAL["Add F5 kojiaK_sbt_cd"]
    C5_NEW -->|Empty| C5_DEF["Add HAFU_SPACE"]

    BUILD_PARAM --> C6_NEW{F6 null or empty}
    C6_NEW -->|Has value| C6_VAL["Add F6 kojiaK_no"]
    C6_NEW -->|Empty| C6_DEF["Add HAFU_SPACE"]

    BUILD_PARAM --> F7["F7 kojiaK_svc_sbt_cd KOJIAK_SBT_CD_TV 03"]
    BUILD_PARAM --> C7_CHK{F7 null or empty}
    C7_CHK -->|Has value| C7_VAL["Add F7 koji_comp_cd"]
    C7_CHK -->|Empty| C7_DEF["Add HAFU_SPACE"]

    BUILD_PARAM --> C8_CHK{F8 null or empty}
    C8_CHK -->|Has value| C8_VAL["Add F8 hisos_buioffc_koji_comp_cd"]
    C8_CHK -->|Empty| C8_DEF["Add HAFU_SPACE"]

    BUILD_PARAM --> C12_CHK{F12 null or empty}
    C12_CHK -->|Has value| C12_VAL["Add F12 koji_rsv_mskm_form_cd"]
    C12_CHK -->|Empty| C12_DEF["Add HAFU_SPACE"]

    BUILD_PARAM --> C11_CHK{F11 null or empty}
    C11_CHK -->|Has value| C11_VAL["Add F11 koji_rsv_dsgn_bunsho_no"]
    C11_CHK -->|Empty| C11_DEF["Add HAFU_SPACE"]

    BUILD_PARAM --> F12C["F12 KOJI_RSV_COUPLER_HSK_CD HAFU_SPACE"]
    BUILD_PARAM --> F13C["F13 KOJI_RSV_OYA_PON_MAKER_CD HAFU_SPACE"]
    BUILD_PARAM --> F14C["F14 KOJI_RSV_OYA_PON_MAKER_NM HAFU_SPACE"]
    BUILD_PARAM --> F15C["F15 KOJI_RSV_VA_MAKER_CD HAFU_SPACE"]
    BUILD_PARAM --> F16C["F16 KOJI_RSV_IP_KOJIAK_SBT_CD HAFU_SPACE"]

    BUILD_PARAM --> C9_CHK{F9 null or empty}
    C9_CHK -->|Has value| C9_VAL["Add F9 koji_rsv_stb_cnt"]
    C9_CHK -->|Empty| C9_DEF["Add 0"]

    BUILD_PARAM --> C10_CHK{F10 null or empty}
    C10_CHK -->|Has value| C10_VAL["Add F10 koji_rsv_vonu_maker_cd"]
    C10_CHK -->|Empty| C10_DEF["Add HAFU_SPACE"]

    BUILD_PARAM --> C13_CHK{F13 null or empty}
    C13_CHK -->|Has value| C13_VAL["Add F13 koji_rsv_tv_kojiaK_sbt_cd"]
    C13_CHK -->|Empty| C13_DEF["Add HAFU_SPACE"]

    BUILD_PARAM --> C14_CHK{F14 null or empty}
    C14_CHK -->|Has value| C14_VAL["Add F14 pon_sbt_cd"]
    C14_CHK -->|Empty| C14_DEF["Add HAFU_SPACE"]

    BUILD_PARAM --> SYS_TIME["F21 F23 F25 F27 F30 F31 sysrtem_date"]
    BUILD_PARAM --> BATCH_USER["F22 F24 super_batchUserId"]
    BUILD_PARAM --> SPACE_FLG["F27 F31 SPACE default flag"]
    BUILD_PARAM --> OPE_DATE["F28 F30 super_opeDate"]

    F0 --> F1 --> F2 --> F3 --> C4_NEW
    C4_VAL --> C5_NEW
    C4_DEF --> C5_NEW
    C5_VAL --> C6_NEW
    C5_DEF --> C6_NEW
    C6_VAL --> F7
    C6_DEF --> F7
    F7 --> C7_CHK
    C7_VAL --> C8_CHK
    C7_DEF --> C8_CHK
    C8_VAL --> C12_CHK
    C8_DEF --> C12_CHK
    C12_VAL --> C11_CHK
    C12_DEF --> C11_CHK
    C11_VAL --> F12C
    C11_DEF --> F12C
    F12C --> F13C --> F14C --> F15C --> F16C --> C9_CHK
    C9_VAL --> C10_CHK
    C9_DEF --> C10_CHK
    C10_VAL --> C13_CHK
    C10_DEF --> C13_CHK
    C13_VAL --> C14_CHK
    C13_DEF --> C14_CHK
    C14_VAL --> SYS_TIME
    C14_DEF --> SYS_TIME
    SYS_TIME --> BATCH_USER --> SPACE_FLG --> OPE_DATE

    OPE_DATE --> INSERT["Call executeKK_T_KJ_RSV_WK_PKINSERT"]
    INSERT --> NEXT_LOOP{More lines}
    NEXT_LOOP -->|Yes| GET_LINE
    NEXT_LOOP -->|No| END_LOG
```

**CRITICAL -- Constant Resolution:**
- `KOJI_RSV_INF_TV_FILE_ID = "KKIFM062003"` (File ID for Construction Schedule Information (TV))
- `FILE_KEISHIKI = ".csv"` (File extension)
- `KOJIAK_SBT_CD_TV = "03"` (Work Project Category Service Type Code: 03 = TV)
- `HAFU_SPACE = " "` (Half-width space, used as default for empty fields)
- `SPACE` = `" "` (from `JKKStrConst`, used for default flag fields)

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `mid_dir_kk` | `String` | Intermediate file storage directory path. Contains the system directory where the pre-mashed CSV file for construction schedule information (TV) is located. The method appends the file ID `KKIFM062003` and `.csv` extension to locate the input file. |

**Instance Fields / External State Read:**

| Source | Field | Business Description |
|--------|-------|---------------------|
| `super.batchUserId` | Inherited from `JBSbatBusinessService` | Batch ID used as the operator account for audit trail (ADD_OPEACNT, UPD_OPEACNT) |
| `super.opeDate` | Inherited from `JBSbatBusinessService` | Operation date used as ADD_UNYO_YMD, UPD_UNYO_YMD |
| `db_KK_T_KJ_RSV_WK` | Table access instance | Database access object for the construction schedule work table |
| `super.logPrint` | Inherited from `JBSbatBusinessService` | Debug logging instance |

## 4. CRUD Operations / Called Services

### Pre-computed evidence from code analysis graph:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JACBatCommon.printDebugLog` | JACBatCommon | - | Calls `printDebugLog` in `JACBatCommon` (debug tracing) |
| - | `JACbatDebugLogUtil.printDebugLog` | JACbatDebugLog | - | Calls `printDebugLog` in `JACbatDebugLogUtil` (debug tracing) |
| R | `JBSbatInterface.getSystemDateTimeStamp` | JBSbatInterface | - | Calls `getSystemDateTimeStamp` in `JBSbatInterface` to retrieve system timestamp |
| - | `JCKLcsRenkeiUtil.printDebugLog` | JCKLcsRenkei | - | Calls `printDebugLog` in `JCKLcsRenkeiUtil` (debug tracing) |
| - | `JKKHttpCommunicator.printDebugLog` | JKKHttpCommunicator | - | Calls `printDebugLog` in `JKKHttpCommunicator` (debug tracing) |
| - | `JBSbatDKHmpinAdd.split` | JBSbatDKHmpinAdd | - | Calls `split` in `JBSbatDKHmpinAdd` (CSV parsing) |
| - | `JBSbatDKNyukaFinAdd.split` | JBSbatDKNyukaFinAdd | - | Calls `split` in `JBSbatDKNyukaFinAdd` (CSV parsing) |
| - | `JBSbatDKTanaMoveShkaCmpAdd.split` | JBSbatDKTanaMoveShkaCmpAdd | - | Calls `split` in `JBSbatDKTanaMoveShkaCmpAdd` (CSV parsing) |
| - | `JBSbatDKTkkikiGetReqHmpin.split` | JBSbatDKTkkikiGetReqHmpin | - | Calls `split` in `JBSbatDKTkkikiGetReqHmpin` (CSV parsing) |
| - | `JBSbatDKTkkikiGetReqNyuka.split` | JBSbatDKTkkikiGetReqNyuka | - | Calls `split` in `JBSbatDKTkkikiGetReqNyuka` (CSV parsing) |
| - | `JBSbatKKCashPostAddMail.printDebugLog` | JBSbatKKCashPostAddMail | - | Calls `printDebugLog` in `JBSbatKKCashPostAddMail` (debug tracing) |
| C | `JBSbatKKKojiKnrnInfToroku.executeKK_T_KJ_RSV_WK_PKINSERT` | - | `KK_T_KJ_RSV_WK` | Calls `executeKK_T_KJ_RSV_WK_PKINSERT` which inserts a record into the construction schedule work table via primary keys |
| R | `JBSbatKKKojiKnrnInfToroku.getInputFile` | JBSbatKKKojiKnrnInfToroku | - | Calls `getInputFile` to read the intermediate CSV file containing pre-mashed TV construction schedule data |
| - | `JFUKyokaIpAdActionChkUtil.toArray` | JFUKyokaIpAdActionChk | - | Calls `toArray` in `JFUKyokaIpAdActionChkUtil` (ArrayList conversion) |

### Detailed CRUD Classification:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JBSbatDateUtil.getSystemDateTimeStamp` | - | - | Retrieves the current system datetime stamp for audit timestamp fields (ADD_DTM, UPD_DTM, DEL_DTM) |
| R | `getInputFile(file_path, KOJI_RSV_INF_TV_FILE_ID)` | - | Intermediate CSV File (`KKIFM062003.csv`) | Reads the pre-mashed intermediate CSV file containing TV construction schedule data lines from the intermediate file directory |
| C | `executeKK_T_KJ_RSV_WK_PKINSERT(param_add.toArray())` | - | `KK_T_KJ_RSV_WK` (Construction Schedule Work Table) | Inserts a single record into the construction schedule work table using primary key-based insertion with 34 mapped fields including service contract number, line detail number, work project codes, design document number, STB count, PON type code, and audit timestamps |

## 5. Dependency Trace

### Pre-computed evidence from code analysis graph:

No screen/batch entry points found within 8 hops. Direct callers found: 1 methods.
Terminal operations from this method: `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `executeKK_T_KJ_RSV_WK_PKINSERT` [C], `toArray` [-], `split` [-], `split` [-], `split` [-], `split` [-], `split` [-], `getInputFile` [R], `getSystemDateTimeStamp` [R], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-], `printDebugLog` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Batch: JBSbatKKKojiKnrnInfToroku.execute() | `JBSbatKKKojiKnrnInfToroku.execute()` -> `createKojiRsvInfTv(mid_dir_kk)` | `executeKK_T_KJ_RSV_WK_PKINSERT [C] KK_T_KJ_RSV_WK` |

**Description:** The method is called directly from the batch orchestrator method `execute()` within the same class `JBSbatKKKojiKnrnInfToroku`. This orchestrator method coordinates multiple construction information registration methods (for completed information, network schedule, TV schedule, device information, cancellation, indoor work, and cost information). The terminal operation of this method is a **Create** into the `KK_T_KJ_RSV_WK` table.

## 6. Per-Branch Detail Blocks

### Block 1 — [METHOD ENTRY] (L2115)

> Method entry point. Initializes local variables and acquires system timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `data_work = ""` // Work line data for construction schedule (TV) file |
| 2 | SET | `file_path = ""` // File path storage |
| 3 | CALL | `sysrtem_date = JBSbatDateUtil.getSystemDateTimeStamp()` // Get system datetime (typo: "sysrtem_date") |
| 4 | EXEC | `file_path = mid_dir_kk + KOJI_RSV_INF_TV_FILE_ID + FILE_KEISHIKI` // Build full file path: `mid_dir_kk/KKIFM062003.csv` |
| 5 | CALL | `data_list = getInputFile(file_path, KOJI_RSV_INF_TV_FILE_ID)` // Read intermediate CSV file into ArrayList |

### Block 2 — [FOR LOOP] `(int i = 0; i < data_list.size())` (L2133)

> Iterates over each line of the pre-mashed CSV file. For each line, the data is split, mapped to 33 parameters, and inserted.

| # | Type | Code |
|---|------|------|
| 1 | SET | `data_work = data_list.get(i)` // Get current line |
| 2 | CALL | `data = data_work.split(",", -1)` // Split CSV fields, -1 preserves trailing empty entries |
| 3 | SET | `param_add = new ArrayList<String>(data.length)` // Prepare parameter list for registration |

#### Block 2.1 — [FIELD MAPPING: indices 0-3] (L2144-L2147)

> Map the first 4 CSV fields directly without null checks.

| # | Type | Code |
|---|------|------|
| 1 | SET | `param_add.add(data[0])` // svc_kei_no — Service Contract Number |
| 2 | SET | `param_add.add(data[1])` // svc_kei_kaisen_ucwk_no — Service Contract Line Detail Number |
| 3 | SET | `param_add.add(data[2])` // rnki_ymd — Linking Year/Month/Day |
| 4 | SET | `param_add.add(data[3])` // rnki_seq — Linking Sequence Number |

#### Block 2.2 — [FIELD MAPPING: NEW_CHGE_CD] (L2148-L2155)

> Map index 4 (new_chge_cd — New Change Code) with null/empty check. Uses `[-> HAFU_SPACE=" "]` for default.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null != data[4] && !"".equals(data[4])` // Index 4 has value |
| 2 | SET | `param_add.add(data[4])` // new_chge_cd — New Change Code (value from CSV) |
| 3 | ELSE | |
| 4 | SET | `param_add.add(HAFU_SPACE)` // Default: half-width space `[-> HAFU_SPACE=" "]` |

#### Block 2.3 — [FIELD MAPPING: KOJIAK_SBT_CD] (L2156-L2163)

> Map index 5 (kojiaK_sbt_cd — Work Project Category Code) with null/empty check. Uses `[-> HAFU_SPACE=" "]` for default.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null != data[5] && !"".equals(data[5])` // Index 5 has value |
| 2 | SET | `param_add.add(data[5])` // kojiaK_sbt_cd — Work Project Category Code |
| 3 | ELSE | |
| 4 | SET | `param_add.add(HAFU_SPACE)` // Default: half-width space `[-> HAFU_SPACE=" "]` |

#### Block 2.4 — [FIELD MAPPING: KOJIAK_NO] (L2164-L2171)

> Map index 6 (kojiaK_no — Work Project Number) with null/empty check. Uses `[-> HAFU_SPACE=" "]` for default.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null != data[6] && !"".equals(data[6])` // Index 6 has value |
| 2 | SET | `param_add.add(data[6])` // kojiaK_no — Work Project Number |
| 3 | ELSE | |
| 4 | SET | `param_add.add(HAFU_SPACE)` // Default: half-width space `[-> HAFU_SPACE=" "]` |

#### Block 2.5 — [FIELD MAPPING: KOJIAK_SVC_SBT_CD] (L2172)

> Hardcoded constant value for TV service type.

| # | Type | Code |
|---|------|------|
| 1 | SET | `param_add.add(KOJIAK_SBT_CD_TV)` // kojiaK_svc_sbt_cd — Work Project Category Service Type Code `[-> KOJIAK_SBT_CD_TV="03"]` (03: TV) |

#### Block 2.6 — [FIELD MAPPING: KOJI_COMP_CD] (L2173-L2180)

> Map index 7 (koji_comp_cd — Construction Company Code) with null/empty check. Uses `[-> HAFU_SPACE=" "]` for default.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null != data[7] && !"".equals(data[7])` // Index 7 has value |
| 2 | SET | `param_add.add(data[7])` // koji_comp_cd — Construction Company Code |
| 3 | ELSE | |
| 4 | SET | `param_add.add(HAFU_SPACE)` // Default: half-width space `[-> HAFU_SPACE=" "]` |

#### Block 2.7 — [FIELD MAPPING: HISOS_BUIOFFC_KOJI_COMP_CD] (L2181-L2188)

> Map index 8 (hisos_buioffc_koji_comp_cd — Indoor Completion Rsv Date) with null/empty check. Uses `[-> HAFU_SPACE=" "]` for default.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null != data[8] && !"".equals(data[8])` // Index 8 has value |
| 2 | SET | `param_add.add(data[8])` // hisos_buioffc_koji_comp_cd — Indoor Work Completion Rsv Date |
| 3 | ELSE | |
| 4 | SET | `param_add.add(HAFU_SPACE)` // Default: half-width space `[-> HAFU_SPACE=" "]` |

#### Block 2.8 — [FIELD MAPPING: KOJI_RSV_MSKM_FORM_CD] (L2189-L2196)

> Map index 12 (koji_rsv_mskm_form_cd — Construction Rsv Coupler Method Code) with null/empty check. Uses `[-> HAFU_SPACE=" "]` for default.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null != data[12] && !"".equals(data[12])` // Index 12 has value |
| 2 | SET | `param_add.add(data[12])` // koji_rsv_mskm_form_cd — Construction Rsv Coupler Method Code |
| 3 | ELSE | |
| 4 | SET | `param_add.add(HAFU_SPACE)` // Default: half-width space `[-> HAFU_SPACE=" "]` |

#### Block 2.9 — [FIELD MAPPING: KOJI_RSV_DSGN_BUNSHO_NO] (L2197-L2204)

> Map index 11 (koji_rsv_dsgn_bunsho_no — Construction Rsv Design Document No.) with null/empty check. Uses `[-> HAFU_SPACE=" "]` for default.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null != data[11] && !"".equals(data[11])` // Index 11 has value |
| 2 | SET | `param_add.add(data[11])` // koji_rsv_dsgn_bunsho_no — Construction Rsv Design Document No. |
| 3 | ELSE | |
| 4 | SET | `param_add.add(HAFU_SPACE)` // Default: half-width space `[-> HAFU_SPACE=" "]` |

#### Block 2.10 — [FIELD MAPPING: Hardcoded Defaults] (L2207-L2214)

> Set default half-width space for fields not present in the TV CSV source (indices 12-16 after param mapping).

| # | Type | Code |
|---|------|------|
| 1 | SET | `param_add.add(HAFU_SPACE)` // F12: KOJI_RSV_COUPLER_HSK_CD — Construction Rsv Coupler Holder Code |
| 2 | SET | `param_add.add(HAFU_SPACE)` // F13: KOJI_RSV_OYA_PON_MAKER_CD — Construction Rsv Parent PON Maker Code |
| 3 | SET | `param_add.add(HAFU_SPACE)` // F14: KOJI_RSV_OYA_PON_MAKER_NM — Construction Rsv Parent PON Maker Name |
| 4 | SET | `param_add.add(HAFU_SPACE)` // F15: KOJI_RSV_VA_MAKER_CD — Construction Rsv VA Maker Code |
| 5 | SET | `param_add.add(HAFU_SPACE)` // F16: KOJI_RSV_IP_KOJIAK_SBT_CD — Construction Rsv IP Work Category Code |

#### Block 2.11 — [FIELD MAPPING: KOJI_RSV_STB_CNT] (L2215-L2222)

> Map index 9 (koji_rsv_stb_cnt — Construction Rsv STB Count). Default is `"0"` (not half-width space).

| # | Type | Code |
|---|------|------|
| 1 | IF | `null != data[9] && !"".equals(data[9])` // Index 9 has value |
| 2 | SET | `param_add.add(data[9])` // koji_rsv_stb_cnt — Construction Rsv STB Count |
| 3 | ELSE | |
| 4 | SET | `param_add.add("0")` // Default: zero (STB count defaults to 0) |

#### Block 2.12 — [FIELD MAPPING: KOJI_RSV_VONU_MAKER_CD] (L2223-L2230)

> Map index 10 (koji_rsv_vonu_maker_cd — Construction Rsv V-ONU Maker Code) with null/empty check. Uses `[-> HAFU_SPACE=" "]` for default.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null != data[10] && !"".equals(data[10])` // Index 10 has value |
| 2 | SET | `param_add.add(data[10])` // koji_rsv_vonu_maker_cd — Construction Rsv V-ONU Maker Code |
| 3 | ELSE | |
| 4 | SET | `param_add.add(HAFU_SPACE)` // Default: half-width space `[-> HAFU_SPACE=" "]` |

#### Block 2.13 — [FIELD MAPPING: KOJI_RSV_TV_KOJIAK_SBT_CD] (L2231-L2238)

> Map index 13 (koji_rsv_tv_kojiaK_sbt_cd — Construction Rsv TV Work Project Category Code) with null/empty check. Uses `[-> HAFU_SPACE=" "]` for default.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null != data[13] && !"".equals(data[13])` // Index 13 has value |
| 2 | SET | `param_add.add(data[13])` // koji_rsv_tv_kojiaK_sbt_cd — Construction Rsv TV Work Project Category Code |
| 3 | ELSE | |
| 4 | SET | `param_add.add(HAFU_SPACE)` // Default: half-width space `[-> HAFU_SPACE=" "]` |

#### Block 2.14 — [FIELD MAPPING: PON_SBT_CD] (L2239-L2246)

> Map index 14 (pon_sbt_cd — PON Type Code) with null/empty check. Uses `[-> HAFU_SPACE=" "]` for default.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null != data[14] && !"".equals(data[14])` // Index 14 has value |
| 2 | SET | `param_add.add(data[14])` // pon_sbt_cd — PON Type Code |
| 3 | ELSE | |
| 4 | SET | `param_add.add(HAFU_SPACE)` // Default: half-width space `[-> HAFU_SPACE=" "]` |

#### Block 2.15 — [FIELD MAPPING: Audit Fields] (L2247-L2268)

> Set system timestamps, batch user ID, operation dates, and default flag/null fields for audit trail.

| # | Type | Code |
|---|------|------|
| 1 | SET | `param_add.add(sysrtem_date)` // F21: ADD_DTM — Add Date/Time |
| 2 | SET | `param_add.add(super.batchUserId)` // F22: ADD_OPEACNT — Add Operator Account |
| 3 | SET | `param_add.add(sysrtem_date)` // F23: UPD_DTM — Update Date/Time |
| 4 | SET | `param_add.add(super.batchUserId)` // F24: UPD_OPEACNT — Update Operator Account |
| 5 | SET | `param_add.add(sysrtem_date)` // F25: DEL_DTM — Delete Date/Time |
| 6 | SET | `param_add.add(super.batchUserId)` // F26: DEL_OPEACNT — Delete Operator Account |
| 7 | SET | `param_add.add(SPACE)` // F27: MK_FLG — Mark Flag (half-width space) |
| 8 | SET | `param_add.add(SPACE)` // F28: ADD_UNYO_YMD — Add Operation Date/Time |
| 9 | SET | `param_add.add("0")` // F29: (unnamed, set to "0") |
| 10 | SET | `param_add.add(super.opeDate)` // F30: ADD_UNYO_YMD — Register Operation Date |
| 11 | SET | `param_add.add(SPACE)` // F31: ADD_TRN_ID — Register Process ID |
| 12 | SET | `param_add.add(super.opeDate)` // F32: UPD_UNYO_YMD — Update Operation Date |
| 13 | SET | `param_add.add(SPACE)` // F33: UPD_TRN_ID — Update Process ID |
| 14 | SET | `param_add.add(SPACE)` // F34: DEL_UNYO_YMD — Delete Operation Date |
| 15 | SET | `param_add.add(SPACE)` // F35: DEL_TRN_ID — Delete Process ID |

### Block 3 — [DATABASE INSERT] (L2270)

> Execute primary-key-based insert into the construction schedule work table.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `executeKK_T_KJ_RSV_WK_PKINSERT(param_add.toArray())` // Insert record into KK_T_KJ_RSV_WK table |

### Block 4 — [METHOD EXIT] (L2294)

> End debug log.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("createKojiRsvInfTv_END")` // Print END debug log |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `koji_rsv_inf_tv` | Domain term | Construction Schedule Information (TV) — work schedule data for television-related construction activities |
| `svc_kei_no` | Field | Service Contract Number — the primary identifier for a service contract line |
| `svc_kei_kaisen_ucwk_no` | Field | Service Contract Line Detail Number — internal sub-line identifier within a service contract |
| `rnki_ymd` | Field | Linking Year/Month/Day — date when the construction schedule is linked to the service contract |
| `rnki_seq` | Field | Linking Sequence Number — sequence number for ordering linked records |
| `new_chge_cd` | Field | New Change Code — classifies whether this is a new installation, change, relocation, or cancellation |
| `kojiaK_sbt_cd` | Field | Work Project Category Code — classifies the type of work project (e.g., 001: New Installation, 002: Removal, 003: Relocation) |
| `kojiaK_no` | Field | Work Project Number — the unique identifier for a work project |
| `kojiaK_svc_sbt_cd` | Field | Work Project Category Service Type Code — distinguishes between service types (01: Network/Home, 03: TV) |
| `koji_comp_cd` | Field | Construction Company Code — code identifying the construction company performing the work |
| `hisos_buioffc_koji_comp_cd` | Field | Indoor Work Completion Rsv Date — the scheduled date for completing indoor construction work |
| `koji_rsv_mskm_form_cd` | Field | Construction Rsv Coupler Method Code — method used for the coupler in construction |
| `koji_rsv_dsgn_bunsho_no` | Field | Construction Rsv Design Document No. — reference number of the design document |
| `koji_rsv_stb_cnt` | Field | Construction Rsv STB Count — number of Set-Top Boxes required for the installation |
| `koji_rsv_vonu_maker_cd` | Field | Construction Rsv V-ONU Maker Code — manufacturer code for the V-ONU (Virtual Optical Network Unit) |
| `koji_rsv_tv_kojiaK_sbt_cd` | Field | Construction Rsv TV Work Project Category Code — specific category for TV-related work projects |
| `pon_sbt_cd` | Field | PON Type Code — classifies the type of Passive Optical Network used |
| `KOJIAK_SBT_CD_TV` | Constant | Work Project Category Service Type Code TV — value `"03"`, indicates this is a TV construction schedule record |
| `KK_T_KJ_RSV_WK` | Table | Construction Schedule Work Table — temporary/intermediate database table where construction schedule data is stored before final processing |
| `KKIFM062003` | Constant | File ID for Construction Schedule Information (TV) — identifies the intermediate CSV file format |
| `HAFU_SPACE` | Constant | Half-width space — value `" "`, used as the default value for optional/empty fields |
| `super.batchUserId` | Field | Batch User ID — inherited audit field identifying which batch process performed the operation |
| `super.opeDate` | Field | Operation Date — inherited audit field containing the current operation date |
| `KKIFM062` | Constant | Base File ID for Construction Schedule Information (TV) — shorter file ID used in related validation/check classes |
| KOJIAK_SBT_CD_NEWESTA | Constant | Work Project Category Code (001: New Installation) — value `"001"` |
| KOJIAK_SBT_CD_TK | Constant | Work Project Category Code (002: Removal/Contract Cancellation) — value `"002"` |
| KOJIAK_SBT_CD_AD_CHG_NEWESTA | Constant | Work Project Category Code (003: Relocation (New)) — value `"003"` |
| KOJIAK_SBT_CD_AD_CHG_TK | Constant | Work Project Category Code (004: Relocation (Removal)) — value `"004"` |
| KOJIAK_SBT_CD_ISETSU | Constant | Work Project Category Code (007: Move/Relocation) — value `"007"` |
| KOJIAK_SBT_CD_MNKHT | Constant | Work Project Category Code (012: Front Opening) — value `"012"` |
| STB | Business term | Set-Top Box — consumer electronics device used for television signal reception and processing |
| ONU | Business term | Optical Network Unit — terminal device in a fiber-optic PON network |
| V-ONU | Business term | Virtual Optical Network Unit — a logical ONU instance associated with a specific service |
| PON | Business term | Passive Optical Network — fiber-optic network architecture using passive splitters |
| CSV | Technical term | Comma-Separated Values — flat file format used for intermediate data exchange between batch processing stages |
| VA | Business term | Virtual Access — virtual access service in the K-Opticom telecom service architecture |
