@infomind-ux/infoux-mcp 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/bin/server.js +236 -0
- package/data/art-direction.json +460 -0
- package/data/contract.md +1 -0
- package/data/manifest.json +41 -5
- package/data/presets/coast-teal.json +366 -0
- package/data/presets/market-terracotta.json +366 -0
- package/data/presets/trust-blue.json +368 -0
- package/data/profiles.json +157 -0
- package/data/references/art-direction.md +206 -0
- package/data/references/krds-components.md +1 -1
- package/data/references/krds-tokens.md +3 -2
- package/data/references/project-profiles.md +84 -19
- package/data/references/release-checklist.md +80 -0
- package/data/references/trade-off-rules.md +66 -0
- package/data/rules.json +134 -0
- package/data/snippets/hero-bleed.md +45 -0
- package/data/snippets/section-media.md +61 -0
- package/data/snippets/signature.md +107 -0
- package/data/tokens.css +157 -3
- package/data/workflows/design-page.md +6 -5
- package/data/workflows/init-project.md +18 -0
- package/package.json +1 -1
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$meta": {
|
|
3
|
+
"name": "INFOUX Brand Tokens — trust-blue",
|
|
4
|
+
"purpose": "팔레트 프리셋. tokens/brand.json 자리에 그대로 복사해 쓴다 — cp tokens/presets/trust-blue.json tokens/brand.json && npm run build:tokens && npm run check:contrast.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"owner": "INFOMIND UX Team",
|
|
7
|
+
"policy": "brand.json과 완전 동형이다. gray 스케일·상태색·의미 토큰은 foundation이 소유하며 여기서 재정의하지 않는다. 대비 검사쌍 전량(2모드) 위반 0건이 입고 조건이고 scripts/check-presets.js가 강제한다.",
|
|
8
|
+
"modes": "light와 high-contrast 두 모드 값을 모두 정의해야 한다. 누락 시 build:tokens가 실패한다.",
|
|
9
|
+
"preset": {
|
|
10
|
+
"id": "trust-blue",
|
|
11
|
+
"label": "공공 신뢰 블루",
|
|
12
|
+
"mood": "관공서·금융 신뢰, 현행 기본 승계",
|
|
13
|
+
"profiles": [
|
|
14
|
+
"public-service",
|
|
15
|
+
"public-institution",
|
|
16
|
+
"cms-admin"
|
|
17
|
+
],
|
|
18
|
+
"seed": "#256ef4",
|
|
19
|
+
"pointException": "krds-heritage",
|
|
20
|
+
"generation": {
|
|
21
|
+
"colorSpace": "oklch",
|
|
22
|
+
"yLadder": {
|
|
23
|
+
"5": 0.885,
|
|
24
|
+
"10": 0.777,
|
|
25
|
+
"20": 0.605,
|
|
26
|
+
"30": 0.426,
|
|
27
|
+
"40": 0.255,
|
|
28
|
+
"50": 0.178,
|
|
29
|
+
"60": 0.104,
|
|
30
|
+
"70": 0.049,
|
|
31
|
+
"80": 0.022,
|
|
32
|
+
"90": 0.009,
|
|
33
|
+
"95": 0.005
|
|
34
|
+
},
|
|
35
|
+
"chromaCurve": {
|
|
36
|
+
"5": 0.08,
|
|
37
|
+
"10": 0.17,
|
|
38
|
+
"20": 0.34,
|
|
39
|
+
"30": 0.54,
|
|
40
|
+
"40": 0.83,
|
|
41
|
+
"50": 1,
|
|
42
|
+
"60": 0.97,
|
|
43
|
+
"70": 0.73,
|
|
44
|
+
"80": 0.53,
|
|
45
|
+
"90": 0.35,
|
|
46
|
+
"95": 0.25
|
|
47
|
+
},
|
|
48
|
+
"hue": {
|
|
49
|
+
"primary": 261.3,
|
|
50
|
+
"secondary": 253.5,
|
|
51
|
+
"point": 20.7,
|
|
52
|
+
"highContrastSecondary": 218.8
|
|
53
|
+
},
|
|
54
|
+
"chroma50": {
|
|
55
|
+
"primary": 0.214,
|
|
56
|
+
"secondary": 0.122,
|
|
57
|
+
"point": 0.189
|
|
58
|
+
},
|
|
59
|
+
"rules": [
|
|
60
|
+
"hue는 스케일 전체 상수. hue·chroma50은 seed hex의 OKLCH 실측값이 정본이다.",
|
|
61
|
+
"L은 hex 양자화 후의 WCAG 상대휘도 Y가 사다리 값에 최근접하도록 이분탐색한다.",
|
|
62
|
+
"sRGB 감마 밖 색은 hue·L을 유지하고 chroma만 축소해 클리핑한다.",
|
|
63
|
+
"50·60 단계는 흰 배경 4.5:1을 하드 스냅으로 보장한다.",
|
|
64
|
+
"secondary chroma는 primary chroma50의 0.4~0.7배, hue는 ±45° 이내 또는 중성.",
|
|
65
|
+
"point는 primary와 hue 거리 60° 이상, 상태색 hue ±25° 금지 밴드를 지킨다 (허용 창 100~122·172~225·275~7.6).",
|
|
66
|
+
"high-contrast는 light와 동일 사다리가 기본. ΔH(primary, secondary)<40°면 hc secondary를 ΔH≥40° 위치로 재생성한다."
|
|
67
|
+
],
|
|
68
|
+
"note": "이 팔레트는 위 규칙으로 생성한 것이 아니라 KRDS 현행 brand.json을 그대로 승계했다(기검증). point 크림슨은 금지 밴드·ΔE 위반이지만 krds-heritage 예외로 유지한다. 상수는 v2 생성기 재현용 기록이다."
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"font": {
|
|
73
|
+
"family": {
|
|
74
|
+
"sans": {
|
|
75
|
+
"value": "'Pretendard GOV', 'Apple SD Gothic Neo', 'Noto Sans KR', system-ui, sans-serif",
|
|
76
|
+
"$comment": "인포마인드 UX팀 기본 본문 폰트. reset.css의 body에서 var(--font-sans)로 적용한다."
|
|
77
|
+
},
|
|
78
|
+
"heading": {
|
|
79
|
+
"value": "'Pretendard GOV', 'Apple SD Gothic Neo', 'Noto Sans KR', system-ui, sans-serif",
|
|
80
|
+
"$comment": "제목 폰트 슬롯. 팔레트 프리셋은 본문과 동일 값으로 두고, 차등 서체는 프로젝트가 카탈로그 페어링으로 교체한다."
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"primitive": {
|
|
85
|
+
"color": {
|
|
86
|
+
"light": {
|
|
87
|
+
"primary": {
|
|
88
|
+
"5": {
|
|
89
|
+
"value": "#ecf2fe",
|
|
90
|
+
"type": "color"
|
|
91
|
+
},
|
|
92
|
+
"10": {
|
|
93
|
+
"value": "#d8e5fd",
|
|
94
|
+
"type": "color"
|
|
95
|
+
},
|
|
96
|
+
"20": {
|
|
97
|
+
"value": "#b1cefb",
|
|
98
|
+
"type": "color"
|
|
99
|
+
},
|
|
100
|
+
"30": {
|
|
101
|
+
"value": "#86aff9",
|
|
102
|
+
"type": "color"
|
|
103
|
+
},
|
|
104
|
+
"40": {
|
|
105
|
+
"value": "#4c87f6",
|
|
106
|
+
"type": "color"
|
|
107
|
+
},
|
|
108
|
+
"50": {
|
|
109
|
+
"value": "#256ef4",
|
|
110
|
+
"type": "color"
|
|
111
|
+
},
|
|
112
|
+
"60": {
|
|
113
|
+
"value": "#0b50d0",
|
|
114
|
+
"type": "color"
|
|
115
|
+
},
|
|
116
|
+
"70": {
|
|
117
|
+
"value": "#083891",
|
|
118
|
+
"type": "color"
|
|
119
|
+
},
|
|
120
|
+
"80": {
|
|
121
|
+
"value": "#052561",
|
|
122
|
+
"type": "color"
|
|
123
|
+
},
|
|
124
|
+
"90": {
|
|
125
|
+
"value": "#03163a",
|
|
126
|
+
"type": "color"
|
|
127
|
+
},
|
|
128
|
+
"95": {
|
|
129
|
+
"value": "#020f27",
|
|
130
|
+
"type": "color"
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"secondary": {
|
|
134
|
+
"5": {
|
|
135
|
+
"value": "#eef2f7",
|
|
136
|
+
"type": "color"
|
|
137
|
+
},
|
|
138
|
+
"10": {
|
|
139
|
+
"value": "#d6e0eb",
|
|
140
|
+
"type": "color"
|
|
141
|
+
},
|
|
142
|
+
"20": {
|
|
143
|
+
"value": "#bacbde",
|
|
144
|
+
"type": "color"
|
|
145
|
+
},
|
|
146
|
+
"30": {
|
|
147
|
+
"value": "#90b0d5",
|
|
148
|
+
"type": "color"
|
|
149
|
+
},
|
|
150
|
+
"40": {
|
|
151
|
+
"value": "#6b96c7",
|
|
152
|
+
"type": "color"
|
|
153
|
+
},
|
|
154
|
+
"50": {
|
|
155
|
+
"value": "#346fb2",
|
|
156
|
+
"type": "color"
|
|
157
|
+
},
|
|
158
|
+
"60": {
|
|
159
|
+
"value": "#1c589c",
|
|
160
|
+
"type": "color"
|
|
161
|
+
},
|
|
162
|
+
"70": {
|
|
163
|
+
"value": "#063a74",
|
|
164
|
+
"type": "color"
|
|
165
|
+
},
|
|
166
|
+
"80": {
|
|
167
|
+
"value": "#052b57",
|
|
168
|
+
"type": "color"
|
|
169
|
+
},
|
|
170
|
+
"90": {
|
|
171
|
+
"value": "#031f3f",
|
|
172
|
+
"type": "color"
|
|
173
|
+
},
|
|
174
|
+
"95": {
|
|
175
|
+
"value": "#02162c",
|
|
176
|
+
"type": "color"
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"point": {
|
|
180
|
+
"5": {
|
|
181
|
+
"value": "#fbeff0",
|
|
182
|
+
"type": "color"
|
|
183
|
+
},
|
|
184
|
+
"10": {
|
|
185
|
+
"value": "#f5d6d9",
|
|
186
|
+
"type": "color"
|
|
187
|
+
},
|
|
188
|
+
"20": {
|
|
189
|
+
"value": "#ebadb2",
|
|
190
|
+
"type": "color"
|
|
191
|
+
},
|
|
192
|
+
"30": {
|
|
193
|
+
"value": "#e0858c",
|
|
194
|
+
"type": "color"
|
|
195
|
+
},
|
|
196
|
+
"40": {
|
|
197
|
+
"value": "#d65c66",
|
|
198
|
+
"type": "color"
|
|
199
|
+
},
|
|
200
|
+
"50": {
|
|
201
|
+
"value": "#d63d4a",
|
|
202
|
+
"type": "color"
|
|
203
|
+
},
|
|
204
|
+
"60": {
|
|
205
|
+
"value": "#ab2b36",
|
|
206
|
+
"type": "color"
|
|
207
|
+
},
|
|
208
|
+
"70": {
|
|
209
|
+
"value": "#7a1f26",
|
|
210
|
+
"type": "color"
|
|
211
|
+
},
|
|
212
|
+
"80": {
|
|
213
|
+
"value": "#521419",
|
|
214
|
+
"type": "color"
|
|
215
|
+
},
|
|
216
|
+
"90": {
|
|
217
|
+
"value": "#310c0f",
|
|
218
|
+
"type": "color"
|
|
219
|
+
},
|
|
220
|
+
"95": {
|
|
221
|
+
"value": "#21080a",
|
|
222
|
+
"type": "color"
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
"high-contrast": {
|
|
227
|
+
"primary": {
|
|
228
|
+
"5": {
|
|
229
|
+
"value": "#ecf2fe",
|
|
230
|
+
"type": "color"
|
|
231
|
+
},
|
|
232
|
+
"10": {
|
|
233
|
+
"value": "#d8e5fd",
|
|
234
|
+
"type": "color"
|
|
235
|
+
},
|
|
236
|
+
"20": {
|
|
237
|
+
"value": "#b1cefb",
|
|
238
|
+
"type": "color"
|
|
239
|
+
},
|
|
240
|
+
"30": {
|
|
241
|
+
"value": "#86aff9",
|
|
242
|
+
"type": "color"
|
|
243
|
+
},
|
|
244
|
+
"40": {
|
|
245
|
+
"value": "#4c87f6",
|
|
246
|
+
"type": "color"
|
|
247
|
+
},
|
|
248
|
+
"50": {
|
|
249
|
+
"value": "#256ef4",
|
|
250
|
+
"type": "color"
|
|
251
|
+
},
|
|
252
|
+
"60": {
|
|
253
|
+
"value": "#0b50d0",
|
|
254
|
+
"type": "color"
|
|
255
|
+
},
|
|
256
|
+
"70": {
|
|
257
|
+
"value": "#083891",
|
|
258
|
+
"type": "color"
|
|
259
|
+
},
|
|
260
|
+
"80": {
|
|
261
|
+
"value": "#052561",
|
|
262
|
+
"type": "color"
|
|
263
|
+
},
|
|
264
|
+
"90": {
|
|
265
|
+
"value": "#03163a",
|
|
266
|
+
"type": "color"
|
|
267
|
+
},
|
|
268
|
+
"95": {
|
|
269
|
+
"value": "#020f27",
|
|
270
|
+
"type": "color"
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
"secondary": {
|
|
274
|
+
"5": {
|
|
275
|
+
"value": "#edf6f8",
|
|
276
|
+
"type": "color"
|
|
277
|
+
},
|
|
278
|
+
"10": {
|
|
279
|
+
"value": "#d5ebf1",
|
|
280
|
+
"type": "color"
|
|
281
|
+
},
|
|
282
|
+
"20": {
|
|
283
|
+
"value": "#abd8e3",
|
|
284
|
+
"type": "color"
|
|
285
|
+
},
|
|
286
|
+
"30": {
|
|
287
|
+
"value": "#75c0d1",
|
|
288
|
+
"type": "color"
|
|
289
|
+
},
|
|
290
|
+
"40": {
|
|
291
|
+
"value": "#3d9fb8",
|
|
292
|
+
"type": "color"
|
|
293
|
+
},
|
|
294
|
+
"50": {
|
|
295
|
+
"value": "#268097",
|
|
296
|
+
"type": "color"
|
|
297
|
+
},
|
|
298
|
+
"60": {
|
|
299
|
+
"value": "#1f687a",
|
|
300
|
+
"type": "color"
|
|
301
|
+
},
|
|
302
|
+
"70": {
|
|
303
|
+
"value": "#17505e",
|
|
304
|
+
"type": "color"
|
|
305
|
+
},
|
|
306
|
+
"80": {
|
|
307
|
+
"value": "#113b45",
|
|
308
|
+
"type": "color"
|
|
309
|
+
},
|
|
310
|
+
"90": {
|
|
311
|
+
"value": "#0e3139",
|
|
312
|
+
"type": "color"
|
|
313
|
+
},
|
|
314
|
+
"95": {
|
|
315
|
+
"value": "#091f25",
|
|
316
|
+
"type": "color"
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
"point": {
|
|
320
|
+
"5": {
|
|
321
|
+
"value": "#fbeff0",
|
|
322
|
+
"type": "color"
|
|
323
|
+
},
|
|
324
|
+
"10": {
|
|
325
|
+
"value": "#f5d6d9",
|
|
326
|
+
"type": "color"
|
|
327
|
+
},
|
|
328
|
+
"20": {
|
|
329
|
+
"value": "#ebadb2",
|
|
330
|
+
"type": "color"
|
|
331
|
+
},
|
|
332
|
+
"30": {
|
|
333
|
+
"value": "#e0858c",
|
|
334
|
+
"type": "color"
|
|
335
|
+
},
|
|
336
|
+
"40": {
|
|
337
|
+
"value": "#d65c66",
|
|
338
|
+
"type": "color"
|
|
339
|
+
},
|
|
340
|
+
"50": {
|
|
341
|
+
"value": "#d63d4a",
|
|
342
|
+
"type": "color"
|
|
343
|
+
},
|
|
344
|
+
"60": {
|
|
345
|
+
"value": "#ab2b36",
|
|
346
|
+
"type": "color"
|
|
347
|
+
},
|
|
348
|
+
"70": {
|
|
349
|
+
"value": "#7a1f26",
|
|
350
|
+
"type": "color"
|
|
351
|
+
},
|
|
352
|
+
"80": {
|
|
353
|
+
"value": "#521419",
|
|
354
|
+
"type": "color"
|
|
355
|
+
},
|
|
356
|
+
"90": {
|
|
357
|
+
"value": "#310c0f",
|
|
358
|
+
"type": "color"
|
|
359
|
+
},
|
|
360
|
+
"95": {
|
|
361
|
+
"value": "#21080a",
|
|
362
|
+
"type": "color"
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./profiles.schema.json",
|
|
3
|
+
"name": "INFOUX Site Profiles",
|
|
4
|
+
"version": "1.1.0",
|
|
5
|
+
"description": "사이트 유형별 실행 프리셋. 산문으로만 있던 판정 기준을 기계가 읽을 수 있게 옮긴 것이다. references/project-profiles.md의 표는 이 파일에서 생성한다.",
|
|
6
|
+
"policy": "profile id는 contracts/task-contract.schema.json의 profile enum, cli/bin/create.js의 PROFILES와 항상 일치해야 한다. expression 키는 expressionLevels 정의와, task-contract.schema.json의 expression enum과 항상 일치해야 한다. 단위 테스트가 강제한다. 등급은 상한이지 목표가 아니며, publicIdentity가 required인 프로젝트의 상한은 restrained다.",
|
|
7
|
+
"density": {
|
|
8
|
+
"comfortable": {
|
|
9
|
+
"label": "여유",
|
|
10
|
+
"sectionPaddingPc": "8rem",
|
|
11
|
+
"sectionPaddingMobile": "4rem",
|
|
12
|
+
"formRowGap": "2.4rem",
|
|
13
|
+
"tableCellPadding": "1.6rem",
|
|
14
|
+
"note": "읽기 중심 화면. 한 화면에 담는 정보보다 가독성을 우선한다."
|
|
15
|
+
},
|
|
16
|
+
"compact": {
|
|
17
|
+
"label": "고밀도",
|
|
18
|
+
"sectionPaddingPc": "4rem",
|
|
19
|
+
"sectionPaddingMobile": "2.4rem",
|
|
20
|
+
"formRowGap": "1.6rem",
|
|
21
|
+
"tableCellPadding": "1rem",
|
|
22
|
+
"note": "반복 작업 화면. 스크롤과 클릭 수를 줄이는 쪽을 우선한다. 터치 영역 44px 하한은 그대로 지킨다."
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"expressionLevels": {
|
|
26
|
+
"utility": {
|
|
27
|
+
"label": "기능형",
|
|
28
|
+
"definition": "반복 업무 화면. 표현 요소가 과업 효율을 침해하지 않는 최소 수준.",
|
|
29
|
+
"hero": ["none", "text"],
|
|
30
|
+
"signature": { "maxCount": 0, "types": [] },
|
|
31
|
+
"motion": {
|
|
32
|
+
"durationMs": [100, 200],
|
|
33
|
+
"effects": ["fade"],
|
|
34
|
+
"note": "장식·스크롤 진입 모션 한정 규정이다. 컴포넌트 피드백 모션(모달·토스트·인풋 전환)은 interaction-timing.md 소유로 등급 무관 — Spring 프리셋 포함."
|
|
35
|
+
},
|
|
36
|
+
"displayFont": "body-only",
|
|
37
|
+
"layout": "symmetric-grid",
|
|
38
|
+
"note": "브랜드 식별은 로고와 primary 색상으로만 한다. point 색은 상태·배지·필수 표시 등 기능적 용도 외 사용하지 않는다."
|
|
39
|
+
},
|
|
40
|
+
"restrained": {
|
|
41
|
+
"label": "절제형",
|
|
42
|
+
"definition": "신뢰가 우선인 공공 톤. 브랜드는 색·서체 수준에서 드러나고 장식은 절제한다.",
|
|
43
|
+
"hero": ["text", "image", "carousel"],
|
|
44
|
+
"signature": { "maxCount": 1, "types": ["그래픽 패턴", "포토 톤 통일", "커스텀 일러스트"] },
|
|
45
|
+
"motion": {
|
|
46
|
+
"durationMs": [150, 300],
|
|
47
|
+
"effects": ["fade", "translate-16", "scroll-fade-in-once"],
|
|
48
|
+
"note": "easing은 ease-out 계열. parallax·bounce·무한 루프 금지. 캐러셀은 수동 컨트롤과 정지 버튼 전제. 컴포넌트 피드백 모션은 interaction-timing.md 소유로 등급 무관."
|
|
49
|
+
},
|
|
50
|
+
"displayFont": "body-first",
|
|
51
|
+
"layout": "alternating",
|
|
52
|
+
"note": "시그니처는 hero·인트로 구간 한정. displayFont body-first = 본문 폰트 기본, 기관 CI 전용 서체 또는 카탈로그 페어링이 계약된 경우만 제목 페어링."
|
|
53
|
+
},
|
|
54
|
+
"expressive": {
|
|
55
|
+
"label": "표현형",
|
|
56
|
+
"definition": "브랜드 개성이 기억에 남아야 하는 사이트. 시그니처·타이포·섹션 리듬으로 정체성을 만든다.",
|
|
57
|
+
"hero": ["text", "image", "carousel", "video"],
|
|
58
|
+
"signature": { "maxCount": 3, "types": ["그래픽 패턴", "커스텀 일러스트", "포토 트리트먼트", "타이포 모티프", "커스텀 불릿·구분선"] },
|
|
59
|
+
"motion": {
|
|
60
|
+
"durationMs": [200, 400],
|
|
61
|
+
"effects": ["fade", "translate-24", "scale-2pct", "stagger-50-80"],
|
|
62
|
+
"note": "scroll-jacking 금지. 무한 루프는 장식 요소 1곳 한정(로고 마키 형태 금지). 비디오 hero는 무음 자동재생 + 일시정지 컨트롤. 컴포넌트 피드백 모션은 interaction-timing.md 소유로 등급 무관."
|
|
63
|
+
},
|
|
64
|
+
"displayFont": "heading-pairing",
|
|
65
|
+
"layout": "asymmetric",
|
|
66
|
+
"note": "제목 페어링은 contracts/art-direction.json 카탈로그에서 선택 — 재배포 가능 라이선스 + 한글 폴백 스택 필수. 본문 콘텐츠 영역은 그리드 유지."
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"profiles": [
|
|
70
|
+
{
|
|
71
|
+
"id": "general-site",
|
|
72
|
+
"label": "일반사이트",
|
|
73
|
+
"appliesTo": "민간 기업, 브랜드, 캠페인, 포트폴리오, 회사 홈페이지",
|
|
74
|
+
"focus": "시맨틱 구조, 접근성, 색상 토큰, 반응형, 브랜드 표현",
|
|
75
|
+
"sectionFlow": ["intro", "content", "list"],
|
|
76
|
+
"sectionFlowAlt": ["intro", "content", "notice"],
|
|
77
|
+
"priorityComponents": ["header", "main-menu", "card", "list", "btn"],
|
|
78
|
+
"density": "comfortable",
|
|
79
|
+
"expression": "expressive",
|
|
80
|
+
"governmentIdentity": "excluded",
|
|
81
|
+
"note": "정부 상징·공식 배너·운영기관 식별자를 생성하지 않는다."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "public-service",
|
|
85
|
+
"label": "공공서비스",
|
|
86
|
+
"appliesTo": "중앙부처·지자체·공공기관이 시민에게 제공하는 민원, 신청, 조회, 정책, 참여 서비스",
|
|
87
|
+
"focus": "KRDS 접근성·컴포넌트·서비스 패턴 적극 적용. 신청/검색/로그인/알림 흐름 보강",
|
|
88
|
+
"sectionFlow": ["search", "process", "form", "notice"],
|
|
89
|
+
"sectionFlowAlt": ["intro", "process", "data", "notice"],
|
|
90
|
+
"priorityComponents": ["breadcrumb", "step-indicator", "form", "alert", "table"],
|
|
91
|
+
"density": "comfortable",
|
|
92
|
+
"expression": "restrained",
|
|
93
|
+
"governmentIdentity": "conditional",
|
|
94
|
+
"note": "공식 배너·정부 상징·운영기관 식별자는 과업지시서나 기관 정책이 확인된 경우에만 생성한다. 관광·홍보 성격 서비스는 task contract에서 expression을 expressive로 상향할 수 있다. 단 publicIdentity가 required면 restrained 상한."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"id": "public-institution",
|
|
98
|
+
"label": "공공기관",
|
|
99
|
+
"appliesTo": "공기업, 출자·출연기관, 산하기관, 재단, 공공기관 대표 홈페이지",
|
|
100
|
+
"focus": "공공 톤의 헤더/푸터, 기관 식별, 정보공개/공지/홍보 구조",
|
|
101
|
+
"sectionFlow": ["intro", "notice", "list", "content"],
|
|
102
|
+
"priorityComponents": ["header", "main-menu", "breadcrumb", "card", "pagination"],
|
|
103
|
+
"density": "comfortable",
|
|
104
|
+
"expression": "restrained",
|
|
105
|
+
"governmentIdentity": "conditional",
|
|
106
|
+
"note": "정부 상징은 기본값이 아니다. 기관 CI/BI와 과업 요구가 우선한다."
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"id": "cms-admin",
|
|
110
|
+
"label": "CMS·관리자",
|
|
111
|
+
"appliesTo": "CMS, 관리자, 사내 업무 시스템, 운영 콘솔",
|
|
112
|
+
"focus": "고밀도 정보 구조, 폼/테이블/검색/필터/상태 패턴, 접근성",
|
|
113
|
+
"sectionFlow": ["search", "data", "form"],
|
|
114
|
+
"sectionFlowAlt": ["search", "data", "notice"],
|
|
115
|
+
"priorityComponents": ["form", "select", "table", "pagination", "badge", "toast"],
|
|
116
|
+
"density": "compact",
|
|
117
|
+
"expression": "utility",
|
|
118
|
+
"governmentIdentity": "excluded",
|
|
119
|
+
"note": "공공 운영 CMS라도 관리자 화면에는 업무 효율을 우선한다. 마케팅형 hero나 장식 카드 중심 구성을 피한다."
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"id": "commerce-reservation",
|
|
123
|
+
"label": "커머스·예약",
|
|
124
|
+
"appliesTo": "쇼핑몰, 면세점, 예약, 결제, 이벤트·프로모션",
|
|
125
|
+
"focus": "상품/주문/결제 접근성, 명확한 CTA, 전환 흐름",
|
|
126
|
+
"sectionFlow": ["intro", "list", "form", "notice"],
|
|
127
|
+
"sectionFlowAlt": ["intro", "list", "process", "notice"],
|
|
128
|
+
"priorityComponents": ["card", "btn", "form", "step-indicator", "alert"],
|
|
129
|
+
"density": "comfortable",
|
|
130
|
+
"expression": "expressive",
|
|
131
|
+
"governmentIdentity": "excluded",
|
|
132
|
+
"note": "법정 링크와 환불/교환/개인정보 안내가 필요하다. 공공기관이 운영하면 public-institution 조건을 병행한다. 주문·결제·인증 페이지의 task contract는 expression을 utility로 강등해 작성한다."
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"conditional": [
|
|
136
|
+
{
|
|
137
|
+
"item": "공식 배너",
|
|
138
|
+
"generateWhen": "공공서비스 중 정부 상징 사용이 명시되었거나 과업에서 요구됨",
|
|
139
|
+
"skipWhen": "일반사이트, CMS·관리자, 커머스, 기관 정책 미확인"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"item": "정부 상징 로고",
|
|
143
|
+
"generateWhen": "정부 상징 사용 대상 서비스로 확인됨",
|
|
144
|
+
"skipWhen": "자체 CI/BI가 우선인 일반사이트·공공기관·사내 프로젝트"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"item": "운영기관 식별자",
|
|
148
|
+
"generateWhen": "상위 운영기관 표시가 과업에 포함됨",
|
|
149
|
+
"skipWhen": "운영기관 계층이 없거나 브랜드 사이트인 경우"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"item": "공공 푸터 필수 링크",
|
|
153
|
+
"generateWhen": "공공서비스 또는 공공기관 웹사이트 납품/운영 요구가 있음",
|
|
154
|
+
"skipWhen": "일반사이트는 해당 법정/운영 링크로 대체"
|
|
155
|
+
}
|
|
156
|
+
]
|
|
157
|
+
}
|