아카이브 · 당시 기준

2026-10-25 보관. 1.0.0 → 1.1.0 · MINOR: iUi 가 Background 를 본문이 아닌 role 로 옮기기(2026-10-23) 전 판입니다. 본문과 자동 동기화 표는 보관 당시 내용입니다.

현재 기준과 원본 보기 → · 보관 목록

← 미리디 기술 사전 / Title·Subtitle·Description 대치

RLSC role → 검색·내용 대치2026.10.20 · 세 저장소 origin/main 대조 · 저자 홍지혜(jhhong) · 2026-10-20 갱신 · 문서 v1.0.0 · 세 저장소 origin/main 대조

같은 role이라도,
저장소마다 다르게 다룬다.

텍스트 노드의 RLSC role 9종을 검색·대치에 영향이 없는 것, 대치되지 않으면 원문을 두는 것, 대치되지 않으면 임시 문구를 띄우는 것으로 가르고, iUi 실서비스·aippt-prisonbreak·mordor-wiki 정본이 각각 어떻게 정했는지 나란히 놓는다.

iUi 265a476c0aippt dbe2760ecmordor-wiki a0f8b01
01

세 갈래로 가른다

① 영향 없음 영향 없음

검색 슬롯이 되지 않고, 대치하지 않고, 벌점도 받지 않는다. 화면에는 원문이 남는다.

② 원문 원문으로 둔다

검색·대치 구조에는 들어가지만 사용자 글을 받지 못하면 컴포넌트 원문을 그대로 둔다.

③ 임시 문구 임시 문구

대치가 채우는 본문이다. 못 채우면 role에 맞는 임시 문구(「제목을 입력해주세요.」 등)가 뜨고 순위 벌점을 받는다.

실서비스 기준으로는 두 저장소가 같다. aippt는 iUi 265a476c0의 decoration.ts·nodeTextPolicy.ts를 벤더 사본으로 그대로 쓴다(aippt #2641, 2026-10-20). ① 영향 없음은 Decoration·Separator·Annotation, ② 원문는 Marker, ③ 임시 문구은 Title·Subtitle·Highlight·Description·Background(잠정)다. ③ 임시 문구이라도 원문이 구조 토큰(vs·TAM/SAM/SOM·숫자가 아닌 한 글자)이면 원문으로 둔다.

02

role별 비교

「aippt 다른 경로」는 실서비스가 아닌 PoC(src/lib/visual-summary/binding.ts)와 I.I.S. 정합성 게이트다. 「옛 comp-sign」은 iUi /comp-match와 aippt 벤더 사본에 함께 남은 경로다.

roleiUi 실서비스(comp-frame)aippt 실서비스(벤더)aippt 다른 경로옛 comp-signmordor-wiki 정본
Title③ 임시 문구③ 임시 문구PoC: 반복 단위 안이면 비운다③ 임시 문구③ 임시 문구 A Class · 임시 문구 표
Description③ 임시 문구③ 임시 문구PoC: 비운다③ 임시 문구③ 임시 문구 A Class
Subtitle③ 임시 문구③ 임시 문구PoC: 비운다③ 임시 문구③ 임시 문구 B Class
Highlight③ 임시 문구③ 임시 문구PoC: Other → 비운다③ 임시 문구 숫자 모양이면 원문③ 임시 문구 숫자 모양(01·100%)은 원문
Background③ 임시 문구 잠정 · 전용 문구 없이 기본 문구③ 임시 문구 잠정PoC: 비운다③ 임시 문구정하지 않음 C Class
Marker② 원문 순서형 카테고리는 순번 01…로 다시 매긴다② 원문 나눠 담기 2쪽부터 순번PoC: 순번 재매김 · IIS 게이트: 보존① 영향 없음 시그니처·대치에서 제외충돌 아래 4번
Decoration① 영향 없음① 영향 없음IIS 게이트: 보존① 영향 없음 Deco만 비교① 영향 없음 — 정의는 이미지 요소
Separator① 영향 없음① 영향 없음IIS 게이트: 누락으로 셈③ 임시 문구정하지 않음 C Class
Annotation① 영향 없음① 영향 없음IIS 게이트: 누락으로 셈③ 임시 문구① 영향 없음 규칙 명시(MOR-1813)
03

어긋나는 곳

정본이 정하지 않았는데 iUi가 정한 것

  1. Separator. iUi는 MOR-2753에서 ① 영향 없음로 정했다. 정본 role-v2는 C Class라고만 적는다. 규약에 한 줄을 더해야 한다.

  2. Background. iUi는 ③ 임시 문구으로 두면서 「아직」이라고 적었다(decoration.ts:42 — 2.6판에 8행뿐). 정본은 정하지 않았다. C Class 정의(「내용이 누락되어도 사용자가 손을 댈 필요가 없다고 느낄 수도」)로 보면 ① 영향 없음에 가깝게 읽힌다 — 이건 해석이다.

  3. 글자 Decoration. 정본은 Decoration을 「장식적 목적으로 배치되는 이미지 요소」로 정의한다(role-v2.md:200). 글자 Decoration을 원문으로 두는 건 iUi가 넓힌 해석이다. content-binding-contract의 DECO는 「비우거나 제거 가능」이라 원문 유지와도 맞지 않는다(content-binding-contract.md:204).

정본과 코드가 다른 것

  1. Marker. role-v2는 「Decoration과 달리 내용 대치(컨텐츠 교체) 시 함께 변경되어야 하는 요소」라고 적는다(role-v2.md:196). 같은 위키의 실측 문서는 comp-sign 코드가 Marker를 「대치 대상에서 제외 + 원본 유지」로 처리하며 그게 설계라고 적고, role-v2의 B Class 서술을 고치자고 제안한다(marker-role-engine-consumption-as-is.md:16, marker-role-engine-consumption-as-is.md:187). iUi는 그 밖의 카테고리에서 원문, 순서형에서 순번을 다시 매긴다(04).

  2. 숫자 원문. 정본 평가 문서는 Highlight의 숫자 모양(01·100%)을 원문으로 둔다고 적는다(comp-sign shouldPreserveText 기준). iUi 실서비스는 MOR-2627 이후 숫자라서 원문으로 두는 폴백이 없다 — 임시 문구다(decideUnreplacedNode). MOR-2627 정책이 정본에 실려 있지 않은 것은 감사 티켓 MOR-2833이 다룬다.

  3. 원문 잔존을 보는 시각. I.I.S. 정합성 게이트 문서는 구조에 참조되지 않은 글이 원문으로 남는 것을 오류로 본다(iis-consistency-gate.md:33). 그런데 ① 영향 없음·② 원문는 원문 유지가 의도된 동작이다. 게이트의 예외 후보에는 Decoration만 있다.

같은 저장소 안에서 갈리는 것

  1. aippt I.I.S. 정합성 게이트. isPreservedByReplacement가 Marker·Deco·Decoration만 보존으로 본다. Separator·Annotation 노드가 구조에 없으면 누락으로 센다 — MOR-2753이 반영되지 않았다.

  2. 옛 comp-sign 경로. helpers.ts:746가 Marker와 Deco만 건너뛴다. Separator·Annotation은 ③ 임시 문구이 된다. 이름도 'Deco'만 비교해서, RLSC leaf가 Decoration이면 걸리지 않을 수 있다 — 이름을 줄이는 getRoleLeafName은 확인하지 못했다.

  3. aippt PoC. slotRoleOf가 Title·Subtitle·Description·Marker만 가르고 나머지를 Other로 본다. 반복 단위 안의 Annotation도 비워진다. 코드 주석에 실서비스는 comp-frame이라고 적혀 있어 운영 영향은 없다.

04

Marker는 검색에 남지만, 사용자 글은 받지 않는다

그래서 「대치에 쓰지 않는 노드」로 정확히 묶이는 건 Decoration·Separator·Annotation 셋이다. Marker는 사용자 글을 받지 않는다는 점만 같다. Rust role_keeps_original는 넷을 함께 보지만, 그 뜻은 「원문을 남긴다」가 아니라 「사용자 글을 받지 않는다」다. TS에는 이 쌍둥이가 없다 — isNonContentRole는 세 role만 보고, 적재기의 preserveTextNodesOf는 Marker만 본다. 세 role은 서버가 node_roles 컬럼으로 거른다.

05

정본의 A·B·C Class는 처리 규칙이 아니라 중요도다

role-v2의 「Role Priority Classes」(role-v2.md:219)는 내용 대치에서 그 role이 빠지면 얼마나 어색한지로 중요도를 나눈다. 원문으로 둘지 임시 문구를 띄울지는 이 등급이 아니라 role마다 붙은 설명에 있다.

등급정의(원문)role
A Class「내용대치시 누락되거나 내용이 주입되지 않으면 이상하게 느낄 수 있는 핵심 요소들」Title, Description
B Class「누락되는 경우 사용자가 그 사실을 인지하기는 쉽지만 스스로 채워넣거나 수정해도 될 것이라고 인지하기 쉬운 것」Subtitle, Highlight, Marker
C Class「애초에 Component 단위로 포함될 필요가 없거나, 내용이 누락되어도 사용자가 손을 댈 필요가 없다고 느낄 수도 있는 요소들」Separator, Decoration, Background, Annotation
06

근거

저장소자리무엇
iUiELEMENT_ROLE_KINDSrole 9종 → content·marker·nonContent 표(정본)
iUinonContentTextIds적재기가 nonContent 노드를 슬롯 후보에서 뺀다
iUidecideUnreplacedNode대치되지 않은 노드: Marker·nonContent → 원문, 구조 토큰 → 원문, 그 밖 → 임시 문구
iUiclassifyPreservableText원문을 token·number·other로 가른다(role은 보지 않는다)
iUiplaceholders.ts:62role별 임시 문구 표(Title·Subtitle·Desc·Hl·default)
iUiNON_CONTENT_ROLESRust 쌍둥이
aipptvendor decoration.tsiUi 표의 벤더 사본
aipptrole-v2.ts:67Annotation 규칙(코드 쪽 role 정의)
mordor-wikirole-v2.md:202Decoration은 「Component 내용대치가 되지 않는 꾸밈요소」
mordor-wikirole-v2.md:212Annotation 「(1) 템플릿 간 내용 대치 시 내용이 변경되지 않는다 (2) 요약문이 배정되는 슬롯으로 쓰이지 않는다」
mordor-wikiplaceholder-effect.md:184임시 문구 표(평가 문서)

세 저장소 모두 fetch한 origin/main의 고정 커밋에서 읽었다(작업 트리는 보지 않았다). aippt·mordor-wiki는 조사를 맡긴 결과를 받은 뒤 결론을 좌우하는 줄(role-v2.md 196·200·202·212·219~262, IIS 게이트 172행, PoC slotRoleOf)을 원문과 다시 대 봤다. 옛 comp-sign의 getRoleLeafName 매핑과 Background·Separator가 옛 경로에서 받는 문구는 확인하지 않았다.