feat(catalog): activate three_persona_benefits frame (IMP-04 #4 / 1 of 7)
Reason : V4 use_as_is=1 (frame_number=14, frame_id=1171281191).
Pattern : cards-3col-persona — 발주자/시공자/설계자 3 주체 각 benefit.
- Append `three_persona_benefits` contract to frame_contracts.yaml after
the existing F13/F29/F16 entries (Codex Catch 1/4: YAML order = trace
selection surface)
- Reuse existing builder primitives: items_with_role + quadrant_item
parser. No new entry in PAYLOAD_BUILDERS / ITEM_PARSERS.
Output dict shape: payload.personas = [{label, body, color_class}, ...]
- Add families/three_persona_benefits.html partial:
- Pure CSS (no Figma raster img tags) per memory rule
`feedback_blocks_must_be_css.md`
- PROMOTED colors per persona (#285b4a client / #445a2f constructor /
#743002 designer) from Figma TEXT layers
- NOT PROMOTED: col_bg_texture / overlay / 하단 사진 / 원형 뱃지 inner-outer
image — all replaced by CSS approximation (pill badge + colored
border + check-style text-line bullets)
- Token-fixed typography (zone-title / sub-title / caption / body)
- data-frame-id="1171281191" data-template-id attributes
- Add bundled smoke fixture for three_persona_benefits to
scripts/smoke_frame_render.py
- visual_hints.min_height_px = 280 (initial estimate between F13=230 and
F29=345 for 3-card text-heavy layout). Refine during batch full
pipeline if needed.
- accepted_content_types = [text_block] only (rich types not routed yet
per IMP-03 scope-lock).
Verification :
- isolated Jinja StrictUndefined smoke (scripts/smoke_frame_render.py
--self-check) : PASS=4/4 (existing 3 + new persona, 3889 chars)
- regression run on MDX 03 (env OFF + rich OFF) : PASS — MDX 03 V4
rank-1 still F13/F29 so the new entry does not affect existing flow
scope-lock 15 conditions all honored (no V4 / mapper / Phase R' / Step
6+ changes; per-frame 6-step gate complete; YAML order preserved).
Refs Gitea #4 (IMP-04 A-2 Catalog 확장)
This commit is contained in:
@@ -136,10 +136,47 @@ _MOCK_QUADRANT = {
|
||||
"quadrant_4_body": [{"text": "가이드 부재", "indent": 0}],
|
||||
}
|
||||
|
||||
# IMP-04 frame 1 — three_persona_benefits (frame 14, frame_id=1171281191).
|
||||
# Builder = items_with_role + quadrant_item parser → persona dict = {label, body, color_class}.
|
||||
_MOCK_THREE_PERSONA_BENEFITS = {
|
||||
"title": "주체별 기대효과",
|
||||
"personas": [
|
||||
{
|
||||
"label": "발주자",
|
||||
"color_class": "client",
|
||||
"body": [
|
||||
{"text": "민원, 재 작업 등의 예방 및 최소화", "indent": 0},
|
||||
{"text": "직관화로 품질 향상 및 안정성 제고", "indent": 0},
|
||||
{"text": "수행공정의 쉬운이해로 관리 편의성 증진", "indent": 0},
|
||||
{"text": "실무자와 발주자간의 소통 오류 최소화", "indent": 0},
|
||||
],
|
||||
},
|
||||
{
|
||||
"label": "시공자",
|
||||
"color_class": "constructor",
|
||||
"body": [
|
||||
{"text": "시공 오류예방 및 공사 Risk 최소화", "indent": 0},
|
||||
{"text": "시각화로 안전성 제고 및 품질 향상", "indent": 0},
|
||||
{"text": "건설 관계자들 간의 의사소통 강화", "indent": 0},
|
||||
],
|
||||
},
|
||||
{
|
||||
"label": "설계자",
|
||||
"color_class": "designer",
|
||||
"body": [
|
||||
{"text": "직관적 시각화로 원활한 소통", "indent": 0},
|
||||
{"text": "3D 모델 활용으로 오류 최소화", "indent": 0},
|
||||
{"text": "발주자와의 상호 신뢰 증진", "indent": 0},
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
SELF_CHECK_FIXTURES: dict[str, dict] = {
|
||||
"three_parallel_requirements": _MOCK_THREE_PARALLEL,
|
||||
"process_product_two_way": _MOCK_PROCESS_PRODUCT,
|
||||
"bim_issues_quadrant_four": _MOCK_QUADRANT,
|
||||
"three_persona_benefits": _MOCK_THREE_PERSONA_BENEFITS,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user