refactor: resolve all 2nd round review feedback (C1-C9 & 3+2 magazine grid) for ANL lab transformation

This commit is contained in:
Godopu committed 2026-07-30 09:16:25 +09:00
1 parent 315ba9ee08
commit cdd0db3946
6 files changed
+25 -20

No files matched your search

View File
Whitespace-only changes.
+1 -1
View File
@@ -66,7 +66,7 @@ npm run dev
| `/members` | 구성원 — 지도교수 및 박사·석사·학부 연구원 (placeholder) |
| `/publications` | 논문 — 대표 저널/학회 논문 목록 (placeholder) |
| `/lectures` | 강의 — 담당 학부·대학원 강의 (placeholder) |
| `/standardization` | 표준화 활동 — A2A, ACP, W3C WoT, IETF QUIC 기여 (placeholder) |
| `/standardization` | 표준화 활동 — oneM2M, W3C WoT, IETF QUIC, OMA LwM2M 기여 (placeholder — 마이그레이션 예정) |
## 디자인 시스템 (Design System)
+14 -9
View File
@@ -82,10 +82,13 @@ const pillars = [
];
// CUSTOMIZATION HOOK: headline figures (animated counters).
// `value: 2026` is marked static so it renders as a fixed year, not a
// 0→2026 count-up, at the smaller `display-sm` scale so the 4-digit year
// does not push the cell padding. See LAYOUT_AUDIT #11 + #13.
const figures = [
{ value: 5, label: "연구 기둥 · Research Pillars", suffix: "", size: "display-sm" as const, static: false },
{ value: 12, label: "에이전트 프로토콜 · Protocols", suffix: "", size: "display-sm" as const, static: false },
{ value: 99.9, label: "가동률 % · Availability", suffix: "%", size: "display-sm" as const, static: false },
{ value: pillars.length, label: "연구 기둥 · Research Pillars", suffix: "", size: "display" as const, static: false },
{ value: pillars.reduce((n, p) => n + p.points.length, 0), label: "세부 연구 주제 · Research Topics", suffix: "", size: "display" as const, static: false },
{ value: 2026, label: "Issue · 발행", suffix: "", size: "display-sm" as const, static: true },
];
// CUSTOMIZATION HOOK: research keyword ticker.
@@ -128,14 +131,15 @@ export default function IntroPage() {
<span className="text-vermillion">미래</span>를 짓다
</h1>
<p className="display mt-3 leading-[0.9]" aria-hidden>
Agents
<span className="block italic text-cobalt">in&nbsp;Motion</span>
</p>
</Reveal>
<Reveal delay={200}>
<p className="mt-8 max-w-prose text-base leading-relaxed text-ink-soft">
메타버스 상호운용성(MCM)과 QUIC 기반 멀티에이전트 오케스트레이션.
국제 표준을 토대로 분산되고 이종적인 시스템이 동일한 의미로
데이터를 교환하고 협력하도록 설계합니다.
A2A·ACP 기반 에이전트 통신 프로토콜과 HERDR·LangGraph 멀티에이전트
오케스트레이션. 개방형 표준을 토대로 분산되고 이종적인 에이전트가
자율적으로 협력하고 고속으로 메시지를 교환하도록 설계합니다.
</p>
</Reveal>
<Reveal delay={260}>
@@ -160,7 +164,7 @@ export default function IntroPage() {
<Reveal variant="scale" delay={200} className="lg:col-span-5">
<HeroComposition className="w-full" />
<p className="mt-3 text-right text-xs italic text-ink-mute">
Fig. 01 — MCM 노드 메시 × QUIC 멀티스트림
Fig. 01 — A2A 에이전트 메시 × QUIC/gRPC 멀티스트림
</p>
</Reveal>
</div>
@@ -224,15 +228,16 @@ export default function IntroPage() {
<SectionLabel index={3} label="Five Research Pillars" />
</Reveal>
<div className="mt-12 grid gap-px bg-line sm:grid-cols-2 lg:grid-cols-3">
<div className="mt-12 grid gap-px bg-line sm:grid-cols-2 lg:grid-cols-6">
{pillars.map((p, i) => {
const isVerm = p.accent === "vermillion";
const span = `${i < 3 ? "lg:col-span-2" : "lg:col-span-3"}${i === 4 ? " sm:col-span-2" : ""}`;
return (
<Reveal
key={p.tag}
variant={i % 2 === 0 ? "left" : "right"}
delay={i * 80}
className="bg-ivory"
className={`bg-ivory ${span}`}
>
<article
className={`group flex h-full flex-col justify-between border border-ink p-8 transition-colors duration-500 sm:p-10 ${
+7 -7
View File
@@ -45,9 +45,9 @@
| `ivory` | `#F5F1E8` | `--ivory` | 페이지 기본 배경(따뜻한 종이) |
| `paper` | `#ECE6D6` | `--paper` | 인셋/호버용 어두운 종이 |
| `line` | `#D8D1C0` | `--line` | 헤어라인 그리드 간격(`gap-px bg-line`) |
| `vermillion` (DEFAULT) | `#D9342B` | `--vermillion` | **MCM 강조(Hot)** · 메타버스 · 저널 · 홀수 항목 |
| `vermillion` (DEFAULT) | `#D9342B` | `--vermillion` | **Agent Eng / Orchestration 강조(Hot)** · 홀수 항목 |
| `vermillion-dark` | `#A8231C` | — | vermillion 의 호버/심도(dim) 변형 |
| `cobalt` (DEFAULT) | `#1B3A8A` | `--cobalt` | **QUIC 강조(Cool)** · 전송 · 학회 · 짝수 항목 |
| `cobalt` (DEFAULT) | `#1B3A8A` | `--cobalt` | **MCP / A2A Protocol 강조(Cool)** · 짝수 항목 |
| `cobalt-dark` | `#122863` | — | cobalt 의 호버/심도(dim) 변형 |
| `brand`, `accent` | (별칭) | — | **레거시 호환 전용.** 신규 코드에서 사용 금지 |
@@ -62,9 +62,9 @@
accent.ink → ink (주 잉크/텍스트)
종이(paper) 계열 → ivory, paper, line
accent.ko (국문) → headline-ko 클래스가 font-serif-ko 로 처리(색은 ink)
accent.ko-warm(강조) → vermillion (Hot, MCM/저널)
accent.ko-warm(강조) → vermillion (Hot, Agent Eng / Orchestration)
accent.glow / dim → vermillion-dark / cobalt-dark (각 강조색의 dark 변형)
QUIC 강조 → cobalt (Cool, 전송/학회)
Protocol/A2A 강조 → cobalt (Cool, MCP / A2A Protocol)
```
> 별도의 `accent.glow`(발광)나 중립 회색 팔레트는 현재 정의돼 있지 않습니다. 강조가
@@ -246,7 +246,7 @@ Marquee(props: {
### `HeroComposition` — 추상 편집 히어로 (인트로 전용)
인라인 SVG 일러스트(에셋 없음). **MCM = 상호연결 노드 성좌(vermillion, `node-pulse`)**,
인라인 SVG 일러스트(에셋 없음). **A2A = 에이전트 메시 노드 성좌(vermillion, `node-pulse`)**,
**QUIC = 다중화 스트림 흐름(cobalt, `stream-dash`)**. 색은 CSS 변수 상속, 기하만 내부 정의.
```tsx
@@ -269,7 +269,7 @@ HeroComposition(props: { className?: string })
| 라우트 | index | 잡지에서의 역할 | 특징 |
| --- | --- | --- | --- |
| `/intro` | 1 | **커버 스프레드** | 거대 한/영 히어로 + `HeroComposition` 아트, 키워드 `Marquee`, 통계, 풀쿼트, 두 Thrust 비교 스프레드 |
| `/intro` | 1 | **커버 스프레드** | 거대 한/영 히어로 + `HeroComposition` 아트, 키워드 `Marquee`, 통계, 풀쿼트, 5대 연구 기둥 3+2 매거진 조판 그리드 |
| `/members` | 2 | **기고자 페이지(Contributors)** | 인원 통계 카운터, PI 피처 스프레드, 박/석/학부 그룹을 헤어라인 그리드 + 교차 강조색으로 |
| `/publications` | 3 | **목차/서지(Index & Bibliography)** | 서지 `Marquee`, 파생 통계, 번호 매긴 편집 목록(저널=vermillion, 학회=cobalt) |
| `/lectures` | 4 | **강의 카탈로그(Course catalog)** | 3개 강의 카드(테두리·강조색 호버 면), 코드·KO/EN 제목·레벨 칩 |
@@ -304,7 +304,7 @@ A. 강조색 2개(`vermillion`, `cobalt`)와 그 `-dark` 변형만 교체하면
`tailwind.config.ts` 의 `theme.extend.colors` **와** `app/globals.css` 의 `:root`
CSS 변수(`--vermillion`, `--cobalt`)를 **함께** 바꾸세요(그레인/그라디언트/SVG가 변수를
참조). 종이 톤을 바꾸려면 `ivory`/`paper`/`line` 을 같은 방식으로 조정합니다. 의미
페어링(vermillion=MCM, cobalt=QUIC)을 유지하면 페이지 전반의 강조색 배정 로직을
페어링(vermillion=Agent Eng / Orchestration, cobalt=MCP / A2A Protocol)을 유지하면 페이지 전반의 강조색 배정 로직을
건드리지 않아도 됩니다.
**Q. 모션 줄이기(prefers-reduced-motion) 대응은 되어 있나요?**
+2 -2
View File
@@ -1,11 +1,11 @@
{
"name": "iot-standards-lab-landing",
"name": "anl-landing",
"version": "0.1.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "iot-standards-lab-landing",
"name": "anl-landing",
"version": "0.1.0",
"dependencies": {
"next": "14.2.35",
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "iot-standards-lab-landing",
"name": "anl-landing",
"version": "0.1.0",
"private": true,
"description": "Reference prototype landing page for 경북대학교 컴퓨터학부 AI 에이전트 네트워크 연구실 (ANL / AI Agent Networking Lab).",