diff --git a/README.md b/README.md
index cc9c8e1..377c1bd 100644
--- a/README.md
+++ b/README.md
@@ -1,123 +1,301 @@
-# π κ²½λΆλνκ΅ AI μμ΄μ νΈ λ€νΈμν¬ μ°κ΅¬μ€ (ANL)
+# π κ²½λΆλνκ΅ AI μμ΄μ νΈ λ€νΈμν¬ μ°κ΅¬μ€ (ANL) 곡μ μΉμ¬μ΄νΈ
-> λ³Έ νλ‘μ νΈλ **κ²½λΆλνκ΅ μ»΄ν¨ν°νλΆ AI μμ΄μ νΈ λ€νΈμν¬ μ°κ΅¬μ€ (AI Agent Networking Laboratory, ANL)**μ 곡μ ννμ΄μ§λ₯Ό μ°¨μΈλ μΉ κΈ°μ μ€ν(Next.js 14+, TypeScript, Tailwind CSS)μΌλ‘ 리λ΄μΌ λ° κ΅¬μΆνκΈ° μν νλ‘μ νΈμ
λλ€.
+> **AI Agent Networking Laboratory (ANL), School of Computer Science and Engineering, Kyungpook National University**
>
-> μ°κ΅¬μ€μ κΈ°μ‘΄ μ€μΈ‘ λ°μ΄ν° μλ³Έ(`ISL-2026/`), μ΅μ λ©ν°μμ΄μ νΈ μ€μΌμ€νΈλ μ΄μ
μ°κ΅¬/μΈλ―Έλ μλ£(`multi-agent-orchestration/`), κ·Έλ¦¬κ³ μ°Έκ³ μ© λͺ¨λ μΉ νλ‘ν νμ
(`refer_landing_page/`)μ ν΅ν©νμ¬ μ°κ΅¬μ€μ μλ‘μ΄ κΈ°μ λΉμ μ λ΄μ λλ©νμ΄μ§λ₯Ό κ°λ°ν©λλ€.
+> λ³Έ 리ν¬μ§ν 리λ κ²½λΆλνκ΅ μ»΄ν¨ν°νλΆ AI μμ΄μ νΈ λ€νΈμν¬ μ°κ΅¬μ€μ 곡μ μΉμ¬μ΄νΈ λ° λ°μ΄ν° κ΄λ¦¬ λμ보λ μμ€ν
μ
λλ€.
+> μ€μκ° λ°νμ λ°μ΄ν° λκΈ°νλ₯Ό μ§μνλ **Next.js 14+ νλ‘ νΈμλ**, **Go (Gin) κ³ μ±λ₯ RESTful λ°±μλ**, **SQLite νΈλμμ
λ°μ΄ν°λ² μ΄μ€**, κ·Έλ¦¬κ³ **ν΅ν© Docker 컨ν
μ΄λ μ€μΌμ€νΈλ μ΄μ
**μΌλ‘ ꡬμΆλμμ΅λλ€.
---
-## π 1. μ°κ΅¬μ€ κ°μ λ° ν΅μ¬ μ°κ΅¬ λΆμΌ (Lab Overview & Core Research Focus)
+## π 1. μ°κ΅¬μ€ κ°μ λ° ν΅μ¬ μ°κ΅¬ λΆμΌ (Lab Overview & Research Focus)
- **μ°κ΅¬μ€λͺ
**: AI μμ΄μ νΈ λ€νΈμν¬ μ°κ΅¬μ€ (ANL / AI Agent Networking Laboratory)
- **μμ**: κ²½λΆλνκ΅ ITλν μ»΄ν¨ν°νλΆ
- **μ§λκ΅μ**: κ³ μμ£Ό κ΅μ (Prof. Seok-Joo Koh / `sjkoh@knu.ac.kr`)
-- **μ°κ΅¬ ν¨λ¬λ€μ μ ν (Research Paradigm Shift)**:
- - *Legacy (κ³Όκ±°)*: λ¨μΌ λλ°μ΄μ€ μ°λ λ° μ ν΅μ μ¬λ¬ΌμΈν°λ·(oneM2M, OCF) νμ€ μ°κ΅¬
- - **Present (νμ¬ ν΅μ¬ μ°κ΅¬)**: **MCP & SKILL**, **λ©ν°μμ΄μ νΈ μ€μΌμ€νΈλ μ΄μ
μΈνλΌ (HERDR, LangGraph)**, **μ΄μ’
μμ΄μ νΈ μνΈμ΄μ©μ± νμ€ (ACP, A2A)**, λ° **AIoT gRPC/QUIC κ³ μ±λ₯ ν΅μ λ°±λ³Έ**
+- **μ°κ΅¬ ν¨λ¬λ€μ**:
+ - **Present & Future**: **MCP & SKILL**, **λ©ν°μμ΄μ νΈ μ€μΌμ€νΈλ μ΄μ
(HERDR, crewAI, LangGraph)**, **μ΄μ’
μμ΄μ νΈ μνΈμ΄μ©μ± νμ€ (ACP, A2A)**, λ° **AIoT gRPC/QUIC κ³ μ±λ₯ ν΅μ λ°±λ³Έ**
---
## π‘ 2. ν΅μ¬ μ°κ΅¬ λΆμΌ (Core Research Areas)
-`multi-agent-orchestration/` μ°κ΅¬ μμ°μ κΈ°λ°ν ANL μ°κ΅¬μ€μ μ£Όμ μ°κ΅¬ λΆμΌμ
λλ€:
-
### π 1) AI Agent κΈ°λ₯ νμ₯ νλ‘ν μ½ (MCP & SKILL)
-- **MCP (Model Context Protocol)**: Anthropic μ μ μ€ν κ·κ²©μΌλ‘ λ‘컬/μ격 λꡬ, λ°μ΄ν°(Resource), ν둬ννΈ ν΅μΌ νΈμΆ μΈν°νμ΄μ€
-- **SKILL (μμ¨ νμ₯ λꡬ λͺ¨μ)**: μ€ν μ½λ + λꡬ λͺ
μΈ μ€ν€λ§ + Few-shotμ΄ κ²°ν©λ λͺ¨λν ν¨ν€μ§ κΈ°μ
-- **CLI μ½λ© μμ΄μ νΈ**: Claude Code, Antigravity CLI λ± ν°λ―Έλ κΈ°λ° νμΌ μ μ΄ λ° μμ¨ μννΈμ¨μ΄ μμ§λμ΄λ§
+- **MCP (Model Context Protocol)**: Anthropic μ μ μ€ν κ·κ²©μΌλ‘ λꡬ, λ°μ΄ν° 리μμ€, ν둬ννΈ νμ€ μΈν°νμ΄μ€ μ°λ
+- **SKILL (μμ¨ νμ₯ λꡬ ν¨ν€μ§)**: μ€ν μ½λ + λꡬ λͺ
μΈ + Few-shotμ΄ κ²°ν©λ λͺ¨λν μμ΄μ νΈ κΈ°λ₯ νμ₯
+- **CLI μμ¨ μ½λ© μμ΄μ νΈ**: Claude Code, Antigravity CLI λ± ν°λ―Έλ κΈ°λ° μμ¨ μννΈμ¨μ΄ μμ§λμ΄λ§
-### π€ 2) λ©ν° μμ΄μ νΈ νμ
λ° μ€μΌμ€νΈλ μ΄μ
μΈνλΌ (Multi-Agent Orchestration)
-- **λ¨μΌ μμ΄μ νΈ νκ³ κ·Ήλ³΅**: Lost in the middle νμ λ°©μ§, νκ°(Hallucination) μ΅μ λ° μν μΈλΆν(Role Specialization)
-- **μ΄μ’
μμ΄μ νΈ κ΅μ°¨ κ²μ¦**: μλ‘ λ€λ₯Έ LLM λͺ¨λΈκ° λΉν/ν©μ 루νλ₯Ό ν΅ν μ λ’°μ± κ·Ήλν
+### π€ 2) λ©ν° μμ΄μ νΈ νμ
λ° μ€μΌμ€νΈλ μ΄μ
(Multi-Agent Orchestration)
+- **μ΄μ’
μμ΄μ νΈ κ΅μ°¨ κ²μ¦**: μλ‘ λ€λ₯Έ LLM λͺ¨λΈ(Planner, Creator, Reviewer) κ° λΉν/ν©μ 루νλ‘ λ¬΄κ²°μ± ν보
- **μ€μΌμ€νΈλ μ΄μ
μΈνλΌ μ½μ΄**:
- - **HERDR**: κ°μ λ°±κ·ΈλΌμ΄λ νλ‘μΈμ€ 컨ν
μ΄λ κΈ°λ° μμ΄μ νΈ μΈμ
격리 λ° TUI λΌμ΄νμ¬μ΄ν΄ κ΄μ
- - **crewAI**: μν (Role), λͺ©ν(Goal), λ°°κ²½(Backstory) κΈ°λ° μμ°¨/κ³μΈ΅ ν¬λ£¨ νλ‘μΈμ€
- - **LangGraph**: μν 보쑴ν μν κ·Έλν(Cyclic Graph), 루ν μ μ΄, μμΈ λ‘€λ°± λ° μν λκΈ°ν
+ - **HERDR**: κ°μ λ°±κ·ΈλΌμ΄λ νλ‘μΈμ€ 격리 λ° μμ΄μ νΈ μΈμ
TUI κ΄μ
+ - **LangGraph & crewAI**: μν 보쑴ν μν κ·Έλν, μν κΈ°λ° λΆμ
λ° μμΈ λ‘€λ°± μ²λ¦¬
### π 3) μμ΄μ νΈ μνΈμ΄μ©μ± κ°λ°©ν νμ€ (Agent Interoperability: ACP & A2A)
- **ACP (Agent Communication Protocol)**: IBM Research μ μ μλΉμ€ λ°κ²¬ λ° νμ€ν¬ μμ μ€ν νμ€
-- **A2A (Agent-to-Agent Protocol)**: Google λ° Linux Foundation μ£Όλμ μ΄μ’
μμ΄μ νΈ κ° νμ€ λ©μμ§ κ΅ν λ° μν μΆμ ν΅μ νμ€
-- **Agent Card (`/.well-known/agent-card.json`)**: μμ΄μ νΈμ μλ(Capabilities), μλν¬μΈνΈ, 보μ μ¬μμ λͺ
μνλ νμ€ JSON νλ‘ν
+- **A2A (Agent-to-Agent Protocol)**: Google/Linux Foundation μ£Όλ μ΄μ’
μμ΄μ νΈ κ° νμ€ λ©μμ§ κ΅ν ν΅μ νμ€
+- **Agent Card (`/.well-known/agent-card.json`)**: μμ΄μ νΈ μλ(Capabilities) λ° λ³΄μ μ¬μ νμ€ νλ‘ν
-### β‘ 4) μ§λ₯ν μ¬λ¬ΌμΈν°λ· (AIoT) & κ³ μ±λ₯ ν΅μ λ°±λ³Έ (AIoT & gRPC/QUIC)
-- **AIoT λΆμ° μμ¨ μ μ΄**: μ€λ§νΈ ν©ν 리/μ€λ§νΈ ν λ± Physical μΌμ κ³μΈ΅κ³Ό μ£μ§ μ°μ° κ³μΈ΅ κ° λ©ν° μμ΄μ νΈ λΆμ° λ°°μΉ
-- **gRPC & QUIC μλ°©ν₯ μ€νΈλ¦¬λ°**: HTTP/2 & HTTP/3 κΈ°λ° Protobuf μ§λ ¬ν λ° λμ©λ λ©ν°λͺ¨λ¬ λ°μ΄λ리 κ³ μ μ μ‘
-- **νμ΄λΈλ¦¬λ λ°±λ³Έ λ©μ¬**: μΌμ κ³μΈ΅μ κ²½λ νλ‘ν μ½(MQTT/CoAP)κ³Ό μ£μ§ λ°±λ³Έμ κ³ μ±λ₯ νλ‘ν μ½(gRPC/QUIC) μμΆ© νΌμ©
+### β‘ 4) μ§λ₯ν μ¬λ¬ΌμΈν°λ· (AIoT) & κ³ μ±λ₯ λ°±λ³Έ (AIoT & gRPC/QUIC)
+- **AIoT λΆμ° μμ¨ μ μ΄**: μΌμ κ³μΈ΅κ³Ό μ£μ§ μ°μ° κ³μΈ΅ κ° λ©ν° μμ΄μ νΈ λΆμ° λ°°μΉ
+- **gRPC & QUIC μλ°©ν₯ μ€νΈλ¦¬λ°**: HTTP/2 & HTTP/3 κΈ°λ° κ³ μ λ°μ΄λ리 λ©ν°λͺ¨λ¬ μ μ‘
---
-## π 3. λλ ν°λ¦¬ ꡬ쑰 λ° μν (Directory Structure)
+## ποΈ 3. μμ€ν
μν€ν
μ² (System Architecture)
+
+```mermaid
+graph TD
+ User["π User / Browser"]
+ Admin["π Admin User"]
+
+ subgraph Docker_Network ["Docker Bridge Network (anl-net)"]
+ subgraph Frontend_App ["Next.js 14 Frontend (anl-frontend:3000)"]
+ PublicPages["Public Pages (force-dynamic)
/, /members, /publications, /lectures, /standardization"]
+ AdminConsole["Admin Dashboard (/console)
Research Projects, Areas, Members, Pubs, Lectures, Standards"]
+ API_Client["Typed API Client (lib/api.ts, lib/adminApi.ts)"]
+ end
+
+ subgraph Backend_App ["Go Gin Backend API (anl-backend:8080)"]
+ Router["REST API Router & CORS"]
+ AuthMW["RequireAdminToken Middleware"]
+ Handlers["CRUD Handlers (Home, Members, Pubs, Lectures, Standards)"]
+ Repo["Repository Layer & Transaction Order Normalizer"]
+ end
+
+ subgraph Storage ["Persistent Volume Storage (anl-sqlite-storage)"]
+ SQLiteDB[("SQLite Database
/app/data/anl.db")]
+ end
+ end
+
+ User -->|HTTP :3000| PublicPages
+ Admin -->|Bearer Auth :3000| AdminConsole
+ PublicPages --> API_Client
+ AdminConsole --> API_Client
+ API_Client -->|REST API :8080| Router
+ Router --> AuthMW
+ AuthMW --> Handlers
+ Handlers --> Repo
+ Repo --> SQLiteDB
+```
+
+---
+
+## π 4. λλ ν°λ¦¬ ꡬ쑰 (Directory Structure)
```
landing_page/
-βββ README.md # [λ³Έ λ¬Έμ] 5λ μ°κ΅¬ κΈ°λ₯ λ°μ ν΅ν© μ¨λ³΄λ© κ°μ΄λ
-βββ ISL-2026/ # π [μ€μ λ°μ΄ν° μλ³Έ] κΈ°μ‘΄ μ°κ΅¬μ€ 곡μ ννμ΄μ§ (HTML/CSS λ° κ΅μ/μ°κ΅¬μ/μ€μ λ°μ΄ν°)
-β βββ index.html # λ©μΈ λλ©νμ΄μ§ & λ κ±°μ μ°κ΅¬ λΆμΌ μμ€
-β βββ member.html # κ΅μμ§, μ/λ°μ¬ μ°κ΅¬μ, νλΆμ°κ΅¬μ, μ‘Έμ
μ λͺ©λ‘
-β βββ paper-international.html # κ΅μΈ μ λ λ° νν λ
Όλ¬Έ μ€μ
-β βββ paper-domestic.html # κ΅λ΄ μ λ λ° νν λ
Όλ¬Έ μ€μ
-β βββ patent.html # νΉν λ±λ‘/μΆμ μ€μ
-β βββ standard.html # κ΅μ /κ΅λ΄ νμ€ν κΈ°μ¬ λ΄μ (oneM2M, ITU-T λ±)
+βββ README.md # [λ³Έ λ¬Έμ] μ’
ν© νλ‘μ νΈ κ°μ΄λ λ° λ°°ν¬/μ΄μ λ¬Έμ
+βββ docker-compose.yml # ν΅ν© Docker Compose λ©ν° μλΉμ€ μ€μΌμ€νΈλ μ΄μ
+βββ .env.example # νκ²½λ³μ μ€μ ν
νλ¦Ώ
β
-βββ multi-agent-orchestration/ # π [μ κ· μ°κ΅¬ λΆμΌ μμΈ κ΅μ‘ & μΈλ―Έλ μλ£]
-β βββ lecture_summary.md # AI Multi-Agents μ€μΌμ€νΈλ μ΄μ
ν΅μ¬ κΈ°μ μμ½
-β βββ SLIDE.md # μ°κ΅¬ μΈλ―Έλ ν΅ν© λ°ν μλ£
-β βββ implementation_plan.md # μ€μΌμ€νΈλ μ΄μ
κ²ν λ° λ°μ 루ν κ³ν
-β βββ chapters/ # 0~6μ₯ μ±ν°λ³ μμΈ μ°κ΅¬ λ¬Έμ (Prompt, MCP, HERDR, A2A, gRPC λ±)
+βββ backend/ # β‘ [Go λ°±μλ REST API]
+β βββ cmd/ # μ§μ
μ (api: API μλ², seed: μλ, export-content)
+β βββ internal/ # λΉμ¦λμ€ λ‘μ§ (handlers, repository, router, config, httpx)
+β βββ db/backup/ # πΎ λ°μ΄ν°λ² μ΄μ€ λ°±μ
(anl.db λ°μ΄λ리, anl_dump.sql μ 체 λ€ν)
+β βββ seed/data/ # μ΄κΈ° μμ JSON μλ λ°μ΄ν°
+β βββ Dockerfile # λ°±μλ κ²½λ Multi-stage Dockerfile (Alpine 3.20)
+β βββ Makefile # λΉλ, ν
μ€νΈ, ν¬λ§·, λ°±μ
(make backup-db) νκ²
+β βββ go.mod # Go λͺ¨λ μμ‘΄μ± μ μ
β
-βββ refer_landing_page/ # π [νκ² μΉ μ ν리μΌμ΄μ
] Next.js 14+ App Router
-β βββ app/ # Next.js App Router νμ΄μ§ (Home /, members, publications, lectures, standardization)
-β βββ components/ # λͺ¨λνλ UI μ»΄ν¬λνΈ (Header, Footer, PageHeader, SectionLabel, Reveal, Counter, Marquee)
-β βββ docs/DESIGN.md # κ³ λλΉ λ§€κ±°μ§ μλν λ¦¬μΌ λμμΈ μμ€ν
κ°μ΄λ λ¬Έμ
-β βββ tailwind.config.ts # λμμΈ ν ν° λ° μκ° μ€νμΌ κ·μΉ μ μ
+βββ refer_landing_page/ # π [Next.js 14 νλ‘ νΈμλ & κ΄λ¦¬μ μ½μ]
+β βββ app/ # App Router νμ΄μ§ (κ³΅κ° νμ΄μ§ λ° /console κ΄λ¦¬μ λμ보λ)
+β βββ components/ # UI μ»΄ν¬λνΈ (Header, Footer, Reveal, Counter, Marquee λ±)
+β βββ lib/ # API ν΅μ ν΄λΌμ΄μΈνΈ (api.ts: μ‘°ν, adminApi.ts: CRUD)
+β βββ docs/ # λμμΈ μμ€ν
(DESIGN.md: Issue 01 μλν λ¦¬μΌ μ€νμΌ)
+β βββ scripts/ # E2E ν
μ€νΈ μ€μνΈ λ° λ°μ΄ν° κ²μ¦ λ¬λ
+β βββ Dockerfile # νλ‘ νΈμλ Standalone Multi-stage Dockerfile (Node 20 Alpine)
+β βββ next.config.js # output: "standalone" νλ‘λμ
λ²λ€λ§ μ€μ
+β βββ package.json # Next.js, React, Tailwind CSS μμ‘΄μ±
β
-βββ .agents/ # π€ λ©ν° μμ΄μ νΈ μ€μΌμ€νΈλ μ΄μ
κ·μΉ λ° μ€ν¬ ν΄ν· (MAM)
-βββ .mam/ # β‘ μμ΄μ νΈ μΈμ
DB λ° HERDR 격리 λ μ§μ€νΈλ¦¬
-βββ docs/ & research/ # μμ
λ
ΈνΈ, κ²°μ κΈ°λ‘(ADR) λ° μ°κ΅¬ λ
Όλ¬Έ μμΉ΄μ΄λΈ
+βββ .agents/ # π€ λ©ν° μμ΄μ νΈ μ€μΌμ€νΈλ μ΄μ
μ€ν¬ & λ£°μ
(MAM)
+βββ .mam/ # β‘ μμ΄μ νΈ μΈμ
DB λ° HERDR 격리 λ μ§μ€νΈλ¦¬
+βββ ISL-2026/ # π λ κ±°μ μ€μΈ‘ μλ³Έ HTML/CSS μμΉ΄μ΄λΈ
```
---
-## π― 4. μ¨λ³΄λ© κ°λ° λ―Έμ
(Development Missions for Agents)
+## π 5. Docker 컨ν
μ΄λ λ°°ν¬ λ° μ΄μ κ°μ΄λ (Production Deployment)
-### π₯ Mission 1: μ€μ λ κ±°μ λ°μ΄ν° λ§μ΄κ·Έλ μ΄μ
& μ κ· 5λ μ°κ΅¬ κΈ°λ₯ λ°μ
-- `ISL-2026/` λ κ±°μ λ°μ΄ν°(κ΅μμ§, μ°κ΅¬μ, λ
Όλ¬Έ, νΉν, κ°μ)λ₯Ό μΆμΆνμ¬ `refer_landing_page/app//page.tsx` λ΄ λ°μ΄ν° κ΅¬μ‘°λ‘ κ΅μ²΄ν©λλ€.
-- μ°κ΅¬μ€ λ©μΈ λλ©νμ΄μ§(`app/page.tsx`) μλ¨ λΉμ£ΌμΌ, ν€μλ λ§ν΄(`Marquee`), μΉ΄μ΄ν° μμΉ(`Counter`)μ **A2A, MCP, HERDR, LangGraph, gRPC/QUIC** λ± 5λ μ κ· μ°κ΅¬ ν€μλ λ° μ±κ³Όλ₯Ό μ λ©΄ κ°μ‘°ν©λλ€.
+λ€λ₯Έ μν¬μ€ν
μ΄μ
μ΄λ μλ²μμ Dockerλ₯Ό ν΅ν΄ μν΄λ¦μΌλ‘ μ 체 μμ€ν
μ λΉλνκ³ λ°°ν¬νλ λ°©λ²μ
λλ€.
-### π¨ Mission 2: κ³ λλΉ μλν λ¦¬μΌ λμμΈ μμ€ν
μ€μ
-- `refer_landing_page/docs/DESIGN.md`μ λͺ
μλ μλν λ¦¬μΌ λμμΈ μμ€ν
("Issue 01") κ·κ²©μ μ격ν μ€μν©λλ€.
-- `ISL-2026/assets/`μ λ‘κ³ λ° μΈλ¬Ό/μ°κ΅¬ μ¬μ§μ `refer_landing_page/public/`μΌλ‘ μ΄κ΄ν©λλ€.
+### 1) μ μ₯μ ν΄λ‘ λ° νκ²½ μ€μ
+```bash
+# 1. μ μ₯μ ν΄λ‘
+git clone <리ν¬μ§ν 리_URL> landing_page
+cd landing_page
-### π Mission 3: SEO, λ°μν UI & λΉλ κ²μ¦
-- λͺ¨λ νμ΄μ§μ SEO νκ·Έ(Title, Description, Open Graph, Semantic HTML5) μ μ©.
-- `npm run build` νμ
/λ¦°νΈ μ€λ₯ 0건 λ° λ°μν UI κ²μ.
+# 2. νκ²½λ³μ νμΌ μμ±
+cp .env.example .env
----
+# (μ ν) .env νμΌμμ κ΄λ¦¬μ ν ν°(ADMIN_TOKEN) λ° ν¬νΈ λ³κ²½ κ°λ₯
+```
-## π₯ 5. λ©ν° μμ΄μ νΈ μν (Multi-Agent Team Protocol)
+### 2) 컨ν
μ΄λ μ΄λ―Έμ§ λΉλ
+```bash
+# νλ‘ νΈμλ λ° λ°±μλ μ΄λ―Έμ§ λμ λΉλ
+docker compose build
-| μμ΄μ νΈ | λ΄λΉ μν (Role) | μ£Όμ μ무 (Primary Responsibilities) |
-| :--- | :--- | :--- |
-| π§ **Claude** | `planner and reviewer` | 5λ μ°κ΅¬ κΈ°λ₯ λ°μ κ²ν , λ°μ΄ν° λ¬΄κ²°μ± κ²μ¦, μ΅μ’
μ½λ PR μΉμΈ |
-| π¨ **Agy** (Antigravity) | `creator` | Component κ°λ°, `ISL-2026` λ° `multi-agent-orchestration` μ°κ΅¬ λ°μ΄ν° μΆμΆ λ° μ½λ λ§μ΄κ·Έλ μ΄μ
|
-| π **Cline** | `reviewer` | UI/UX λ°μν κ²μ, SEO λ° Accessibility μ κ², λ¦°νΈ/νμ
μμ μ± κ²μ¦ |
+# (μ ν) μΊμ μμ΄ μ 체 μ¬λΉλ μ
+docker compose build --no-cache
+```
-> β οΈ λͺ¨λ μμ΄μ νΈλ νλ‘μ νΈ λ£¨νΈμ [`AGENTS.md`](./AGENTS.md) μ§μΉ¨ λ° [`.agents/MULTI_AGENT_RULES.md`](./.agents/MULTI_AGENT_RULES.md) κ·μ½μ μ€μν΄μΌ ν©λλ€.
+### 3) μλΉμ€ λ°±κ·ΈλΌμ΄λ λ°°ν¬ λ° μ€ν
+```bash
+# 1. 컨ν
μ΄λ λ°±κ·ΈλΌμ΄λ μ€ν
+docker compose up -d
+
+# 2. μ€ν μν λ° ν¬μ€μ²΄ν¬ νμΈ (anl-backend-api λ° anl-frontend-app)
+docker compose ps
+
+# 3. μ€μκ° λ‘κ·Έ λͺ¨λν°λ§
+docker compose logs -f
+```
+
+### 4) μλΉμ€ μ μ URL
+- **π 곡μ ννμ΄μ§**: [`http://localhost:3000`](http://localhost:3000)
+- **π κ΄λ¦¬μ λμ보λ**: [`http://localhost:3000/console`](http://localhost:3000/console) (λ‘κ·ΈμΈ ν ν°: `.env`μ μ€μ λ `ADMIN_TOKEN`)
+- **β‘ λ°±μλ REST API**: [`http://localhost:8080/api/v1`](http://localhost:8080/api/v1)
+- **π API ν¬μ€μ²΄ν¬**: [`http://localhost:8080/api/v1/health`](http://localhost:8080/api/v1/health)
+
+### 5) 컨ν
μ΄λ κ΄λ¦¬ λ° μ€μ§
+```bash
+# μλΉμ€ μ¬μμ
+docker compose restart
+
+# μλΉμ€ μ€μ§ λ° μ»¨ν
μ΄λ μ κ±° (λ°μ΄ν°λ² μ΄μ€ λ³Όλ₯¨μ μμ νκ² λ³΄μ‘΄λ¨)
+docker compose down
+
+# (μ£Όμ) λ°μ΄ν°λ² μ΄μ€ λ³Όλ₯¨κΉμ§ μμ ν μμ νκ³ μ΄κΈ°νν λ
+docker compose down -v
+```
---
## π οΈ 6. λ‘컬 κ°λ° λ° μ€ν κ°μ΄λ (Getting Started)
+Docker μμ΄ λ‘컬 κ°λ° νκ²½μμ νλ‘ νΈμλμ λ°±μλλ₯Ό κ°κ° μ§μ μ€ννκ³ κ°λ°νλ λ°©λ²μ
λλ€.
+
+### π
°οΈ Backend (Go REST API) κ°λ° κ°μ΄λ
+
+#### μ¬μ μꡬμ¬ν
+- **Go 1.22+** (κΆμ₯: Go 1.26+)
+- **SQLite 3**
+- **Make** λΉλ λꡬ
+
+#### μ€ν μ μ°¨
```bash
-# 1. μ°Έκ³ μ© μΉ μ ν리μΌμ΄μ
λλ ν°λ¦¬λ‘ μ΄λ
+# 1. λ°±μλ λλ ν°λ¦¬λ‘ μ΄λ
+cd backend
+
+# 2. νκ²½ μ€μ νμΌ λ³΅μ¬
+cp .env.example .env
+
+# 3. Go λͺ¨λ μμ‘΄μ± λ€μ΄λ‘λ
+go mod download
+
+# 4. λ°μ΄ν°λ² μ΄μ€ λ°±μ
λ³Έ 볡μ (μ΅μ μ€μΈ‘ λ°μ΄ν° 223건 μ μ¬)
+sqlite3 anl.db < db/backup/anl_dump.sql
+
+# 5. λ°±μλ API μλ² λΉλ λ° μ€ν (κΈ°λ³Έ ν¬νΈ: http://localhost:8080)
+make run
+
+# 6. (λ³λ ν°λ―Έλ) μ λ ν
μ€νΈ λ° μ½λ νμ§ κ²μ¬
+make test # μ λ ν
μ€νΈ μ€ν
+make fmt-check # gofmt ν¬λ§· κ²μ¬
+make vet # go vet μ μ λΆμ
+```
+
+---
+
+### π
±οΈ Frontend (Next.js 14+) κ°λ° κ°μ΄λ
+
+#### μ¬μ μꡬμ¬ν
+- **Node.js 20+** (LTS)
+- **npm 10+**
+
+#### μ€ν μ μ°¨
+```bash
+# 1. νλ‘ νΈμλ λλ ν°λ¦¬λ‘ μ΄λ
cd refer_landing_page
# 2. μμ‘΄μ± ν¨ν€μ§ μ€μΉ
npm install
-# 3. κ°λ° μλ² μ€ν (κΈ°λ³Έ ν¬νΈ: http://localhost:3000)
+# 3. λ‘컬 νκ²½λ³μ νμΌ μ€μ (νμ μ)
+# κΈ°λ³Έκ°μΌλ‘ http://localhost:8080/api/v1μ μλ μ°κ²°λ©λλ€.
+echo "NEXT_PUBLIC_API_BASE_URL=http://localhost:8080/api/v1" > .env.local
+
+# 4. κ°λ° μλ² μ€ν (κΈ°λ³Έ ν¬νΈ: http://localhost:3000)
npm run dev
-# 4. νλ‘λμ
λΉλ ν
μ€νΈ (κ²μ¦ μ μ¬μ©)
-npm run build
+# 5. νλ‘λμ
λΉλ λ° νμ
κ²μ¬
+npm run lint # ESLint μ μ λΆμ
+npx tsc --noEmit # TypeScript μ격 νμ
κ²μ¬
+npm run build # Next.js Standalone νλ‘λμ
λΉλ
+
+# 6. μ 체 ν΅ν© E2E ν
μ€νΈ μ€μνΈ μ€ν (Gate 0~11 μλ κ²μ¦)
+python3 scripts/run_e2e_tests.py
```
+
+---
+
+## πΎ 7. λ°μ΄ν°λ² μ΄μ€ λ°±μ
λ° λ³΅μ κ°μ΄λ (Database Backup & Restore)
+
+μ°κ΅¬μ€μ μμ€ν λ
Όλ¬Έ, νΉν, λ©€λ², κ°μ, νμ€ν λ°μ΄ν°λ SQLite λ°μ΄ν°λ² μ΄μ€λ₯Ό ν΅ν΄ κ΄λ¦¬λλ©°, μμ¬μ΄ λ°±μ
/볡μ λꡬλ₯Ό μ 곡ν©λλ€.
+
+### 1) λ°±μ
νμΌ κ΅¬μ± (`backend/db/backup/`)
+- **`anl.db`**: SQLite λ°μ΄λ리 μ¨λΌμΈ μ€λ
μ· νμΌ
+- **`anl_dump.sql`**: μ€ν€λ§ DDL λ° μ 체 11κ° ν
μ΄λΈ λ°μ΄ν° INSERTλ¬Έμ΄ ν¬ν¨λ νμ€ SQL ν
μ€νΈ λ€ν (Git μΆμ κ΄λ¦¬)
+
+### 2) λ°μ΄ν°λ² μ΄μ€ μ¦μ λ°±μ
λͺ
λ Ήμ΄
+μΈμ λ μ§ λ°±μλ λλ ν°λ¦¬μμ λͺ
λ Ήμ΄ ν μ€λ‘ μ΅μ μνλ₯Ό λ°±μ
ν μ μμ΅λλ€:
+```bash
+cd backend
+make backup-db
+```
+
+### 3) μ κ· νκ²½ λλ Docker 컨ν
μ΄λ 볡μ λ°©λ²
+
+#### π³ Docker λ°°ν¬ νκ²½μμ 볡μ (μΆμ²)
+```bash
+docker compose exec -T anl-backend sqlite3 /app/data/anl.db < backend/db/backup/anl_dump.sql
+```
+
+#### π» λ‘컬 κ°λ° νκ²½μμ 볡μ
+```bash
+cd backend
+sqlite3 anl.db < db/backup/anl_dump.sql
+```
+
+---
+
+## π 8. κ΄λ¦¬μ λμ보λ (`/console`) μ¬μ© κ°μ΄λ
+
+μ°κ΅¬μ€ ννμ΄μ§μ λͺ¨λ λ°μ΄ν°λ₯Ό μΉ UIμμ μ€μκ°μΌλ‘ μΆκ°, μμ , μμ ν μ μλ κ΄λ¦¬μ μ½μμ μ§μν©λλ€.
+
+1. **μ μ κ²½λ‘**: [`http://localhost:3000/console/login`](http://localhost:3000/console/login)
+2. **κ΄λ¦¬μ μΈμ¦**:
+ - λ°±μλ `.env` νμΌμ μ μλ `ADMIN_TOKEN` (κΈ°λ³Έκ°: `anl-admin-secret-token-2026`)μ μ
λ ₯νμ¬ λ‘κ·ΈμΈν©λλ€.
+ - μΈμ¦ ν ν°μ λΈλΌμ°μ μΈμ
μ μ μ₯λλ©°, λͺ¨λ λ³μ‘° μμ²(`POST`, `PUT`, `DELETE`)μ `Authorization: Bearer ` ν€λλ‘ μλ 첨λΆλ©λλ€.
+3. **μ 곡 κΈ°λ₯**:
+ - **μ£Όμ μ°κ΅¬ κ³Όμ (`/console/research-projects`)**: κ³Όμ λͺ
, κΈ°κ°, μ£Όκ΄κΈ°κ΄, μ°κ΅¬λΉ λ± CRUD
+ - **ν΅μ¬ μ°κ΅¬ λΆμΌ (`/console/research-areas`)**: μ°κ΅¬ λΆμΌ CRUD λ° **μμ λ³κ²½ μ 1..N μλ μ κ·ν & μννΈ**
+ - **ꡬμ±μ/μ‘Έμ
μ (`/console/members`)**: κ΅μ, μ°κ΅¬μ, μ‘Έμ
μ μΈμ μ¬ν, μ°κ΅¬λΆμΌ, μ·¨μ
μ² CRUD
+ - **λ
Όλ¬Έ/νΉν μ€μ (`/console/publications`)**: κ΅μΈ/κ΅λ΄ νμ μ§ λ° νμ λν, νΉν μ€μ 223건 CRUD
+ - **κ°μ μλ£μ€ (`/console/lectures`)**: νκΈ°λ³ κ°μ€ κ³Όλͺ©, κ°μ κ°μ, λ€μ΄λ‘λ λ§ν¬ κ΄λ¦¬
+ - **νμ€ν 기ꡬ (`/console/standardization`)**: oneM2M, ITU-T λ± κΈ°κ΅¬λ³ νμ€ λ¬Έμ λ²νΈ λ° μν κ΄λ¦¬
+
+---
+
+## π₯ 9. λ©ν° μμ΄μ νΈ μ€μΌμ€νΈλ μ΄μ
νλ‘ν μ½ (MAM)
+
+λ³Έ νλ‘μ νΈλ Multi-Agent Mux (MAM) κΈ°λ°μ μμ¨ μμ΄μ νΈ νμ
루νλ₯Ό ν΅ν΄ κ°λ° λ° μ μ§λ³΄μλ©λλ€.
+
+| μμ΄μ νΈ μΈμ
λͺ
| λ΄λΉ μν (Role) | λꡬ/λ°νμ | μ£Όμ μ무 |
+| :--- | :--- | :--- | :--- |
+| π§ **`planner-reviewer-claude-01`** | `planner and reviewer` | Claude Code | μν€ν
μ² μ€κ³, ꡬν κ³ν μ립, λ°μ΄ν° λ¬΄κ²°μ± κ²μ¦, μ΅μ’
PASS νμ |
+| π¨ **`creator-agy-01`** | `creator` | Antigravity CLI | μ»΄ν¬λνΈ κ°λ°, λ°±μλ API ꡬν, Docker 컨ν
μ΄λν, 리ν©ν λ§ |
+| π **`reviewer-cline-01`** | `reviewer` | Cline | μΉ νμ€/SEO κ²μ, νμ
μμ μ±, Docker λ€νΈμν¬/보μ μ¬μΈ΅ μ½λ 리뷰 |
+
+- **μμ¨ λ£¨ν μ€ν**: `bash .agents/skills/multi-agent-mux-loop/scripts/run_loop.sh --all-reviewer --target-agent "creator-agy-01" --task "<μμ
λ΄μ©>"`
+- **μΈμ
μν νμΈ**: `bash .agents/skills/multi-agent-mux-status/scripts/status.sh`