import type { IngestWarning, ReferenceMaster } from './reference-master.js'; /** 센 것 — 화면이 그대로 표로 그린다. */ export interface AssessmentCounts { locations: number; areas: number; equipment: number; materialDefinitions: number; operations: number; /** 생산 선언이 없으면 없다 — 0 과 구별한다(선언 자체가 없는 것과 비어 있는 것은 다르다). */ materials?: number; materialsWithHome?: number; routes?: number; recipes?: number; recipesWithRoute?: number; /** 공정을 말하는 투입 / 전체 투입 — 공정별 소요를 아는 정도. */ taggedInputs?: number; totalInputs?: number; /** 시험 명세(점검표)의 수 — 선언되지 않았으면 없다(0 과 구별한다). */ testSpecifications?: number; /** 그 명세들이 선언한 판정 기준의 수. */ criteria?: number; /** * 그중 **아무 한계도 말하지 않는** 기준의 수 — 커널의 `criterionSaysNothing` 과 같은 판정이다. * * 이 수가 0 이 아니면 「관리점이 있다」가 「판정된다」를 뜻하지 않는다. 세지 않으면 그 구별이 사라진다. */ criteriaWithoutLimit?: number; } /** 옮기지 못한 것 한 갈래 — 건수 큰 것부터. */ export interface AssessmentGap { /** 무엇을 옮기다 못 옮겼나 — 커넥터가 붙인 이름(`material home warehouse`). */ what: string; count: number; /** 못 옮긴 원본 값 몇 개 — 전부가 아니라 표본이다(수백 개가 붙던 자리다). */ sample?: string; /** 그 자리에 대신 들어간 값. */ fallback?: string; } export interface ImportAssessment { source: string; siteId: string; siteName?: string; system?: string; built: AssessmentCounts; /** * **원본이 가지고 있던 수** — 커넥터가 말해 준 경우에만 있다. * * 이름을 `origin` 이라 하지 않는다 — 화면에서 그 낱말이 이미 **트윈의 출처**(`summary.origin`: * 템플릿인가 원본인가)를 뜻한다. 같은 이름을 두 뜻으로 쓰면 읽는 사람이 헷갈린다. * * `built` 와 비교해 「전부 옮겼는가」를 사람이 직접 셀 수 있게 한다. 커넥터가 말하지 않으면 이 자리는 * 비어 있고, 화면은 분모 없이 옮긴 수만 보인다 — **분모를 지어내지 않는다.** */ originCounts?: Record; gaps: AssessmentGap[]; /** 이 원본에 개념이 없는 자리 — 커널 낱말로 적는다(화면이 번역한다). */ absent: string[]; /** * 값이 들어왔지만 **근거가 원본의 저장된 값이 아닌 것** — 파생·유추된 값이다. * * 이것을 `gaps` 에 섞으면 안 된다. 빈 자리가 아니라 **채워진 자리**이고, 사람이 물을 것은 * 「왜 비었나」가 아니라 「그 값을 믿어도 되나」다. 조치도 다르다 — 원본을 채우는 것이 아니라 * 그 규칙이 바뀌면 이 값도 바뀐다는 사실을 아는 것이다. */ derived: AssessmentGap[]; /** 되물은 횟수·잘린 목록 같은 운영 사실. */ notes: IngestWarning[]; } /** * 마스터 한 벌 → 총평의 사실 층. * * 경고를 두 갈래로 나눈다: `connector-mapping-fallback` 은 **옮기지 못한 것**이므로 `gaps` 로, * 나머지(파생된 값·되물은 횟수·잘린 목록)는 `notes` 로 그대로 나른다. 판단하지 않는다 — 무엇이 * 심각한지는 건수와 그 자리의 뜻이 말하고, 그 해석은 사람이나 말 층의 몫이다. */ export declare function assessMaster(master: ReferenceMaster, siteId: string): ImportAssessment; /** 사람이 읽는 줄 — 터미널·로그가 읽는다(화면은 구조를 그대로 그린다). */ export declare function formatAssessment(a: ImportAssessment): string;