---
template: policy-doc@1
doc_id: 01-glossary
title: 용어 정본 — actor 축 · 제공 단위 축 · 서비스 경계
config: ../_meta/template-config.yaml
last_verified: 4d798f55
policies:
  - id: ACTOR_AXIS
    status: active-prod
    evidence: [S-guard, S-contract, S-component]
    limitations:
      - 기업담당자의 기업역할 분기(CORP_SUPER · CORP_ORG)는 이 축이 담지 않는다. 별개 축이며 ../02-access/03-authz-capabilities.md 소관이다
      - 각 로그인 주체가 실제로 어떤 데이터를 보는지는 이 표의 범위 밖이다. 권한 배분은 ../02-access/ 가 맡는다
    anchors:
      - insuniverse-server/apps/api/src/modules/auth/admin/auth.service.ts:42
      - insuniverse-server/apps/api/src/modules/auth/admin/auth.service.ts:77
      - insuniverse-server/apps/api/src/modules/auth/admin/auth.service.ts:113
      - insuniverse-server/apps/api/src/modules/auth/user/auth.dto.ts:25
      - insuniverse-server/apps/api/src/modules/admin/admin.repository.ts:214
  - id: PROVIDER_UNIT_AXIS
    status: active-prod
    evidence: [S-guard, S-contract, S-schema]
    limitations:
      - 수수료율·정산 주기 같은 계약 각론은 이 축이 담지 않는다. 30-contracts-limits 소유 문서로 간다
    anchors:
      - insuniverse-server/apps/api/src/constants/admin.constant.ts:53
      - insuniverse-server/apps/api/src/modules/sales-agency/channel/sales-agency-channel.entity.ts:6
      - insuniverse-server/apps/api/src/constants/admin.constant.ts:54
      - insuniverse-server/apps/api/src/modules/agency/agency/agency.entity.ts:29
      - insuniverse-server/apps/api/src/modules/agency/agency/agency.entity.ts:34
      - insuniverse-server/apps/api/src/constants/client.constant.ts:36
      - insuniverse-server/apps/api/src/modules/client/contract/client-contract.dto.ts:13
  - id: SERVICE_BOUNDARY
    status: active-prod
    evidence: [S-route, S-component]
    anchors:
      - insuniverse-admin/src/app/router/index.ts:7
      - insuniverse-admin/src/app/router/index.ts:11
      - insuniverse-admin/src/app/router/index.ts:18
      - insuniverse-site/front/src/pages/terms/B2cPersonalInfoPage.tsx:12
---

# 용어 정본 — actor 축 · 제공 단위 축 · 서비스 경계

이 문서는 **누가 로그인하는가(A축)** · **계약과 수익이 누구에게 귀속되는가(B축)** · **그 둘이 어느 서비스에서 만나는가** 세 가지만 정한다. 두 축은 교차하며 어느 쪽도 다른 쪽을 포함하지 않는다 — 이것이 이 문서가 존재하는 이유다.

코드 식별자 사전(화면코드 · 에러코드 · 메뉴코드의 네임스페이스)은 여기 없다. 그것은 `02-identifier-namespaces.md` 가 맡으며 이 문서는 링크만 건다. 권한이 실제로 무엇을 막는지도 여기 없다 — `../02-access/` 소관이다.

## 정책 (기획)

### ACTOR_AXIS

시스템에 **로그인하는 주체**는 다섯 종류다. 운영사 콘솔로 들어오는 셋(관리자 · 영업대리점 · 기업담당자)과 이용자 웹으로 들어오는 둘(일반회원 · 기업회원)이다. 다섯은 서로 다른 로그인 화면을 쓰거나, 같은 화면에서 서로 다른 계정 종류를 고른다.

로그인에 성공하면 그 사람이 어느 종류인지가 발급되는 인증 정보에 적히고, 이후 모든 요청이 그 값으로 판정된다. 종류를 바꾸려면 다시 로그인해야 한다.

| 용어 | 코드 심볼 | 로그인 표면 | 관련 문서 |
|---|---|---|---|
| 관리자 | `admin` | 운영사 콘솔 admin 탭 | `../02-access/02-authz-roles.md` |
| 영업대리점 | `sales` | 운영사 콘솔 sales 탭 | `../02-access/02-authz-roles.md` |
| 기업담당자 | `corp` | 운영사 콘솔 corp·corpOrg 탭 | `../02-access/03-authz-capabilities.md` |
| 일반회원 | `MEM001` | 이용자 웹 | `../02-access/01-authn.md` |
| 기업회원 | `MEM002` | 이용자 웹 | `../02-access/01-authn.md` |

기업담당자는 한 행이다. 그 안에서 전사 범위와 조직 범위가 갈리지만 그것은 **로그인 주체의 종류가 아니라 같은 종류 안의 권한 등급**이며, 두 축을 한 목록에 섞으면 다섯이 일곱으로 보인다. 분기는 `../02-access/03-authz-capabilities.md` 가 서술한다.

### PROVIDER_UNIT_AXIS

계약이 맺어지고 수익이 귀속되는 단위는 세 종류다. 이 축은 로그인과 무관하다 — **고객사는 운영사 콘솔에 로그인하지 않는다.** A축만으로 문서를 짜면 고객사가 통째로 빠진다.

| 용어 | 코드 표면 | 계약 소재 | 데이터 범위 | 관련 문서 |
|---|---|---|---|---|
| 영업대리점 채널 | `SalesAgencyChannel` | 채널 단위 수수료 귀속 | 그 채널을 통해 가입한 회원 | `../03-contracts/05-external-client-api.md` |
| 기업/조직 | `Agency` · `agcCorporateCode` | 기업 계약 · 조직 단위 배분 | 그 기업에 소속된 기업회원 | `../02-access/03-authz-capabilities.md` |
| 고객사 | `ClientContract` · `ccnCode` | 고객사 계약서 | 계약 옵션이 허용한 분석 건 | `../03-contracts/05-external-client-api.md` |

아래 두 용어는 **A축의 원소도 B축의 원소도 아니다.** 어느 표에도 넣을 수 없어 각주로 남긴다.

| 용어 | 지위 | 근거 |
|---|---|---|
| GA(법인대리점) | `출처: 구술` · 저장소 근거 없음 | 동결 SHA 실측(2026-08-25) — `insuniverse-site` 3파일 4행. `insuniverse-site/front/src/features/agreementForm/constants/b2cAgreementContents.const.tsx:16` · 같은 파일 `insuniverse-site/front/src/features/agreementForm/constants/b2cAgreementContents.const.tsx:70` · `insuniverse-site/front/src/pages/terms/B2cPersonalInfoPage.tsx:12` · `insuniverse-site/front/src/pages/terms/B2cSensitiveInfoPage.tsx:12`. 전부 약관 수탁사 나열문이며 정의가 아니다. `insuniverse-server`·`insuniverse-admin` 은 0행 |
| 비회원 | 로그인 주체 아님 — A축의 여집합인 비로그인 표면 | 인증 guard 가 걸리지 않은 POST 경로 `insuniverse-server/apps/api/src/modules/treat/treat.controller.ts:68`. 같은 자리의 `@UseGuards` 는 레이트리밋 전용이라 인증을 세우지 않는다 `insuniverse-server/apps/api/src/modules/treat/treat.controller.ts:69` |

### SERVICE_BOUNDARY

서비스는 셋으로 갈린다. 이용자가 보는 웹, 운영사와 대리점과 기업담당자가 보는 콘솔, 그리고 둘 다를 받는 서버다. 콘솔은 한 배포물이지만 로그인한 종류에 따라 **서로 다른 화면 묶음**으로 갈라진다 — 같은 주소에서 같은 화면을 보는 것이 아니다.

이 경계가 용어 문서에 있는 이유는 하나다. 같은 낱말이 서비스마다 다른 것을 가리키는 일을 막으려면 먼저 서비스가 몇 개이고 어디서 갈리는지가 고정돼야 한다.

## 강제 지점 (개발)

### ACTOR_AXIS

- 강제 방식: 로그인 서비스가 인증 payload 에 종류를 박는다. 이후 판정은 그 값을 읽는다.
- 관리자 — `role: 'admin'` payload 발급. `insuniverse-server/apps/api/src/modules/auth/admin/auth.service.ts:42`
- 영업대리점 — `role: 'sales'` payload 발급. `insuniverse-server/apps/api/src/modules/auth/admin/auth.service.ts:77`
- 기업담당자 — `role: 'corp'` payload 발급(같은 자리에서 `corpScope` 가 함께 실린다). `insuniverse-server/apps/api/src/modules/auth/admin/auth.service.ts:113`
- 일반회원 — 로그인 타입 열거 `MEM001` 을 `@IsEnum(['MEM001', 'MEM002'])` 이 강제한다. `insuniverse-server/apps/api/src/modules/auth/user/auth.dto.ts:25`
- 기업회원 — 로그인 타입 열거 `MEM002`. 조직 담당자 조회 조건이 이 값을 건다. `insuniverse-server/apps/api/src/modules/admin/admin.repository.ts:214`

### PROVIDER_UNIT_AXIS

- 강제 방식: 엔티티 + 삭제 제약 상수. 계약 단위가 참조되고 있으면 삭제가 막힌다.
- 영업대리점 채널 — 채널 사용 중 삭제 거부 상수 `insuniverse-server/apps/api/src/constants/admin.constant.ts:53` · 채널 엔티티 선언 `insuniverse-server/apps/api/src/modules/sales-agency/channel/sales-agency-channel.entity.ts:6`
- 기업/조직 — 대리점 경유 기업 삭제 거부 상수 `insuniverse-server/apps/api/src/constants/admin.constant.ts:54` · 기업 엔티티의 기업명 `insuniverse-server/apps/api/src/modules/agency/agency/agency.entity.ts:29` · 기업코드 `insuniverse-server/apps/api/src/modules/agency/agency/agency.entity.ts:34`
- 고객사 — 계약 옵션 미보유 거부 상수 `insuniverse-server/apps/api/src/constants/client.constant.ts:36` · 계약 옵션 조회 DTO 가 무는 `ccnCode` `insuniverse-server/apps/api/src/modules/client/contract/client-contract.dto.ts:13`

### SERVICE_BOUNDARY

- 강제 방식: 콘솔 라우터 3벌. 로그인 결과에 따라 어느 라우터를 붙일지가 정해진다.
- admin 화면 묶음 — `insuniverse-admin/src/app/router/index.ts:7`
- sales 화면 묶음 — `insuniverse-admin/src/app/router/index.ts:11`
- corp 화면 묶음 — `insuniverse-admin/src/app/router/index.ts:18`
- 이용자 웹 — 약관 표면이 site 에만 있다. `insuniverse-site/front/src/pages/terms/B2cPersonalInfoPage.tsx:12`

## 적용 범위 (actor × 서비스)

| 정책 id | server | site | admin |
|---|---|---|---|
| ACTOR_AXIS | 강제 지점 | 이용자 로그인 표면 | 콘솔 로그인 표면 |
| PROVIDER_UNIT_AXIS | 강제 지점 | — | 조회·관리 경로 |
| SERVICE_BOUNDARY | 강제 지점 | 진입 표면 | 진입 표면 |

`—` = 그 서비스가 이 정책의 경로에 등장하지 않음.

이 표의 열은 서비스 3종이며 actor 는 열이 아니다. `template-config.yaml` 의 `actors:` 는 이 마일스톤이 A축에서 유도해 정정하는 값이라, 그것을 열 이름으로 쓰면 이 문서가 자기 산출물에 결박된다.

**비로그인 표면.** A축은 로그인하는 주체만 담는다. 로그인하지 않고 닿는 표면(본인확인 요청처럼 인증 없이 열린 경로)은 A축의 원소가 아니라 그 여집합이며, 위 각주 표 두 번째 행이 그 자리다. 이 표면에서 무엇이 허용되는지는 `../02-access/01-authn.md` 가 정한다.

## 예외·폴백

| 정책 id | 예외 조건 | 폴백 동작 | 확인 근거 |
|---|---|---|---|
| ACTOR_AXIS | 기업담당자 안에서 전사 범위와 조직 범위가 갈릴 때 | 이 표는 기업담당자 1행으로 접는다. 분기 서술은 `../02-access/03-authz-capabilities.md` 가 맡는다 | `insuniverse-server/apps/api/src/modules/auth/admin/auth.service.ts:113` |
| ACTOR_AXIS | 로그인하지 않고 닿는 표면 | A축 원소가 아니다. 각주 행으로 내려간다 | `insuniverse-server/apps/api/src/modules/treat/treat.controller.ts:68` |
| PROVIDER_UNIT_AXIS | 고객사 | 콘솔 로그인 표면이 없어 A축과 교차하지 않는다 | `insuniverse-server/apps/api/src/constants/client.constant.ts:36` |
| SERVICE_BOUNDARY | 콘솔 3탭이 한 배포물이라 서비스가 하나로 보일 때 | 라우터가 3벌로 갈리므로 화면 묶음은 서로 다르다 | `insuniverse-admin/src/app/router/index.ts:7` |

## 용어 요청 처리

형제 PRD 는 이 문서를 직접 편집하지 않는다. `docs/_meta/term-requests/` 에 요청을 적고 이 PRD 가 병합한다. 아래는 마일스톤 1 시점의 병합 결과다.

| 요청 ID | 요청 축 | 판정 | 정본 표기 | 정의 수록처 |
|---|---|---|---|---|
| T-01 | `12-index-runtime` · 진료수집 외부 연동 주체 | 확정 (2026-08-25) | `vendor` | `../06-vendors/` — `40-runtime-vendor-legal` 소유 |
| T-02 | `12-index-runtime` · `철회` 표기 중의성 | 확정 (2026-08-25) | `동의 철회` | `../07-legal/` — `40-runtime-vendor-legal` 소유 |
| 10-index-git | 용어 신설·정의 변경 요청 0건 선언 | 병합 대상 없음 (2026-08-25) | — | 해당 없음 |

**T-01** 은 제안 정본을 그대로 확정했다. 세 표기(`vendor` · `provider` · `scraper`)가 같은 5종 집합을 가리키고, 그중 집합 자체를 닫는 타입이 있는 표기는 하나뿐이다.

**T-02** 는 표기를 하나로 통일하지 **않는다.** 두 뜻이 실제로 다른 대상이라 한쪽을 정본으로 정하면 나머지가 전부 오표기가 된다. 법적 표면에서만 전개형 `동의 철회` 를 쓰고 단독 표기를 쓰지 않는 것이 두 축을 가르는 최소 변경이다.

두 용어는 A축·B축 어느 쪽의 원소도 아니므로 이 문서는 표기 정본만 판정하고 정의문은 수록처 PRD 로 회부한다.

## 연혁

릴리스 태그가 존재하지 않는다. 릴리스 열은 `—` 로 두고 커밋 SHA 로 추적한다.

| 릴리스 | 날짜 | SHA | 변경 요약 |
|---|---|---|---|
| — | 2026-08-25 | `007c14b` | 문서 신설. A축 5행 · B축 3행 · 서비스 경계 3벌 · 각주 2행 · 용어 요청 3건 판정 |
