Skip to content

L2 참조정보 공급 규약 (REFERENCE DATA SUPPLY) ​

항목내용
상태규약(신규) — 첫 준수 도메인은 프로세스(ProcessCenter)
범위도메인이 소유한 2차 기준정보(L2 참조정보) 를 다른 시스템이 참조할 수 있게 공급하는 공통 규칙
전제L1 최상단 기준정보(조직도·임직원·부서코드)의 정본은 PortalConsole 디렉터리다. L2 는 그 위에 얹힌다
관련ADMIN_MENU_CONVENTION.md(중앙 공급 규약의 선례), MODULAR_PORTAL_INSTALLATION.md(pull-and-cache), ProcessCenter/docs/PROCESS_REFERENCE_CONTRACT.md(첫 준수 도메인)

1. 왜 규약인가 ​

"이런 류의 운영 기준정보가 더 생긴다"는 전제가 이미 사실로 확인된다. 같은 성격의 데이터가 플랫폼 안에 여럿 흩어져 있다.

데이터현재 위치계층
조직도 · 임직원 · 부서코드PortalConsole 디렉터리L1 최상단
프로세스(노드 · RACI · 시스템 매핑)ProcessCenterL2 — L1 을 인용
용어사전(glossary)PortalConsoleL2
온톨로지 관계PortalConsoleL2
애플리케이션 유형PortalConsoleL2
부서장 역할 코드PortalConsole(shared/departmentHeadRole.ts)L2

도메인마다 제각각 공급하면 소비자는 도메인 수만큼 다른 계약을 배우게 된다. 그래서 한 번 정한 규칙을 모든 L2 도메인이 따른다. 반대로 "L2 는 모두 한 곳에 모은다"도 아니다 — 소유는 도메인에 두고, 공급 방식만 통일한다.

2. 기준정보 계층과 인용 규칙 ​

계층정의정본
L1 최상단 기준정보조직도 · 임직원 · 부서코드PortalConsole 디렉터리
L2 2차 기준정보(참조정보)L1 을 활용해 도메인이 만든 운영 기준정보. 도메인 안에서는 운영기준이고, 밖에서는 참조 기준각 도메인 서비스(예: 프로세스 = ProcessCenter)

인용 규칙 (필수)

  1. L2 는 L1 식별자를 인용한다 — 재정의하지 않는다(부서는 부서코드, 사람은 디렉터리 사용자 식별자).
  2. L2 끼리 참조할 때도 상대의 표준 식별자를 인용한다(예: 프로세스 노드 → 시스템 코드).
  3. 값(이름·라벨)을 복사해 보관하지 않는다. 표시가 필요하면 조회 시점에 해석한다 — 이름이 바뀌면 복사본이 어긋난다.
  4. L1 이 없는 상태에서 L2 를 만들지 않는다. L1 이 바뀌면 L2 의 참조가 먼저 정합해져야 한다.

3. 공급 규약 — L2 도메인이 지켜야 하는 5요소 ​

3.1 안정 표준 식별자 ​

  • 식별자는 업무 코드 기반이다. 내부 대리 키(auto increment id)를 외부에 내보내지 않는다.
  • 식별자는 유일성이 DB 제약으로 보장되어야 한다(코드에 unique 제약이 없으면 "표준 식별자"가 아니다).
  • 계층 구조는 부모의 표준 식별자로 표현한다(대리 키 경로 배열 금지).

3.2 읽기 전용 서버 간 계약 ​

  • 공급은 읽기 전용 REST 다. 참조 대상 도메인이 자기 데이터를 남이 만들게 하지 않는다.
  • 퍼블릭 API 가 아니다. 소비자는 발급받은 자격증명(서비스 키)으로 서버 간 호출만 한다. 키는 브라우저에 내려가지 않는다.
  • 소비자별 자격증명 + 스코프로 권한을 좁힌다(예: read 만).
  • 공급 도메인은 호출자의 사용자 컨텍스트(디렉터리 사용자 식별자)를 받아 원본 접근정책을 최종 적용한다 — 화면 숨김을 권한으로 대신하지 않는다.

3.3 버전 · 변경 피드 ​

  • 응답에 스냅샷 식별자와 버전을 담는다(소비자가 캐시 신선도를 판단할 수 있어야 한다).
  • 변경 피드를 제공한다(changedSince 같은 증분 조회). 전체 재수신만 있으면 소비자는 매번 전량을 받아야 한다.
  • 게시/승인 거버넌스가 있는 도메인은 게시본 기준으로 공급한다(작성 중·검토 중 값은 내보내지 않는다).

3.4 수명주기와 승계 ​

  • 상태를 계약에 명시한다(예: ACTIVE/INACTIVE/RETIRED).
  • 폐기·병합 시 승계(successor) 를 계약으로 표현한다 — 참조가 끊기면 소비자 매핑이 고아가 된다.
  • 소비자가 "없어진 참조"를 만났을 때의 규칙(승계로 이어받기 / 참조 무효화)을 문서에 적는다.

3.5 발견 · 온보딩 (제어평면) ​

  • 새 소비자는 PortalConsole 카탈로그에서 능력(capability)을 발견하고, 키 발급·스코프 승인을 받아 붙는다.
  • 즉 온보딩 비용은 "계약 학습 + 키 발급"이어야 하며, 소비자별 코드 수정이나 공급 도메인 배포를 요구하지 않는다.
  • 소비자 목록과 참조 관계(어느 시스템이 어느 대상을 참조하는가)는 추적 가능해야 한다 — 보존기간은 사내 정책을 따른다.

4. 소비자 규칙 ​

  1. 참조는 인용만 한다. L2 값을 자기 DB에 복제해 정본처럼 쓰지 않는다(캐시는 캐시일 뿐이다).
  2. L1 과의 교차 조회는 안정 식별자로 조인한다(예: 프로세스의 담당자 식별자 ↔ 디렉터리 사용자).
  3. 공급 도메인 장애 시 마지막 정상 캐시 → 로컬 시드 순으로 내려간다. 참조 실패로 자기 화면이 죽지 않게 한다(ADMIN_MENU_CONVENTION.md §4 의 폴백 규칙과 같다).
  4. 캐시 TTL·갱신 시점을 문서에 남긴다(소비자마다 다르면 장애 때 원인이 흩어진다).
  5. 게시본만 참조한다. 드래프트 상태 값을 기준으로 업무 판단(승인·매핑 확정)을 하지 않는다.

5. 적합성 체크리스트 (새 L2 도메인 온보딩) ​

#확인
1L1 식별자를 인용하는가(재정의·복사 없음)
2표준 식별자가 업무 코드 기반이고 유일성 제약이 있는가
3읽기 전용 + 서버 간 자격증명(퍼블릭 아님)인가
4스코프로 권한이 좁혀지는가
5스냅샷/버전 + 변경 피드가 있는가
6게시본 기준으로만 내보내는가
7수명주기·승계 규칙이 계약에 있는가
8PortalConsole 카탈로그로 온보딩되는가
9사용자 단위 접근정책을 공급 도메인이 최종 적용하는가
10소비자 캐시·폴백 규칙이 문서화되어 있는가

6. 적용 ​

도메인상태
프로세스(ProcessCenter)첫 준수 도메인 — 계약 v2 설계·확정(2026-09-20): ProcessCenter/docs/PROCESS_REFERENCE_CONTRACT.md
용어사전 · 온톨로지 · 애플리케이션 유형 · 부서장 역할기존 L2 후보 — 규약 적합성 점검은 후속(이관 여부는 각 소유 판단)

7. 확정된 결정 (2026-09-20) ​

#항목확정
1자격증명 발급 주체목표는 제어평면(PortalControlCenter) 카탈로그 연계. 첫 준수 도메인은 공급 도메인이 소비자별 키를 자체 관리로 시작하고, 카탈로그 연계는 후속(키 목록·스코프는 옮길 수 있게 데이터로 관리)
2표준 식별자 유일성전역 유일을 기본으로 한다. DB unique 제약으로 보장하며, 이미 제약이 있는 도메인은 재작업하지 않는다(제약 유무는 선언·마이그레이션·적용 DB 세 곳을 모두 확인해 판단한다). 분류 축(taxonomy)은 속성이지 식별의 필수 요소가 아니다
3코드 변경게시·확정 거버넌스가 있는 도메인은 확정 후 표준 식별자 변경을 서버가 거부한다. 불가피하면 새 식별자 + 승계 연결
4승계승계 필드는 먼저 계약에 두고, 값은 병합·폐기 기능을 만들 때 채운다. 소비자는 승계 추종/무효 표시 규칙을 따른다
5참조 추적구조화 요약만 기록(원문·비밀 없음). 보존 기간은 사내 정책 대기 — 임의 값을 코드에 넣지 않는다
6부속 목록 공급노드가 코드로 참조하는 부속 기준정보(예: 시스템 목록) 도 같은 규약으로 함께 공급한다 — 코드만 주고 이름을 못 찾게 두지 않는다

남은 외부 의존은 두 가지다.

  • 감사·추적 보존 기간 — 사내 정책 확정 전 값 없음.
  • L1 표준 표기 확정 — 부서코드·임직원 식별자의 표준 표기는 디렉터리 담당과 협의. 그 전까지 L2 는 기존 L1 키를 그대로 인용만 한다(새 표기를 만들어 쓰지 않는다).