# [520] 프로그램코드등록 메뉴 분석 명세서 ## 🏛️ 1. 메뉴 개요 및 시스템 매핑 정보 | 항목 | 내용 | | --- | --- | | **메뉴명** | 프로그램코드등록 | | **목적** | 시스템 내부 프로그램 코드 및 URL, 연결되는 MVC 컴포넌트, 관련 프로시저/테이블 명세 정보를 등록하고 관리하기 위함 | | **Controller 경로** | MenuAuth_Controller.php | | **Logic (Model) 경로** | MenuAuth_logic.php | | **View (TPL) 경로** | MenuAuthScreen_04_Main_mvc.tpl | ## 🖥️ 2. 화면 구조 및 UI 명세 (Storyboard) ### 2.1. 화면 레이아웃 구조 (Wireframe) ```text +---------------------------------------------------------------------------------------------+ | [프로그램코드 등록] | | | | [조회] [추가] [삭제] [저장] [엑셀] [도움] [닫기] | +---------------------------------------------------------------------------------------------+ | ■ 검색 조건 (Sort Section) | | 프로그램 명칭: [ ] (input_item_01) | | URL/TABLE/PROCEDURE: [ ] (input_item_02) | | 유형: [ ▼ Select ] (input_select_01) 시스템: [ ▼ Select ] (input_select_02) | +---------------------------------------------------------------------------------------------+ | ■ JqGrid 프로그램 코드 데이터 (grid1) | | [코드] | [명칭] | [URL] | [유형] | [업무] | [기본순번] | [URL/CONTROLLER/LOGIC 등]... | |--------|--------|-------|--------|--------|------------|------------------------------------| | P001 | 등록 | /sys..| Q | AM | 0 | ... | +---------------------------------------------------------------------------------------------+ ``` ### 2.2. 탭(Tab) 인터페이스 구성 및 데이터 연동 명세 - 단일 JqGrid 레이아웃을 통해 데이터를 표출하며, 인라인 편집(Inline Edit)을 활용하여 프로그램 코드, 명칭, MVC 매핑 정보 등을 즉각 수정할 수 있습니다. ### 2.3. 공통 제어 컴포넌트 명세 (UI Specification) - **조회 (`td_gnb_btn_02`)**: 입력된 프로그램 명칭, URL 문자열 및 드롭다운 검색 조건들을 통해 프로그램 목록을 필터하여 조회합니다. - **추가 (`td_gnb_btn_03`)**: JqGrid 상에 신규 행을 추가합니다. (`JqGridAddRowInfo()`) - **삭제 (`td_gnb_btn_04`)**: 선택된 그리드의 행(프로그램 항목)을 삭제 대기 상태로 변경합니다. (`JqGridDeleteRow()`) - **저장 (`td_gnb_btn_05`)**: 새롭게 추가되었거나 수정, 삭제 상태인 행들의 내역을 DB로 일괄 저장(Insert/Update/Delete)합니다. (`JqGridSaveData()`) - **엑셀 (`td_gnb_btn_07`)**: JqGrid에 불러온 목록을 엑셀로 내보냅니다. - **도움/닫기 (`td_gnb_btn_08, 09`)**: 공통 도움말 및 화면 탭 종료 버튼. ## ⚙️ 3. 핵심 비즈니스 로직 및 알고리즘 1. **셀렉트 박스 기초 데이터 생성**: 뷰 렌더링 전 `MenuAuth_logic.php`가 `CommonCodeList` 객체의 `QueryCodeList()`를 호출하여 유형, 시스템, 기본분류 등 프로그램의 메타 정보 선택값을 준비하여 화면에 할당합니다. 2. **목록 조회 (`select`)**: JqGrid가 `Ajax_01`(SubAction=`select`)로 호출 시 검색어들을 처리하여 `usp_menu_auth_04` 오라클 프로시저를 실행합니다. 반환된 프로그램의 세부 명세들(명칭, URL, TPL, Proc 등)을 문자열 포맷팅 처리(`FN_replace`) 후 JSON으로 반환합니다. 3. **일괄 C.R.U.D 데이터 처리 (`save`)**: JqGrid 상에서의 수정사항(CrudMode)에 따라 각기 다른 프로시저를 분기 실행합니다: - `Insert`: `usp_menu_auth_04_in` - `Update`: `usp_menu_auth_04_up` - `Delete`: `usp_menu_auth_04_del` 각 프로시저에 그리드 내에 변경된 15개 이상의 매핑 속성들을 인자로 전송합니다. ## 🔄 4. 데이터 흐름도 (Data Flow Diagram) ```mermaid sequenceDiagram participant User participant Browser (TPL/JS) participant Controller participant Logic participant DB User->>Browser (TPL/JS): 검색 조건 입력 후 "조회" 버튼 클릭 Browser (TPL/JS)->>Controller: JqGrid 데이터 요청 (SubAction=select) Controller->>Logic: SCREEN_04_001_Ajax_01(select) Logic->>DB: 조회 프로시저 호출 (usp_menu_auth_04) DB-->>Logic: 결과 세트 반환 Logic-->>Browser (TPL/JS): JSON 변환 후 반환 User->>Browser (TPL/JS): 그리드 행 수정/추가 후 "저장" 버튼 클릭 Browser (TPL/JS)->>Browser (TPL/JS): 유효성 검사 (전체조건 입력 방지 등) Browser (TPL/JS)->>Controller: JqGrid 수정 내역 전송 (SubAction=save) Controller->>Logic: SCREEN_04_001_Ajax_01(save) alt CrudMode == 'Insert' Logic->>DB: usp_menu_auth_04_in 호출 else CrudMode == 'Update' Logic->>DB: usp_menu_auth_04_up 호출 else CrudMode == 'Delete' Logic->>DB: usp_menu_auth_04_del 호출 end DB-->>Logic: 적용 성공 Logic-->>Browser (TPL/JS): 성공 여부 응답 (1) ``` ## 💾 5. 탭(Tab)별 연동 뷰(TPL) 및 DB 프로시저 상세 매핑 | 탭/액션 명칭 | 연동 뷰 파일 (TPL) | 호출 DB 프로시저 | 기능 설명 | | --- | --- | --- | --- | | **메인 뷰 (레이아웃)** | MenuAuthScreen_04_Main_mvc.tpl | - | 시스템 프로그램 코드 관리 및 검색 레이아웃 | | **목록 조회** | - | `usp_menu_auth_04` | JqGrid 상에 등록된 프로그램 코드, 매핑 파일 경로, DB 테이블 정보를 조회 | | **프로그램 추가 저장** | - | `usp_menu_auth_04_in` | JqGrid에서 신규 행으로 추가된 프로그램 정보를 DB에 삽입 | | **프로그램 수정 저장** | - | `usp_menu_auth_04_up` | 프로그램 정보(URL, 파라미터, 연결 컴포넌트 등) 업데이트 반영 | | **프로그램 삭제 반영** | - | `usp_menu_auth_04_del` | 선택한 프로그램 코드를 시스템 상에서 제거(삭제 플래그) |