PillarTwo Architect 코드베이스
소스 구성과 실행 흐름, 계산 알고리즘과 기능별 구현 내용을 정리했습니다.
제품 역량
규정 판정, 분석 결과, 실무 기능과 기술 기반을 구현 코드와 함께 정리했습니다.
항목 집계 중제품 역량을 불러오는 중입니다.
항목을 선택하면 지원 범위, 해설과 관련 코드를 표시합니다.
소스 파일 카탈로그
파일명, 역할, 주요 함수와 직접 의존관계를 검색해 세부 내용을 확인할 수 있습니다.
카탈로그 집계 중소스 파일 카탈로그를 불러오는 중입니다.
파일을 선택하면 역할과 직접 의존관계를 표시합니다.
제품 소스 지도
타일 면적은 각 영역의 JavaScript 소스 규모를 대략적으로 나타내며, 숫자는 파일 수입니다. 제품 런타임, 저장소 자동화 스크립트와 반복 품질검사 기반을 함께 집계합니다.
app-state · app-runtime · translations · _bridge · modal-*render · routing · ix-* · minimap-globerelationship-* · tax-allocation-* · globe-* · panel-* · tp-*gir-model · gir-calc · gir-workspacecbcr-* · setr-* · sh-*globe/period/compare engine · analysis-* · rule datalayout-io · ooxml · docx/xlsx/pptxdisc-* · disclosure-*wif-* · whatif-*번들 빌드 · 콘텐츠·데이터 생성 · 카탈로그·릴리스통합·브라우저 회귀검증 · 분석 시나리오 · 실행기앱 번들 구성
ESM 모듈을 먼저 평가한 뒤, 순서가 고정된 두 레거시 파트를 연결합니다.
src/modules/_bridge.mjsesbuild IIFEapp-runtime.js
src/app/_MANIFEST.json상태 선언 → 부트·오케스트레이션레거시 셸 후행
globe-engine.min.jsperiod-engine.min.jscompare-engine.min.jsiir-db.min.jsecb-fx.min.jstranslations.*.min.jsminimap-globe.min.js분석 흐름
구조와 규정 입력을 검증한 뒤 GloBE 엔진을 실행하고, 기중 구간이 있으면 구간별 결과를 추가 계산합니다. 기간·적용면제를 반영한 결과는 AnalysisContext로 교체되며, 화면과 산출물은 그 결과를 기준으로 후속 모델을 구성합니다.
소유지분구조·아키텍처 유입
직접 편집, 소유지분구조 Excel, .p2a 또는 공유자료를 검증해 기업과 소유지분관계로 정규화
architecture-import · layout-io · project-state-contract → nodes · edges규정·사업연도
기준일, 사업연도, 국가별 IIR·UTPR·QDMTT 설정
referenceDate · countryGlobeSettings · IIR_DB기간·적용면제
관계 구간과 구간별 손익, CbCR·SETR 직접·기업별 입력에서 확정한 적용 대상
segments · periodIncome · cbcr/setr input → exempt entity IDs사전 검증
ID, 참조, 중복 관계, 비율, 순환출자와 최종모기업 조건 확인
_validateAnalysisInputs · analysis-validation엔진 입력 조립
화면 상태를 기업·관계 배열과 분석 시점의 규정 설정으로 변환
_assembleEngineInputs · analysis-input-adapterGloBE 엔진 실행
Worker에서 소유·지배·배분행렬과 역할 벡터 계산
_executeEngine → runGloBEEngine기말 단일 시점
기말 결과에 QDMTT·UTPR 및 CbCR·SETR 적용면제를 한 번 반영
_applySafeHarborsToEngineResult기중 변동
변동일 기준 사업연도 구간 분할과 Worker pool의 구간별 GloBE 엔진 실행. 전체 결과 합류 후 적용면제의 구간 순차 반영 및 소득가중·기간가중 합산
runPeriodWeightedGloBE · mergePeriodResultIntoPrimary기간 분석 대체
구간 실행이 실패하면 기말 결과를 유지하고 적용면제와 분석 경고를 반영
PERIOD_FALLBACK합산단위·비대상
기간·적용면제를 반영한 결과로 기업별 합산단위와 비대상 집합을 생성
globe-au-unitsAnalysisContext
행렬, 합산단위, 적용면제, 입력 스냅샷과 규정 기준을 한 객체로 교체
_commitAnalysisContext()그래프·패널
render · panel-* · minimap추가세액·관계 조회
확정 분석과 입력 스냅샷을 과세흐름도·과세행렬·소유지분관계·캔버스 요약용 모델로 투영
relationship-projection → relationship-workspace실무 표시
CbCR · SETR · GIR · disclosureWhat-if
A·B에 고정한 입력 스냅샷과 분석 요약을 의미 단위로 비교
compare-engine · wif-core아키텍처·산출물
.p2a에는 입력 상태를 저장하고, Office 파일은 확정 분석에서 생성
.p2a inputs · DOCX · XLSX · PPTX실행 시퀀스
실선은 호출, 점선은 반환입니다. 기중 변동과 오류 복구는 UML 결합 프래그먼트로 구분했습니다.
_validateAnalysisInputs · runAnalysis · _assembleEngineInputsWorker pool(runGloBEEngine) · Promise.allpanel-* · relationship-* · cbcr-* · setr-* · gir-* · disc-* · doc-ioalt는 배타적 분기, opt는 조건부 실행, break는 중단 후 대체 경로를 나타냅니다.결과 일관성
분석 결과는 한 번에 확정하며, 화면과 산출물은 같은 AnalysisContext를 조회합니다.
| 경계 | 구현 | 효과 |
|---|---|---|
| 단일 실행 | _analysisBusy · _spinnerBusy | 동시에 두 분석이 같은 결과 상태를 갱신하지 않도록 차단 |
| Worker 복구 | runWorkerRequest · runWithWorkerRecovery | 전송 오류나 시간 초과 시 Worker를 교체하고 한 번 재시도 |
| 결과 일괄 교체 | _commitAnalysisContext | 행렬·합산단위·적용면제·입력 스냅샷·규정 기준을 같은 세대로 공개 |
| 후행 판정 보완 | _patchAnalysisContext | 확인 필요 항목과 최종성만 현재 세대에 추가하고 계산 결과는 유지 |
| 조회 모델 분리 | relationship-projection · tax-allocation-model | 확정 분석과 입력 스냅샷을 변경하지 않고 관계·과세흐름 표시 모델을 생성 |
| 편집 후 구분 | markDirty → _markAnalysisStale | 새 입력과 직전 분석 결과가 다른 상태임을 화면과 산출물 진입점에서 구분 |
| 산출물 진입 | ensureFinalAnalysis | 확정되지 않은 분석 결과로 신고·보고 문서를 생성하지 않도록 차단 |
계산 엔진
GloBE, 기간, What-if 비교 로직은 DOM과 분리된 계산 모듈로 Node.js 테스트에서 직접 호출됩니다. GloBE 커널은 같은 공개 함수로 Worker와 소규모 메인 스레드 대체 경로에서 실행됩니다.
GloBE Engine
src/engine/globe-engine.js- 입력 경계ID·관계·소유지분비율을 검증하고 검증된 실행 컨텍스트 생성
validateEngineInputs → prepareEngineInput - 순환출자순환출자 관계의 누적 효과를 Gauss–Jordan 역행렬로 계산하고 특이행렬은 오류로 중단
computeOwnershipClosure - 자기주식외부 주주의 소유지분을 1 − 자기주식비율로 gross-up해 실질 소유지분흐름에 반영
grossUp - 기업 분류회계처리·지배·소유 조건에서 구성기업, 공동기업·자회사, 소수지분구성기업, 부분소유모기업, 중간모기업 역할 벡터 생성
consolidationTest · vectors - IIR·UTPR직접·간접 소유지분에 따라 추가세액을 모기업에 배분하고 적격 IIR·UTPR 납부주체별 배분행렬 생성
allocateTax
Period Engine
src/engine/period-engine.js- 소유지분비율 변경일의 합집합으로 사업연도 구간 생성
- 구간별 유효 관계로 GloBE 커널을 실행하고 Worker pool을 사용할 수 있으면 병렬 처리
- 소득·결손을 적용한 소득가중치 산출
- 배분행렬과 UTPR은 소득가중, 소유행렬은 기간가중으로 합산
Compare Engine
src/engine/compare-engine.js- 레이아웃을 제외한 A·B 스냅샷에서 의미 필드만 비교
- 노드·엣지 변동을 중간기업 삽입·제거 및 기업 처분 등 구조변경 항목으로 분류
- 합산단위·납부주체·과세규정·금액 변동을 분리
- 비교 결과에서 적용범위·과세규정·납부주체·금액 영향을 구조화
복합 소유지분구조와 기간의 처리
단순 기말 소유지분비율로 환원하지 않고 회계처리, 자기주식, 순환출자와 사업연도 중 변동을 각각의 계산 단계에서 보존합니다.
회계처리와 기업 역할
연결·지분법·기타 관계와 사용자가 확인한 지배관계 구분에 따른 연결범위, 공동기업 계열 및 모기업 역할 판정
globe-engine.js · globe-clarify.mjs자기주식과 순환출자
복수 자기주식 관계 합산 및 gross-up, 행렬 폐쇄를 통한 직접·간접 소유의 누적 효과와 순환출자 구조 계산
grossUp · computeOwnershipClosure기중 소유·회계처리 변동
소유지분비율·회계처리·미보유 구간 경계일의 합집합을 기준으로 소유지분구조가 일정한 구간 생성 및 구간별 동일 분석 엔진 실행
segmentsToWorking · buildPeriodEdgeList구간별 소득·결손 귀속
구간별 글로벌최저한세소득·결손을 적용한 소득산입비율 가중 및 미입력 구간의 기간가중 처리
signedIncomeWeights · runPeriodWeightedGloBE그래프 시각화 알고리즘
포트·번들
평행 관계를 버스로 묶고 도착 포트를 분산
computeEdgeBundles · computeArrivalPorts레인·통로
구간 레지스트리로 충돌을 계산하고 직교 경로를 배정
computeEdgeLanes · getEdgeRoute가상화
카메라 전용 렌더에서 공간 색인으로 화면 범위 후보를 조회하고 LOD에 따라 라벨·브리지 비용을 조절
graph-viewport-index · viewportOnlyDOM 동기화
노드 내용을 먼저 반영하고 실제 높이로 관계선·코인·덱을 배치
render.mjs · node-element.mjs아키텍처 데이터의 연결
소유지분정보·재무정보·소재지국 및 적용면제 관련 정보를 하나의 아키텍처에 보존하고, 동일한 분석 결과를 검토 화면과 후속 업무에 반영합니다.
소유지분구조·기간
기업, 소유지분, 회계처리, 기중 구간
nodes · edges · segments재무정보·적용면제
추가세액·배분비율, CbCR·SETR 직접·기업별 입력
topUpAmount · tax allocation · cbcr/setrFinancials규정·신고정보
사업연도, 국가 설정, GIR 메타·계산표 입력
IIR_DB · countryGlobeSettings · gir*아키텍처 파일(.p2a)
허용 필드와 참조 검증, 기능별 상태의 일괄 저장·복원
project-state-contract · layout-io · STATE_SLICES소유지분구조 분석·패널 생성
기업 분류, 합산단위·납부주체, QDMTT·IIR·UTPR 판정
AnalysisContext · panel-entity/au/payer추가세액 검토·관계 조회
국가·합산단위·기업별 입력과 과세흐름·소유지분구조의 조회 목적별 투영
relationship-tax-io · relationship-projection · relationship-workspace적용면제 피드백
CbCR·SETR 판정 결과를 대상 기업 ID로 다음 분석에 반영
cbcr/setr result → exempt entity IDs후속 업무
사전 컴플라이언스, 공시문안, GIR 잠정 작성, What-if와 Office 산출물
panel-compliance · disc-* · gir-* · exports노드 주변의 정보·행동 배치
노드 주변의 여덟 구역은 정보 종류와 조작 대상을 분리합니다. 칩과 배지는 분석 상태를 나타내고, 호버·클릭·고정 동작은 같은 선택 상태를 캔버스·패널·미니맵에 전달합니다.
호버하면 같은 국가 기업을 강조하고, 클릭하면 해당 국가의 합산단위 패널을 엽니다.
country-chip회계처리·지배관계 확인 배지와 상단 소유지분관계 연결점이 같은 위치를 공유합니다.
ccb · handle.n공동기업·소수·투자기업 또는 제외·비대상 상태를 표시합니다. 호버·클릭으로 같은 합산단위를 조회합니다.
au-type-chips확인된 지배기업을 표시하며, 호버하면 대상기업·후보 소유기업과 관련 소유지분관계를 강조합니다.
ctrl-tag동질기업 또는 접힌 하위기업 수를 표시하며, 클릭하면 소유지분구조를 펼치거나 접습니다.
stack-badge · fold-tab최종모기업·부분소유모기업·중간모기업 상태를 표시합니다. 호버하면 IIR 과세흐름을 시각화하고, 클릭하면 납부주체 패널을 엽니다.
pe-chip하단 소유지분관계 연결점과 중복명·소유지분비율 100% 초과 경고를 표시합니다.
handle.s · node-warns자기주식 입력과 구성기업별 추가세액의 과세규정·납부주체를 확인합니다. 코인 더블클릭은 금액 입력창을 활성화합니다.
treasury-btn · coin-chip- 호버
- 관련 기업·관계와 과세흐름을 일시적으로 강조
- 클릭
- 기업 또는 합산단위·납부주체 패널을 열고 선택 상태를 유지
- 우클릭 고정
- 지원 칩·코인 시각화를 다른 탐색 중에도 유지
- 더블클릭
- 기업·관계 편집 또는 추가세액 금액 입력창을 활성화
- Esc
- 고정 시각화와 임시 선택을 공통 순서로 해제
styles.css · period-view · wif-stacksnode-element.mjs가 DOM과 입력 동작을 만들고, render::_syncNodeElement가 분석 상태를 동기화하며, panel-hl-store · ix-viz-lock이 미리보기와 고정을 관리합니다.소유지분구조와 과세흐름의 시각화
기업 선택 상태를 캔버스·미니맵·Spine에 연결하고, 대규모 아키텍처는 조회 목적에 맞게 투영하여 소유지분관계와 과세흐름을 함께 확인합니다.
소유지분관계
연결 관계는 실선, 지분법 관계는 점선으로 구분하고 소유지분비율을 관계선에 표시합니다. 직교 경로는 기업을 피해 배치하며 교차점은 아치로 구분합니다.
routing · render · segdrag-bridges추가세액 코인·IIR 과세흐름
코인 칩을 선택한 기업의 과세흐름을 시각화합니다. 적용되는 IIR 모기업과 소득산입비율을 소유지분구조 위에서 확인할 수 있습니다.
globe-coin-viz · globe-iir-flow · ix-viz-lock미니맵 국가 코멧
구성기업 소재지국에서 IIR 모기업 소재지국으로 이어지는 국가 간 과세흐름과 이동 구간을 미니맵(GloBE)에 표시합니다.
globe-flow-arcs · minimap-globeSpine
선택기업의 상향 대표 경로와 하향 소유트리를 압축해 직접·유효 소유지분비율과 단계별 소유지분구조를 조회합니다.
spine · tp-tiers · panel-export-model과세흐름·소유구조 조회
과세흐름도·과세행렬·기업 간 소유지분관계·캔버스 요약으로 대규모 아키텍처의 출발·경유·도착과 구조 연결을 조회합니다.
relationship-projection · relationship-workspace세 패널의 검토 흐름
기업·합산단위·납부주체 패널은 같은 AnalysisContext와 판정 함수를 사용합니다. 추가세액 검토에서 확정한 배분 결과도 같은 결과 어댑터를 통해 각 패널에 반영되며, 기업 선택은 캔버스·미니맵·Spine과 연동됩니다.
기업 단위 근거 확인
- 기업 분류·Tier·모기업 역할
- 소속 합산단위와 추가세액
- IIR 의무·기중 상태·컴플라이언스
- 공시문안과 기업 리포트
panel-entity-render · panel-entity국가·합산단위 검토
- 국가별 합산단위와 구성기업
- QDMTT·적용면제 상태
- 소속 기업 추가세액배분액 합계
- CbCR·SETR 입력 위치와 리포트
globe-au-units · panel-au*과세규정 및 납부주체 검토
- QDMTT·IIR 납부주체와 UTPR 배분 대상
- 구성기업별 배분비율·금액
- 적용면제·미과세 구성 요약
- IIR 화살표·국가 코멧 연동
tp-payers · payer-blocks · panel-payer*panels · panel-hl-store · panel-export-model · doc-io정적 배포와 브라우저 실행 구조
정적 파일 호스트는 제품 파일만 제공하고, 사용자 브라우저가 화면 처리, 계산, 아키텍처 저장과 문서 생성을 담당합니다.
정적 파일 호스트
표준 HTTP 서버에서 HTML·CSS·축소 번들·국가 데이터와 생성 자료를 제공합니다.
index.html · *.min.js · *.json
화면 렌더링·앱 상태·분석 실행
DOM·SVG 화면, 아키텍처 상태, AnalysisContext와 각 워크스페이스를 관리하고 Office 문서를 조립합니다.
app.min.js · src/modules · src/app
계산 전용 실행 영역
구조·규정 스냅샷을 받아 소유·지배·배분행렬을 계산하고 진행률과 결과를 메인 스레드에 반환합니다.
globe-engine-worker.js
globe-engine.min.js
- 로컬 파일 .p2a·Excel 불러오기와 파일 저장
- IndexedDB 최근 파일 메타데이터·파일 핸들과 로컬 구조 템플릿
- localStorage 화면·언어·동의 설정
- Blob 출력 DOCX·XLSX·PPTX 생성
기능과 소스의 연결
각 기능의 진입점부터 상태, 계산 모듈과 산출물까지 이어지는 소스 경로입니다.
| 기능 | 입력·상태 | 핵심 처리 | 화면·산출물 |
|---|---|---|---|
| 아키텍처·소유지분구조 입력 | 직접 편집 · 소유지분구조 Excel · .p2a/공유 · 소유지분구조 템플릿 | architecture-import · project-state-contract · layout-io | render · node-element · regions · spine · 최근 파일 |
| 적용 범위·기업 분류 | analysis-input-adapter · mne-scope | globe-engine · globe-engine-worker | analysis-state · role vectors |
| 합산단위·납부주체 | AnalysisContext · topUpAmount | globe-au-units · tp-payers · payer-blocks | panel-entity · panel-au · panel-payer |
| 추가세액 검토·관계 조회 | topUpAmount · QDMTT/UTPR 배분 · Excel 다운로드/불러오기 | relationship-tax-io · tax-allocation-model · relationship-projection | 추가세액 검토 · 과세흐름도 · 과세행렬 · 소유지분관계 · 캔버스 요약 |
| 기중변동 | modal-period · modal-edge-editor | period-engine · app-runtime | analysis-state · render · panels |
| CbCR | cbcr-import · cbcr-sh-ui | cbcr-sh · cbcr-input-completeness | cbcr-status-view · cbcr-export |
| SETR | setr-import · setr-sh-ui | setr-sh-derive · setr-sh | setr-sh-ui · setr-export |
| 국가 제도·환율 | referenceDate · countryGlobeSettings · currency | iir-db · rule-periods · qdmtt-policy · ecb-fx | globe-settings · 기준 설정 · CbCR/SETR 환산 |
| GIR 잠정 작성 | gir-workspace · gir-model · girMeta/girCalc | gir-calc · gir-gates · gir-section* | gir-nav · gir-section1 · gir-section2 · gir-section34 |
| What-if | wif-core · wif-run | compare-engine · wif-sbs | wif-stacks · wif-export-model · whatif-export |
| 국가별 컴플라이언스 | AnalysisContext · IIR_DB · 기업·국가 선택 | tp-compliance · panel-compliance | 직접·관련 의무 · 신고·등록·기한 · DFE 후보 |
| 공시문안 | disc-scenarios · disclosure-note-state | disc-build · disc-terms | disclosure-ui · disclosure-export |
| Casebook | showcase-data · QA_UI | showcase.mjs · 검색·분류 | 실무 Q&A 갤러리 |
| 저장·Office | layout-io · project-state-contract | panel-export-model · ooxml · doc-io | .p2a · docx · xlsx · pptx |
사례 라이브러리·공시문안·GIR 안내·사전 컴플라이언스 생성은 각 전용 명령으로 수행하며 build:all에 포함되지 않습니다. ECB 소스 파일은 공개 데이터에서 생성하므로 직접 편집하지 않습니다.
업무 자료의 편집·생성 경로
규정·실무 자료는 원본에서 관리하고, 빌드한 런타임 파일을 각 기능에서 사용합니다.
| 자료 | 편집 원본 | 생성 | 런타임 소비 |
|---|---|---|---|
| Casebook | src/content/showcase/showcase-qa*.md | build-showcase-data.js → showcase-data.js | showcase.mjs |
| 공시문안 | src/content/disclosure/disclosure-templates*.md | build-disclosure-templates.js → disclosure-templates.js | disc-template-data → disc-build / disclosure-ui |
| GIR 작성 안내 | src/content/gir-guide | build-gir-guide.js → gir-guide.json | gir-workspace.mjs |
| 사전 컴플라이언스 | precompliance-detail.json · precompliance-light.js | build-precompliance-i18n.js → locale 자료 | panel-compliance.mjs |
| 국가별 IIR·UTPR·QDMTT | src/data/iir-db.js | build:iir → iir-db.min.js | IIR_DB → 국가 설정·기간·납부 판정 |
| ECB 환율 | ECB 공개 데이터 · fetch-ecb-fx.js 템플릿 | src/data/ecb-fx.js → ecb-fx.min.js | CbCR·SETR 통화 환산 |
주요 약어 색인
제품 화면과 소스에서 반복해서 사용하는 글로벌최저한세 용어와 구현상 축약을 구분해 정리했습니다.
과세규정·적용면제
- GloBE
- 글로벌최저한세 규칙Global Anti-Base Erosion Rules
OECD 필라2에서 글로벌최저한세의 적용범위와 계산·배분 방식을 정한 규칙 체계
- IIR
- 소득산입규칙Income Inclusion Rule
모기업의 추가세액 부담과 배분 판정
- UTPR
- 소득산입보완규칙Undertaxed Profits Rule
QDMTT·IIR로 과세되지 않은 추가세액의 배분 판정
- QDMTT
- 적격소재국추가세Qualified Domestic Minimum Top-up Tax
구성기업 소재지국의 우선 과세 판정
- ETR
- 실효세율Effective Tax Rate
적용면제와 글로벌최저한세 계산에서 사용하는 세율
- SBIE
- 실질기반제외소득금액Substance-based Income Exclusion
급여와 유형자산을 기준으로 산정하는 제외소득금액
- SH
- 적용면제Safe Harbour
cbcr-sh·setr-sh등 파일명에서 사용하는 축약 - SbS
- Side-by-Side 세이프하버Side-by-Side Safe Harbour
미국 최종모기업 그룹의 IIR·UTPR 적용 여부 판정
신고·재무정보
- GIR
- 글로벌최저한세정보신고서GloBE Information Return
그룹·기업·소재지국별 신고정보 작성 영역
- CbCR
- 국가별보고서Country-by-Country Report
전환기 적용면제의 원천자료와 입력 워크스페이스
- SETR
- 간이실효세율Simplified Effective Tax Rate
간이실효세율 적용면제 요건과 입력 워크스페이스
- DFE
- 지정신고기업Designated Filing Entity
다국적기업그룹을 대표해 GIR을 제출하도록 지정된 구성기업
- QCAA
- 정보교환협정Qualifying Competent Authority Agreement
신고기업 소재지국과 구성기업 소재지국 사이의 적격 정보교환 관계
- MCAA
- 다자간 정보교환협정Multilateral Competent Authority Agreement
GIR 자동 정보교환에 사용하는 다자간 협정
- TIN
- 납세자번호Tax Identification Number
GIR과 기업정보에 사용하는 세무 식별번호
- FY
- 사업연도Fiscal Year
규정 적용기간과 분석 기준기간
- PBT
- 세전이익(손실)Profit (Loss) Before Tax
CbCR·SETR 입력과 적용면제 판정에 사용하는 재무정보
- ECB
- 유럽중앙은행European Central Bank
CbCR·SETR의 기준 통화 환산에 사용하는 환율 자료 출처
- FX
- 환율Foreign Exchange
판정단위 입력 통화와 EUR 기준금액 사이의 환산
기업·소유지분구조
- MNE
- 다국적기업Multinational Enterprise
MNE Group은 다국적기업그룹을 의미
- CE
- 구성기업Constituent Entity
글로벌최저한세 적용 대상 그룹에 포함되는 기업
- UPE
- 최종모기업Ultimate Parent Entity
다국적기업그룹의 최상위 모기업
- IPE
- 중간모기업Intermediate Parent Entity
다른 구성기업의 소유지분을 직·간접 보유하는 구성기업 중 최종모기업·부분소유모기업이 아닌 모기업
- POPE
- 부분소유모기업Partially-Owned Parent Entity
다른 구성기업의 소유지분을 직·간접 보유하고, 그룹 외부인이 그 이익에 대한 소유지분의 20% 초과를 보유하는 모기업
- MOCE
- 소수지분구성기업Minority-Owned Constituent Entity
연결대상 구성기업 중 최종모기업의 직·간접 소유지분비율이 30% 이하인 기업
- MOPE
- 소수지분모기업Minority-Owned Parent Entity
소수지분하위그룹의 최상위 모기업
- JV
- 공동기업Joint Venture
최종모기업의 연결재무제표에 지분법으로 반영되고, 최종모기업이 직·간접 소유지분비율 50% 이상을 보유하는 기업
- PE
- 모기업Parent Entity
최종모기업·중간모기업·부분소유모기업을 통칭
- AU
- 합산단위Subgroup
내부 모델·패널 모드의 축약이며, 국가코드
AU는 호주를 의미
코드·데이터 형식
- P2A
- PillarTwo ArchitectPillarTwo Architect
제품명 축약이며
.p2a는 아키텍처 데이터 파일의 확장자 - tp
- 계층·납부주체 모듈 접두사Tiers / Payers
tp-tiers·tp-payers·tp-safeharbor·tp-compliance모듈군 - disc
- 공시 모듈 접두사Disclosure
공시 시나리오 분류, 용어 치환과 공시문안 생성 모듈군
- wif
- What-if 모듈 접두사What-if
기준안과 비교안의 분석·비교·Side-by-Side 조회 모듈군
- pc
- 사전 컴플라이언스 접두사Pre-compliance
국가별 신고·등록·제출기한 확인 화면과 데이터 속성에 사용
- pv
- 시점 보기 접두사Period View
기중 변동 구간, 조회 기준일과 해당 시점의 표시 상태를 처리
- ov
- 조감도 접두사Overview
전체 소유지분구조의 축약 표시, 카메라 범위와 이동 경로를 처리
- relx
- 관계 조회 모듈·화면 접두사Relationship Explorer
relationship-*모듈과relx-*DOM·CSS에서 추가세액 검토 및 과세흐름·소유구조 조회를 식별 - ix
- 상호작용 모듈 접두사Interaction
ix-connect-drag·ix-viewport처럼 입력, 카메라, 탐색, 고정을 담당 - ctx
- 컨텍스트Context
계산에 전달하는 묶음 객체, Canvas 렌더링 컨텍스트 또는 컨텍스트 메뉴를 문맥에 따라 지칭
- fmt
- 표시 형식 모듈Formatting
숫자·금액·비율 서식과 화면 출력용 문자열 처리를 공통 제공
- segdrag
- 관계선 구간 조절 모듈Segment Drag
직교 관계선 구간 이동, 경로 변환과 교차점 브리지를 처리
- io
- 입출력 모듈 접미사Input / Output
layout-io는 아키텍처 저장·불러오기,doc-io는 문서 가져오기·내보내기를 담당 - lib
- 라이브러리Library
scripts/lib의 공용 생성 로직과 아키텍처 라이브러리 화면 클래스에서 문맥에 따라 사용 - SPA
- 단일 페이지 애플리케이션Single-Page Application
브라우저에서 실행되는 정적 애플리케이션 구조
- ESM
- ECMAScript 모듈ECMAScript Module
src/modules의 정적 import·export 모듈 형식 - DOM
- 문서 객체 모델Document Object Model
기업 카드, 패널, 모달 등 브라우저 화면 요소의 구조
- SVG
- 확장 가능한 벡터 그래픽Scalable Vector Graphics
소유지분관계선, 과세흐름과 브리지 렌더링 형식
- LOD
- 상세도 단계Level of Detail
배율에 따라 라벨·관계선·브리지의 표시 비용을 조절하는 렌더 단계
- IIFE
- 즉시 실행 함수 표현식Immediately Invoked Function Expression
ESM 앱 모듈을 레거시 셸과 결합할 때 사용하는 번들 형식
- JSON
- 구조화 데이터 형식JavaScript Object Notation
규정·콘텐츠·상태 자료의 생성 및 교환 형식
- OOXML
- Office Open XMLOffice Open XML
DOCX·XLSX·PPTX 산출물의 문서 형식
- XLSX
- Excel 통합 문서 형식Excel Open XML Workbook
추가세액·배분비율을 포함한 표 형식 입력 양식과 분석 결과 산출물에 사용
- DSM
- 의존구조행렬Dependency Structure Matrix
모듈 구조 탭의 도메인 간 직접 import 관계 표현
- SCC
- 강결합요소Strongly Connected Component
순환출자 기업을 같은 집합으로 묶어 계층과 소유지분구조를 안정적으로 계산하는 그래프 단위
- E2E
- 전체 흐름 검증End-to-End
브라우저에서 사용자 입력부터 화면 결과까지 실제 기능 경로를 확인하는 테스트
- CI
- 지속적 통합Continuous Integration
소스 변경 시 빌드·테스트·검증 절차를 자동 실행하는 작업 환경
126개 앱 모듈의 직접 의존 구조
593개 고유 import 연결을 업무 도메인별로 집계했습니다. 연결 방향과 집중도는 변경할 때 함께 확인해야 할 모듈 범위를 보여줍니다.
- 셸·공용 UI→그래프·캔버스35
- 분석 결과·패널→셸·공용 UI33
- 분석 결과·패널→그래프·캔버스31
- 셸·공용 UI→분석 결과·패널27
- 분석 결과·패널→분석 계약·규정19
- GIR→분석 결과·패널18
- CbCR·SETR→저장·Office15
- GIR→셸·공용 UI15
- CbCR·SETR→셸·공용 UI13
도메인 의존행렬
행은 가져오는 도메인, 열은 가져오는 대상 도메인입니다. 대각선은 같은 도메인 안의 연결입니다.
| 도메인 | 분석 계약·규정 | CbCR·SETR | GIR | 공시문안 | What-if | 분석 결과·패널 | 그래프·캔버스 | 저장·Office | 셸·공용 UI | 합계 |
|---|---|---|---|---|---|---|---|---|---|---|
| 분석 계약·규정 | 2 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 3 |
| CbCR·SETR | 5 | 16 | 0 | 0 | 0 | 2 | 0 | 15 | 13 | 51 |
| GIR | 1 | 3 | 15 | 0 | 0 | 18 | 1 | 4 | 15 | 57 |
| 공시문안 | 2 | 0 | 0 | 11 | 0 | 1 | 0 | 4 | 2 | 20 |
| What-if | 6 | 0 | 0 | 0 | 7 | 10 | 9 | 4 | 5 | 41 |
| 분석 결과·패널 | 19 | 0 | 5 | 2 | 6 | 82 | 31 | 7 | 33 | 185 |
| 그래프·캔버스 | 1 | 0 | 0 | 0 | 1 | 10 | 55 | 0 | 11 | 78 |
| 저장·Office | 6 | 0 | 0 | 0 | 2 | 5 | 11 | 14 | 6 | 44 |
| 셸·공용 UI | 8 | 4 | 8 | 3 | 6 | 27 | 35 | 2 | 21 | 114 |
| 합계 | 50 | 23 | 28 | 16 | 22 | 156 | 142 | 50 | 106 | 593 |
공용 계약과 조립 지점
직접 참조 수는 실행 빈도나 품질 점수가 아니라 변경 영향 범위를 살피는 보조 지표입니다. 숫자와 함께 각 파일이 많이 연결되는 이유를 표시했습니다.
fmt.mjs 40숫자·금액·비율의 공통 표시 형식
dom-geometry.mjs 38캔버스 좌표와 주요 DOM 레이어 참조
analysis-state.mjs 18현재 AnalysisContext의 조회·교체·보완 API
globe-au-units.mjs 18분석 결과에서 만든 합산단위 모델과 역색인
countries.mjs 17국가코드·표시명·국기 메타데이터
_bridge.mjs 84ESM 기능을 레거시 셸에 노출하는 호환 조립부
panel-export-model.mjs 24세 패널의 분석 결과를 Office 문서 모델로 변환
doc-io.mjs 22DOCX·XLSX·PPTX 생성 공정을 조율
panel-payer.mjs 22QDMTT·IIR·UTPR 부담 구조와 상호작용을 조립
panel-entity.mjs 18기업별 판정·흐름·연결 기능을 조립
코드 규모 상위 파일
소스 행 수가 큰 파일과 각 파일의 직접 유입·유출 연결을 함께 표시했습니다.
| 파일 | 도메인 | 행 | 직접 유입 | 직접 유출 |
|---|---|---|---|---|
gir-workspace.mjs | GIR | 2,703 | 1 | 17 |
cbcr-sh-ui.mjs | CbCR·SETR | 2,028 | 1 | 17 |
setr-sh-ui.mjs | CbCR·SETR | 1,746 | 1 | 15 |
render.mjs | 그래프·캔버스 | 1,244 | 14 | 7 |
layout-io.mjs | 저장·Office | 1,154 | 3 | 15 |
wif-core.mjs | What-if | 1,093 | 10 | 14 |
fold-layout.mjs | 그래프·캔버스 | 1,091 | 7 | 9 |
gir-calc.mjs | GIR | 1,004 | 3 | 0 |