전략센터·통합포털 재구성 기획서
strategy.html 13개 섹션 → 5개, index.html 16개 섹션 → 6개. 나머지를 별도 페이지로 분리. 2026-08-30
0. 문제 진단
| 페이지 | 현재 섹션 수 | 줄 수 | 문제 |
| strategy.html | 13개 | 807줄 | 은폐 행위자 + 내부자 위험 + 독립검증 + 환각 + FTPL + GFM-K + dPq + 에이전트 + 개인 업무가 한 페이지 |
| index.html | 16개 | 353줄 | 사건 + 구독 + 배포 + 사건저장소 + dPq + 책임 + 유지관리 + 독립검증 + 집단행위자 + GWS + 분야별 + 이력 + 핫이슈 + 연준 + 윤리 |
핵심 문제: 한 페이지에 너무 많은 내용 → 방문자가 뭘 봐야 할지 모른다
strategy.html은 "전략센터"인데 보안·감사·검증·환각·토큰절약·주가예측·에이전트 협력까지 다 들어있음. index.html은 "통합포털 첫 페이지"인데 유지관리·독립검증·집단행위자·연준·윤리까지 다 들어있음.
1. 재구성 원칙
3가지 원칙
- 1페이지 1역할 — 전략센터는 전략, 포털 첫 페이지는 안내, 각 현황판은 별도
- 5~6개 섹션 한도 — 한 페이지에 5~6개 섹션까지만. 그 이상은 별도 페이지로
- 링크로 연결 — 분리된 페이지는 첫 페이지에서 링크로 접근
2. strategy.html 재구성 — 13개 → 5개
2.1 유지할 5개 섹션 (strategy.html에 남김)
| # | 섹션 | 내용 | 판정 |
| 1 | 오늘의 전략센터 | 오늘 할 일, 마감, 우선 목표 | 유지 |
| 2 | 6대 전략 목표 | G1~G6 진행률, KPI | 유지 |
| 3 | 개인 업무 | 이메일, 할 일, 일정, 연락처, 문서 | 유지 |
| 4 | dPq AI 제품 현황 | 검증 건수, 매출, B2B, 구독자, CIVIL 6특허, 자료실 | 유지 (요약만) |
| 5 | 에이전트 협력 + AI 협업 공간 | 7 에이전트 상태, 협업 탭 | 유지 (2개를 1개로 통합) |
2.2 분리할 8개 섹션 (별도 페이지로 이동)
| # | 현재 섹션 | 이동할 페이지 | 판정 | 비고 |
| 1 | 은폐 메가 행위자 추출 | finance.html (이미 은폐 패널 있음) | 기존 페이지 | finance.html에 이미 은폐 패널이 있으므로 링크만 |
| 2 | 내부자 위험 현황판 | insider-risk.html 신규 | 신규 생성 | A+C 6신호, 감사 로그, 등급 분포 |
| 3 | 독립검증 현황판 | verify.html (이미 있음) | 기존 페이지 | 링크만 추가 |
| 4 | 환각 제거율 현황판 | hallucination-dashboard.html 신규 | 신규 생성 | 혼동 행렬, 빅테크 비교표, 탐지 방법 |
| 5 | FTPL 토큰·시간 절약 현황판 | gfmk-dashboard.html (이미 있음) | 기존 페이지 | GFM-K 대시보드에 FTPL 섹션 추가 |
| 6 | GFM-K 5단 흐름 | gfmk-dashboard.html (이미 있음) | 기존 페이지 | 링크만 |
| 7 | 마감 임박 | 개인 업무 섹션에 통합 | 통합 | 별도 섹션에서 개인 업무 안으로 |
| 8 | dPq AI 제품 상세 | dpq-strategy.html + dpq-launch-plan.html (이미 있음) | 기존 페이지 | strategy.html에는 요약만, 상세는 별도 |
strategy.html 재구성 후
13개 섹션 → 5개 섹션. 줄 수 807 → 약 350줄 예상. 나머지 8개는 기존 페이지(4개) + 신규 페이지(2개) + 통합(1개) + 별도(1개)로 분리.
3. index.html 재구성 — 16개 → 6개
3.1 유지할 6개 섹션 (index.html에 남김)
| # | 섹션 | 내용 | 판정 |
| 1 | 최근 사건 타임라인 | 실시간 사건 | 유지 |
| 2 | 구독 안내 | Free/Premium/Pro/Pro+/B2B 5계층 | 유지 |
| 3 | 분야별 독립 앱 | 8개 분야 카드 | 유지 |
| 4 | 개발 완료 이력 | 17단계 | 유지 |
| 5 | 핫이슈 → 역사기록 링크 | history.html 링크 | 유지 |
| 6 | 모든 앱에 적용하는 원칙 | 핵심 원칙 요약 | 유지 |
3.2 분리할 10개 섹션 (별도 페이지로 이동)
| # | 현재 섹션 | 이동할 페이지 | 판정 | 비고 |
| 1 | 배포 운영상태 | maintenance.html (이미 있음) | 기존 | 링크만 |
| 2 | 중앙 사건저장소 + 운행엔진 | operations.html (이미 있음) | 기존 | 링크만 |
| 3 | dPq 제품 (출처 범위) | dpq-strategy.html (이미 있음) | 기존 | 링크만 |
| 4 | 책임·판정 (Control Core) | control.html (이미 있음) | 기존 | 링크만 |
| 5 | 유지관리 기반팩 | maintenance.html (이미 있음) | 기존 | 링크만 |
| 6 | 독립검증 | verify.html (이미 있음) | 기존 | 링크만 |
| 7 | 집단행위자 신뢰 판별 | actor-trust.html (이미 있음) | 기존 | 링크만 |
| 8 | GWS 주식 파동 신호 | gws.html (이미 있음) | 기존 | 링크만 |
| 9 | 연준 통화정책 | fed.html (이미 있음) | 기존 | 링크만 |
| 10 | 콘텐츠 윤리 평가 | guide.html 또는 별도 | 이동 | guide.html이 있으므로 링크 |
index.html 재구성 후
16개 섹션 → 6개 섹션. 줄 수 353 → 약 180줄 예상. 나머지 10개는 전부 기존 페이지에 링크만 추가.
4. 신규 생성 페이지
| 페이지 | 내용 | 예상 줄 수 |
| insider-risk.html | 내부자 위험 6신호, 감사 로그, 등급 분포, 4역할 분리, 윤리 경계 | ~200줄 |
| hallucination-dashboard.html | 혼동 행렬, 4개 메트릭, 빅테크 비교표, 탐지 방법 11유형 | ~200줄 |
기존 페이지에 링크만 추가 (신규 생성 없음)
나머지 16개 섹션은 전부 이미 존재하는 페이지(operations, maintenance, verify, control, actor-trust, gws, fed, finance, gfmk-dashboard, dpq-strategy, dpq-launch-plan)로 이동하므로 신규 페이지 2개만 생성하면 됨.
5. 재구성 후 전체 구조
5.1 strategy.html (5개 섹션, ~350줄)
- 1. 오늘의 전략센터 (할 일, 마감 통합)
- 2. 6대 전략 목표 (G1~G6)
- 3. 개인 업무 (이메일, 할 일, 일정, 연락처, 문서)
- 4. dPq AI 제품 현황 (요약만 + 링크)
- 5. 에이전트 협력 (7 에이전트 + AI 협업 통합)
5.2 index.html (6개 섹션, ~180줄)
- 1. 최근 사건 타임라인
- 2. 구독 안내 (5계층 가격)
- 3. 분야별 독립 앱 (8개 분야)
- 4. 개발 완료 이력 (17단계)
- 5. 핫이슈 → 역사기록 링크
- 6. 모든 앱에 적용하는 원칙
5.3 별도 페이지 링크 (strategy.html + index.html에서 링크)
| 링크 | 페이지 | 내용 |
| 은폐 메가 행위자 | finance.html | 8분야 은폐 패널 |
| 내부자 위험 | insider-risk.html 신규 | A+C 6신호 |
| 독립검증 | verify.html | 10축 4등급 |
| 환각 탐지 | hallucination-dashboard.html 신규 | 11유형 100% |
| FTPL 절약 | gfmk-dashboard.html | 29.6% 절약 |
| GFM-K 5단 | gfmk-dashboard.html | 20종목 8단계 |
| dPq 전략 | dpq-strategy.html | 삽입형 인프라 |
| 출시 계획 | dpq-launch-plan.html | 1·2·3차 |
| 사건저장소 | operations.html | 운행엔진 |
| 책임·판정 | control.html | Control Core |
| 유지관리 | maintenance.html | 기반팩 |
| 집단행위자 | actor-trust.html | 신뢰 판별 |
| GWS | gws.html | 파동 신호 |
| 연준 | fed.html | 통화정책 |
6. 작업 순서
| 순서 | 작업 | 예상 시간 |
| 1 | insider-risk.html 신규 생성 (strategy.html에서 이동) | 30분 |
| 2 | hallucination-dashboard.html 신규 생성 (strategy.html에서 이동) | 30분 |
| 3 | strategy.html에서 8개 섹션 제거 + 링크 추가 | 30분 |
| 4 | index.html에서 10개 섹션 제거 + 링크 추가 | 20분 |
| 5 | smoke.mjs / deployment.mjs 화면 수 업데이트 (+2) | 5분 |
| 6 | test/all.mjs 통과 확인 | 10분 |
| 7 | git commit | 5분 |
8. 프론트엔드·백엔드·DB 재구성
현재 문제: server.mjs 1개에 3,626줄, 63개 API가 한 파일에 있음
일반 포털은 routes/ + services/ + middleware/로 분리. DB 스키마는 schema.sql로 문서화. 현재는 전부 server.mjs 1개에 있고, 스키마 문서가 없음.
8.1 프론트엔드 (assets/) 재구성
| 현재 | 줄 수 | 문제 | 재구성 |
| domain-data.js | 2,996줄 | 8분야 데이터 + 분류 함수 + 167행위자가 한 파일 | 분야별로 분리: assets/data-finance.js, assets/data-defense.js 등 (8개) |
| groupality-core.js | 2,894줄 | 모든 화면의 렌더링 함수가 한 파일 | 화면별로 분리: assets/core-strategy.js, assets/core-verify.js 등 |
| strategy.js | 868줄 | 전략센터 전용 로직 | ✅ 이미 분리됨 — 유지 |
| app.css | 2,077줄 | 전체 스타일 | ✅ 유지 (분리 불필요) |
| 기타 JS (10개) | 1,103줄 | 화면별 JS | ✅ 이미 분리됨 — 유지 |
프론트엔드 분리 우선순위: 낮음
domain-data.js와 groupality-core.js가 크지만, 31개 HTML이 모두 두 파일을 로드하므로 분리하면 모든 HTML의 script 태그를 수정해야 함. 1차 재구성에서는 HTML 섹션 분리만 하고, 프론트엔드 JS 분리는 2차로 미룸.
8.2 백엔드 (server.mjs) 재구성 — 3,626줄 → 라우터 분리
| 현재 | 줄 수 | API 수 | 재구성 |
| server.mjs (전체) | 3,626줄 | 63개 | 5개 라우터로 분리 |
분리 계획
| 라우터 | 파일 | API 그룹 | 예상 줄 수 |
| core | routes/core.mjs | 정적 파일 서빙, 인증(JWT), 사용자 관리, 기본 CRUD | ~400줄 |
| events | routes/events.mjs | 사건 수집, 검증, 판정, 이력, 핫이슈 | ~600줄 |
| verify | routes/verify.mjs | 독립검증 10축, 표본감사, 보고서, GWS 신호 | ~500줄 |
| dpq | routes/dpq.mjs | dPq 출처증적, FTPL, 환각 탐지, gfmk-stats, 내부자 위험 | ~600줄 |
| admin | routes/admin.mjs | 배포, 유지관리, 백업, 감사 로그 | ~300줄 |
| server.mjs (메인) | server.mjs | HTTP 서버 생성, 라우터 로드, 정적 파일 | ~200줄 |
백엔드 분리 우선순위: 중간
server.mjs 3,626줄은 너무 크지만, Pure Node.js 22 (npm 의존성 0) 원칙을 유지하려면 라우터 분리는 ESM import로 가능. 1차에서는 HTML 섹션 분리 후, 2차로 server.mjs 라우터 분리.
8.3 데이터베이스 (DB) 스키마 문서화
| DB 파일 | 크기 | 테이블 | 스키마 문서 |
| groupality-v03.db | 11MB | events, source_items, dpq_reviews, audit_log, users, verifications 등 | 신규 필요 |
| gfm-k.db | 1.8MB | gfmk_observations, gfmk_labels, gfmk_states, gfmk_transitions, gfmk_directions, gfmk_market_eval, gfmk_signals, gfmk_sealed_thresholds, gfmk_audit (9개) | 신규 필요 |
스키마 문서화 계획
| 파일 | 내용 |
| db/gfmk-schema.sql | gfm-k.db 9 테이블 DDL + 인덱스 + D1-09 봉인 임계값 29개 |
| db/portal-schema.sql | groupality-v03.db 전체 테이블 DDL + 인덱스 |
| db/ERD.md | 테이블 관계도 (ERD) — 텍스트 기반 |
DB 스키마 문서화 우선순위: 높음
gfm-k.db는 gfmk-schema.mjs에 DDL이 있으므로 추출 가능. portal DB는 server.mjs에서 CREATE TABLE 문을 추출. 이것은 즉시 실행 가능.
8.4 gfmk-*.mjs 코어 모듈을 server.mjs API에 연결
| 코어 모듈 | 현재 | 재구성 |
| gfmk-pipeline.mjs | CLI 실행만 (node gfmk-pipeline.mjs) | /api/gfmk/run (POST) — 파이프라인 실행 API |
| gfmk-dashboard.html | 정적 HTML | /api/gfmk/stats (GET) — 이미 있음 (gfmk-stats) |
| gfmk-ftpl.mjs | 파이프라인 내부만 | /api/ftpl-stats (GET) — 이미 있음 |
| gfmk-dpq-gate.mjs | 파이프라인 내부만 | /api/dpq/gate (POST) — dPq 게이트 실행 API |
| gfmk-features.mjs | 파이프라인 내부만 | /api/gfmk/features/:code (GET) — 특징 계산 API |
| gfmk-state-model.mjs | 파이프라인 내부만 | /api/gfmk/state/:code (GET) — 상태 분류 API |
코어 모듈 API 연결 우선순위: 낮음
gfmk-*.mjs는 CLI로 실행되므로 당장 API가 필요하지 않음. B2B Embed(전산망 삽입) 시에 API 연결이 필요. 1차에서는 HTML 섹션 분리 후, 3차(B2B Embed 준비)에 API 연결.
9. 재구성 우선순위
| 우선순위 | 작업 | 시간 | 시기 |
| 1순위 (즉시) | HTML 섹션 분리 (strategy 13->5, index 16->6) + 신규 2개 | 2시간 | 지금 |
| 2순위 (즉시) | DB 스키마 문서화 (gfmk-schema.sql + portal-schema.sql) | 1시간 | 지금 |
| 3순위 (2차) | server.mjs 라우터 분리 (3,626줄 -> 5개 라우터) | 4시간 | 다음 세션 |
| 4순위 (2차) | assets/ JS 분리 (domain-data, groupality-core) | 3시간 | 다음 세션 |
| 5순위 (3차) | gfmk-*.mjs API 연결 (routes/dpq.mjs) | 2시간 | B2B Embed 준비 시 |
1차 재구성 (지금 실행): HTML 섹션 분리 + DB 스키마 문서화
HTML 섹션 분리(2시간) + DB 스키마 문서화(1시간) = 3시간. 이것만 해도 전략센터와 통합포털이 "일반 포털" 수준으로 깔끔해짐. server.mjs 라우터 분리와 assets JS 분리는 다음 세션에서.
10. GPT 자문 보강 — 일반 포털 수준 누락 11가지
GPT 평가: 7/10 — 테스트 시스템 동기화가 빠져 있어 실행 시 4개 테스트 실패
치명적 2개 + 중요 5개 + 보강 4개 = 11가지 누락. 이것을 보강하지 않으면 99/99 테스트 통과 불가.
10.1 치명적 누락 2개 (즉시 수정)
| # | 항목 | 설명 | 수정 파일 | 우선순위 |
| 1 | navItems 25->27 + 테스트 카운트 | domain-data.js의 navItems에 신규 2개 메류 추가, smoke.mjs 33->35, deployment.mjs 34->36 수정 | assets/domain-data.js, test/smoke.mjs, test/deployment.mjs | 치명 |
| 2 | 신규 HTML 템플릿 요건 | charset="utf-8", assets/domain-data.js + assets/groupality-core.js 연결, <meta name="description"> 필수 — smoke.mjs가 검증 | insider-risk.html, hallucination-dashboard.html | 치명 |
10.2 중요 누락 5개
| # | 항목 | 설명 | 수정 파일 | 우선순위 |
| 3 | apps 배열 14->16 | domain-data.js의 apps에 신규 2개 등록, deployment.mjs가 14개 검증 | assets/domain-data.js, test/deployment.mjs | 높음 |
| 4 | CHANGELOG.md + VERSION 갱신 | MINOR 버전 증가 (기능 추가) — AGENTS.md 규칙 준수 | CHANGELOG.md, VERSION | 필수 |
| 5 | DB 백업 선행 | 스키마 문서화 전 data/backups/에 백업 생성 — AGENTS.md 규칙 | data/backups/ | 필수 |
| 6 | API <-> 신규 페이지 매핑 | insider-risk: /api/insider-risk (기존 3개 엔드포인트), hallucination: 기존 환각 API | insider-risk.html, hallucination-dashboard.html | 중간 |
| 7 | 404.html 추가 | 일반 포털 기본 — 사용자 친화적 404 페이지, server.mjs가 파일 못 찾을 때 404 반환 | 404.html (신규), server.mjs | 낮음 |
10.3 보강 필요 4개
| # | 항목 | 설명 | 우선순위 |
| 8 | 모바일 반응형 검증 | 섹션 분리 후 모바일 레이아웃 확인 — app.css 2,077줄, 분리 후 레이아웃 변경 시 모바일 깨짐 가능 | 중간 |
| 9 | 라우터 분리 ESM import 패턴 | 공통 의존성(db, json, rateLimit) 주입 방식 — import 경로와 fileURLToPath 처리 명시 | 중간 |
| 10 | SSE 연결 유지 확인 | strategy.html과 index.html이 실시간 사건 타임라인을 위해 SSE 사용 — 분리 후 연결 유지 확인 | 낮음 |
| 11 | 모바일 빈 데이터/오류 상태 | AGENTS.md 규칙: "UI 변경은 모바일 화면과 키보드 접근성, 빈 데이터, 오류 상태를 함께 확인" | 중간 |
10.4 수정된 작업 순서 (GPT 자문 반영)
| 순서 | 작업 | 파일 | 우선순위 | 예상 시간 |
| 0 | DB 백업 선행 (AGENTS.md 규칙) | data/backups/ | 필수 | 5분 |
| 1 | insider-risk.html 신규 생성 (템플릿: charset, script, meta) | insider-risk.html | 치명 | 30분 |
| 2 | hallucination-dashboard.html 신규 생성 (동일 템플릿) | hallucination-dashboard.html | 치명 | 30분 |
| 3 | 404.html 추가 (일반 포털 기본) | 404.html, server.mjs | 높음 | 15분 |
| 4 | navItems 25->27 + apps 14->16 업데이트 | assets/domain-data.js | 치명 | 15분 |
| 5 | smoke.mjs 33->35, deployment.mjs 34->36 + navItems 27 검증 | test/smoke.mjs, test/deployment.mjs | 치명 | 10분 |
| 6 | strategy.html 8개 섹션 제거 + 링크 추가 | strategy.html | 높음 | 30분 |
| 7 | index.html 10개 섹션 제거 + 링크 추가 | index.html | 높음 | 20분 |
| 8 | DB 스키마 문서화 (gfmk-schema.sql + portal-schema.sql) | db/gfmk-schema.sql, db/portal-schema.sql | 높음 | 40분 |
| 9 | 모바일 반응형 검증 (분리 후 레이아웃) | strategy.html, index.html | 중간 | 15분 |
| 10 | SSE 연결 유지 확인 (사건 타임라인) | strategy.html, index.html | 낮음 | 10분 |
| 11 | CHANGELOG.md + VERSION 갱신 (MINOR) | CHANGELOG.md, VERSION | 필수 | 10분 |
| 12 | test/all.mjs 통과 확인 | test/all.mjs | 치명 | 10분 |
| 13 | git commit | - | - | 5분 |
총 예상 시간: 4시간 10분 (이전 2시간 -> GPT 자문 반영 후 4시간 10분)
10.5 수정된 화면 수 변화 (GPT 자문 반영)
| 항목 | 이전 | 이후 | 변화 |
| HTML 파일 수 | 34 | 37 (+insider-risk, +hallucination-dashboard, +404) | +3 |
| smoke.mjs userPages | 33 (login 제외) | 35 (login + 404 제외) | +2 |
| deployment.mjs pages | 34 | 37 | +3 |
| navItems | 25 | 27 | +2 |
| apps | 14 | 16 | +2 |
| strategy.html 섹션 | 13 | 5 | -8 |
| index.html 섹션 | 16 | 6 | -10 |
신규 HTML 템플릿 요건 (smoke.mjs 통과용)
신규 3개 HTML(insider-risk, hallucination-dashboard, 404)은 다음을 포함해야 함:
- <meta charset="utf-8"> — smoke.mjs가 검증
- <script src="assets/domain-data.js"> + <script src="assets/groupality-core.js"> — smoke.mjs가 검증
- <title> + <meta name="description"> — deployment.mjs가 검증
- <link rel="stylesheet" href="assets/app.css"> — 스타일 통일
- 모든 href/src 링크의 대상 파일 존재 — deployment.mjs가 검증
11. Claude 디자인·UX/UI 보강
Claude 분석 결과: 기존 디자인 자산이 풍부함 — 재구성 시 재사용
- app.css 2,077줄: warm/paper 테마(--ink, --paper, --teal, --amber) + 다크모드(@media prefers-color-scheme: dark) + 24개 미디어 쿼리(1100px, 760px)
- 빈 상태: .ops-empty 클래스 27곳에서 이미 사용 중 — 신규 2개에도 동일 패턴 적용
- 그리드: .grid-2/.grid-3/.grid-4 + 카드(border-radius 15px, box-shadow) — 신규도 동일
- guide.html이 '사이트 이해하기' 역할 — 온보딩 페이지로 활용 가능
- 404: server.mjs가 API는 JSON 404 반환하지만, 정적 파일은 404.html 없이 빈 응답
11.1 시각적 위계 (Visual Hierarchy)
| 페이지 | 1순위 (hero) | 2순위 | 3순위 |
| strategy.html | 오늘의 전략센터 — hero card, 큰 글씨, 오늘 할 일 3개 | 6대 전략 목표 — progress bar 6개 (G1~G6 진행률 색상) | 개인 업무 — 탭(이메일/할일/일정/문서), dPq 요약 카드, 에이전트 상태 |
| index.html | 사건 타임라인 — SSE live feed, 최근 5개 사건 | 구독 안내 — 5계층 가격 카드 (Free/Premium/Pro/Pro+/B2B) | 분야별 앱 8개 아이콘 그리드, 개발 이력, 핫이슈 링크, 원칙 |
11.2 사용자 여정 (User Journey)
| 단계 | 페이지 | 행동 | 유도 |
| 1. 첫 방문 | index.html | 사건 타임라인 확인 | '처음 오셨나요? 사이트 이해하기 ->' 배지 → guide.html |
| 2. 이해하기 | guide.html | 핵심 개념, 사용 방법, FAQ | '전략 보기 ->' 버튼 → strategy.html |
| 3. 전략 확인 | strategy.html | 6대 목표, dPq 제품 현황 | 'dPq 제품 자세히 ->' → dpq-strategy.html |
| 4. 구독 | dpq-launch-plan.html | 5계층 가격, 30일 무료 | '무료 30일 시작 ->' 버튼 |
온보딩 배지 (index.html에 추가)
index.html 첫 번째 섹션 상단에 '처음 오셨나요? 사이트 이해하기 ->' 배지 추가 — guide.html로 유도. 기존 guide.html이 온보딩 역할을 하므로 신규 페이지 불필요.
11.3 빈 데이터/오류 상태 (Empty/Error States)
| 상태 | 표시 | CSS 클래스 | 적용 페이지 |
| 로딩 중 | '데이터를 불러오는 중…' + 스피너 | .ops-empty (기존) | 전체 (이미 사용 중) |
| 데이터 없음 | '데이터가 없습니다' + 안내 문구 | .ops-empty .empty (추가) | 신규 2개 + 기존 |
| 오류 발생 | '오류가 발생했습니다' + 재시도 버튼 | .ops-empty .error (추가) | 신규 2개 + 기존 |
| 서버 미연결 | '서버에 연결할 수 없습니다' + 안내 | .ops-empty .offline (추가) | 전체 (SSE 연결 실패 시) |
11.4 404 페이지 디자인
| 요소 | 내용 |
| 제목 | '페이지를 찾을 수 없습니다' — 큰 글씨, 다크 테마 |
| 설명 | '요청하신 페이지가 존재하지 않거나 이동되었습니다' |
| 주요 링크 3개 | 통합포털(index.html) · 사이트 이해하기(guide.html) · 전략센터(strategy.html) |
| 검색 | '원하는 것을 찾아보세요' 입력창 (선택) |
| 스타일 | 다크 테마(#0d1117 배경), 카드(#161b22), 액센트(#2ee5b5), border-radius 15px |
11.5 구독 가격 카드 디자인 (index.html)
| 계층 | 카드 색상 | 배지 | 가격 표시 |
| Free | 회색 | 없음 | ₩0/월 |
| Premium | 청록(--teal) | 없음 | ₩99,000/월 |
| Pro | 파랑(--blue) | 없음 | ₩290,000/월 |
| Pro+ | 액센트(--accent) | '가장 인기' | ₩490,000/월 |
| B2B Embed | 보라(--purple) | '기업용' | ₩500만/월~ |
11.6 모바일 반응형 (760px 이하)
| 요소 | 데스크톱 | 모바일 (760px 이하) |
| 카드 그리드 | 2~4열 | 1열 세로 배열 |
| 메뉴 | 상단 바 + 드롭다운 | 햄버거 메뉴 |
| 표 | 전체 표시 | 가로 스크롤 (overflow-x: auto) |
| 가격 카드 | 5개 가로 | 1개 세로 (스크롤) |
| 사건 타임라인 | 실시간 SSE | 동일 (SSE 유지) |
| progress bar | 6개 가로 | 6개 세로 (또는 3x2) |
모바일 재검증 필요 (섹션 분리 후)
app.css에 24개 미디어 쿼리가 있지만, strategy.html에서 8개 섹션 제거 후 레이아웃이 변경되면 모바일에서 깨질 수 있음. 분리 후 760px에서 직접 확인 필요.
11.7 다크 테마 디자인 시스템
| 요소 | 라이트 모드 | 다크 모드 | 사용 |
| 배경 | --paper #f3f0e8 | --paper #0f1715 | strategy/index/신규: 다크 고정 |
| 카드 | --surface #fffdf8 | --surface #1a2422 | 동일 |
| 텍스트 | --ink #17201f | --ink #e0e6e4 | 동일 |
| 액센트 | --teal #167d73 | --teal #2ee5b5 | 배지, 링크, 강조 |
| 경고 | --red #b64b42 | --red #e46b61 | RISK, 오류 |
| 정보 | --amber #c78328 | --amber #f0883e | HOLD, 알림 |
11.8 디자인 보강 종합
| # | 보강 항목 | 적용 위치 | 우선순위 |
| 1 | 시각적 위계 (hero card → progress bar → 탭) | strategy.html, index.html | 높음 |
| 2 | 사용자 여정 4단계 (index → guide → strategy → 구독) | index.html 배지, guide.html 버튼 | 높음 |
| 3 | 온보딩 배지 ('처음 오셨나요?') | index.html 상단 | 중간 |
| 4 | 빈/오류 상태 4종 (로딩/없음/오류/서버미연결) | 신규 2개 + 기존 | 중간 |
| 5 | 404 페이지 (다크 테마 + 3 링크) | 404.html | 높음 |
| 6 | 구독 가격 카드 5개 ('가장 인기' = Pro+) | index.html | 높음 |
| 7 | 모바일 760px 재검증 (카드 세로, 햄버거, 표 스크롤) | strategy.html, index.html | 중간 |
| 8 | 다크 테마 고정 (신규 2개 + 404) | insider-risk, hallucination-dashboard, 404 | 높음 |
| 항목 | 이전 | 이후 | 변화 |
| HTML 파일 수 | 33 | 35 (+2 신규) | +2 |
| smoke.mjs userPages | 32 | 34 | +2 |
| deployment.mjs pages | 33 | 35 | +2 |
| strategy.html 섹션 | 13 | 5 | -8 |
| index.html 섹션 | 16 | 6 | -10 |
| strategy.html 줄 수 | 807 | ~350 | -457 |
| index.html 줄 수 | 353 | ~180 | -173 |
기대 효과
- 전략센터: "전략"만 보임 — 6대 목표 + 개인 업무 + 에이전트 + dPq 요약
- 통합포털: "안내"만 보임 — 사건 + 구독 + 분야별 앱 + 이력
- 각 현황판: 별도 페이지에서 깊이 있게 — 링크로 접근
- 방문자: "뭘 봐야 할지 모르겠다" → "전략은 전략센터, 안내는 포털"
본 기획서: 전략센터·통합포털 재구성 기획서 · 2026-08-30 · 심봉 자율결정
작업: 신규 2개 페이지(insider-risk, hallucination-dashboard) + strategy.html 8개 섹션 분리 + index.html 10개 섹션 분리 + 링크 추가
예상 시간: 약 2시간
테스트: 35화면, smoke.mjs 34, deployment.mjs 35