🎨 원본 디자인(Vintage Letterpress) HTML 버전: 라이브 가이드 열기 →
본 자료실 페이지는 텍스트 위주 마크다운 버전입니다. 각 단계의 이슈 본문/페르소나는 코드 블록을 그대로 복사해 Paperclip 콘솔에 붙여넣을 수 있습니다.
삼성전자 한 종목을 멀티에이전트로 분석하는 라이브
Stock Insight Lab · 라이브 가이드
회사를 만들고, 6명의 에이전트를 채용하고, 정성 자료를 모으고, 정량 시그널을 산출하고, 검증을 거쳐, 투자 리포트를 작성하고, 대시보드로 배포합니다.
각 단계의 입력 본문은 코드 블록을 그대로 복사해 사용합니다.
목차
- 시작하기 전 준비
- 회사 만들기
- CEO 에이전트 만들기
- 목표(Goal) 등록
- 세부 목표(Sub-Goal) 4개
- 프로젝트(Project) 4개
- 6명 조직 구성
- 디자이너에게 DESIGN.md 첨부
- 정성 데이터 수집 — 종목 리서처
- 정량 시그널 산출 — 퀀트
- 사실성 검증 — 팩트 체커
- 투자 리포트 작성
- 디자인 사양 명문화 — 디자이너
- 대시보드 만들고 배포 — 대시보드 엔지니어
- 결과 확인
- 부록 — 공통 규칙 / BrightData 호출
00. 시작하기 전 준비
아래 세 가지가 준비되어 있어야 합니다.
- Paperclip 콘솔 접속 — 회사를 만들고 에이전트를 조작할 수 있습니다.
- Hermes 어댑터 환경변수 — 컨테이너 안에
BRIGHTDATA_API_KEY,BRIGHTDATA_ZONE,SUPABASE_URL,SUPABASE_DB_URL,SUPABASE_SECRET_KEY,SUPABASE_PUBLISHABLE_KEY,VERCEL_API_TOKEN이 들어 있어야 합니다. - BrightData Web Unlocker 존 — 콘솔에서 zone 하나(예:
web_unlocker1)를 미리 만들어 둡니다.
📌 분석 대상 종목은 삼성전자(005930) 입니다. 다른 종목으로 진행할 때는 본문의
005930을 그 종목 코드로 치환하면 됩니다.
01. 회사 만들기
Paperclip 콘솔에서 새 회사를 만듭니다.
| 항목 | 값 |
|---|---|
| 위치 | 좌측 nav → + Create company |
| 회사 이름 | Stock Insight Lab |
회사 설명 (Description)
단일 상장 종목의 정량·정성 데이터를 멀티에이전트로 분석해 투자 제언 리포트를 생성하는 데모용 무대.
1차 분석 대상: 삼성전자(005930).
반복성 검증 2차: SK하이닉스(000660).
디자인 시스템: Vintage Letterpress.
만들고 나면 우상단 회사 선택기에서 Stock Insight Lab 으로 전환합니다.
02. CEO 에이전트 만들기
먼저 CEO 한 명을 만듭니다. 나머지 6명은 CEO 가 채용합니다.
| 항목 | 값 |
|---|---|
| 위치 | 좌측 nav → Agents → + New Agent |
| 이름 | CEO |
| 역할 (role) | ceo |
| 직책 (title) | Chief Executive Officer |
| 어댑터 | Hermes Agent (hermes_local) |
| 모델 | 비워둠 |
| Timeout | 900 |
| Effort | medium |
| persistSession | true |
CEO 페르소나 (Capabilities)
# 정체성
당신은 Stock Insight Lab 의 CEO 입니다.
단일 상장 종목의 정량·정성 데이터를 멀티에이전트로 분석해
투자 제언 리포트를 생성하는 조직을 총괄합니다.
기본 응답 언어는 한국어, 영문 자료·표기는 자연스럽게 병기합니다.
# 미션
- 분석 대상 1차: 삼성전자(005930)
- 산출물: 정량 시그널 + 정성 인사이트 + 검증된 사실 + 시각화 대시보드 + 종합 투자 제언 리포트
- 디자인: Vintage Letterpress (paper + ink + oxblood + forest, 슬랩 세리프) 일관 적용
# 책임
1. 전략 결정 — Goal / Sub-Goal / Project 우선순위 결정
2. 에이전트 오케스트레이션 — 이슈가 들어오면 적절한 전문가에게 위임
3. 산출물 리뷰 — 각 에이전트 결과 검토와 후속 분배
4. 보고·요약 — 결정 사유 + 다음 행동 + 리스크 함께
# 운영 원칙
- "왜"와 "다음 행동"을 항상 함께 적습니다.
- 출처·근거를 표기하고 추측은 "추측"이라 명시합니다.
- 본인은 의사결정·위임·리뷰만 합니다. 코드와 분석은 전문가에게 위임합니다.
# 채용 권한
- 사용자가 Goal 이나 Sub-Goal 을 전달하면 부족한 전문가를 직접 채용합니다.
- 채용 API: POST /api/companies/{cid}/agents
- 필수 필드: name, role, title, adapterType='hermes_local',
adapterConfig={timeoutSec:900, effort:"medium", persistSession:true},
capabilities(한국어 시스템 프롬프트)
- adapterConfig.model 은 비워둡니다.
- 사용자가 제공한 이름과 분류 표를 그대로 사용합니다.
- 페르소나는 한국어로 작성합니다.
# 응답 톤
- 간결, 단호, 사실 기반.
- 모르는 영역은 누구에게 위임할지 명시합니다.
03. 목표(Goal) 등록
회사 전체의 최상위 목표를 1개 등록합니다.
| 항목 | 값 |
|---|---|
| 위치 | 좌측 nav → Goals → + Create goal |
| 제목 | 단일 종목 심층 분석 + 투자 제언 리포트 시스템 |
| Level | team |
| Status | planned |
목표 설명 (Description)
상장 종목 1개를 정량·정성 데이터로 통합 분석해 투자 제언 리포트를 생성하는 멀티에이전트 시스템을 구축합니다.
1차 대상: 삼성전자(005930).
반복성 검증 2차: SK하이닉스(000660).
핵심 흐름:
- 정성 데이터(뉴스·공시·정책·산업 자료) 수집 — BrightData 활용
- 정량 데이터(주가·거래량·재무 지표) 분석 — Supabase krx_daily 활용
- 사실성 검증 — 인용·수치·날짜 교차 확인
- 시각화 대시보드 — Next.js + shadcn/ui + Tremor + ECharts, Vercel 배포
- 종합 투자 제언 리포트 — 디자인은 Vintage Letterpress 일관 적용
산출물은 다른 종목에도 그대로 재사용 가능한 템플릿으로 구성합니다.
04. 세부 목표(Sub-Goal) 4개
방금 만든 목표 안에서 Add sub-goal 을 4번 눌러 차례로 등록합니다.
4-1. 정성 데이터 수집·정리 (뉴스·공시·산업)
삼성전자(1차) 관련 한국·영문 뉴스, 공시, 증권사 리포트, 정책, 산업 동향 자료를 BrightData web search 와 scrape 로 수집하고 출처·작성일자·핵심 인용을 구조화해 정리합니다.
산출물은 Supabase news_articles 테이블과 일간·주간 정성 인사이트 노트입니다.
4-2. 정량 데이터 분석 (주가·거래량·재무)
삼성전자(1차) 의 주가, 거래량, 수급, 변동성, 섹터 상대성, 재무 지표를 분석합니다.
기반 데이터: 이미 적재된 Supabase krx_daily 테이블 (KOSPI/KOSDAQ 30영업일).
필요 시 재무·수급 데이터를 추가로 수집합니다.
산출물은 정량 시그널 노트와 대시보드용 쿼리·뷰입니다.
4-3. 종합 인사이트 + 투자 제언 리포트
정량과 정성 데이터를 통합해 투자 관점의 핵심 시그널을 도출하고, 사실성 검증을 거친 후 종합 투자 제언 리포트를 생성합니다.
구조: 한 줄 결론 → 핵심 시그널 3개 → 리스크 3개 → 단기·중기 권고 → 데이터 근거.
디자인: Vintage Letterpress 를 일관 적용합니다.
4-4. 투자 의사결정 지원 시각화 환경
정량 시그널, 정성 인사이트, 사실성 검증, 종합 투자 제언 리포트 결과를 한 페이지에 통합해 사용자가 의사결정에 필요한 정보를 한눈에 소비할 수 있는 시각화 환경을 갖춥니다.
UX 원칙: 종목 요약 → 정량 시그널 → 정성 인사이트 타임라인 → 사실성 배지 → 종합 권고 → 리스크.
디자인은 Vintage Letterpress 를 일관 적용합니다.
구현 기술 스택과 배포 방법은 하위 프로젝트에서 정의합니다.
05. 프로젝트(Project) 4개
각 세부 목표 안에서 + Add project 를 눌러 1개씩 등록합니다. Repo URL 과 Local folder 칸은 4-4 만 채우고 나머지는 비워둡니다.
5-1. 삼성전자 정성 데이터 수집 시스템 (sub-goal 4-1)
삼성전자(005930) 관련 한국·영문 뉴스·공시·증권사 리포트를 BrightData scrape 와 search 로 수집하고 Supabase news_articles 테이블에 적재합니다.
수집 우선순위:
1) 한국어 매체 (한경·매경·연합인포맥스·전자신문)
2) 영문 IR·공시 (Bloomberg·Reuters·SEC EDGAR)
3) 증권사 리서치 요약
각 기사에 ticker(005930), 산업 태그, sentiment 를 함께 부여합니다.
5-2. 삼성전자 정량 시그널 분석 (sub-goal 4-2)
Supabase krx_daily 테이블에서 ticker='005930' 데이터를 SELECT 해 정량 시그널을 산출합니다.
산출물: 5/20일 이동평균, 거래량 변화율, 섹터 상대성, 변동성 지표를 담은 분석 노트와 대시보드용 view·쿼리. 결과는 이슈 코멘트로 보고합니다.
5-3. 투자 제언 리포트 빌더 (sub-goal 4-3)
정량(5-2) 과 정성(5-1) 결과를 통합해 사실성 검증을 거친 후 종합 투자 제언 리포트를 마크다운으로 작성합니다.
구조: 한 줄 결론 → 핵심 시그널 3개 → 리스크 3개 → 단기·중기 권고 → 데이터 근거.
모든 인용은 출처 URL 과 작성일자를 함께 표기합니다.
대시보드(5-4) 본문 영역에 그대로 포함됩니다.
5-4. Stock Insight Dashboard — Next.js + Vercel (sub-goal 4-4)
| 항목 | 값 |
|---|---|
| Repo URL | [email protected]:dandacompany/stock-insight-dashboard.git |
| Local folder | 비워둠 |
정량·정성·리포트 결과를 한 페이지 대시보드로 시각화합니다.
스택: Next.js 15 (App Router) + TypeScript + Tailwind + shadcn/ui + Tremor + ECharts + @supabase/supabase-js. Vercel 배포 (slug stock-insight-dashboard 시도).
디자인: Vintage Letterpress 시스템 (paper + ink + oxblood + forest, 슬랩 세리프, asterism dividers) 을 일관 적용합니다. 디자이너 에이전트의 instructions-bundle 에 첨부된 DESIGN.md 를 모든 컴포넌트 사양의 기준으로 사용합니다.
데이터: krx_daily (ticker='005930') + news_articles + 리포트 마크다운.
06. 6명 조직 구성
CEO 에게 단 하나의 이슈를 줍니다. 이 이슈 하나로 6명을 채용하고 보고 라인까지 설정합니다.
| 항목 | 값 |
|---|---|
| 이슈 제목 | 조직 구성 — 6명 채용과 보고 라인을 한 번에 |
| 담당자 | CEO |
이슈 본문
# 임무
Stock Insight Lab 의 6명을 아래 표 그대로 채용한 뒤,
같은 작업 안에서 각 에이전트의 보고 라인(reportsTo) 까지 설정합니다.
# 필수 규칙
- 이름·역할·직책은 한국어 표 그대로 유지합니다.
- 6명만 채용합니다. 더하거나 빼지 않습니다.
- 각 에이전트의 페르소나(capabilities) 는 본문을 거의 그대로 옮깁니다.
- adapterType 은 hermes_local 입니다.
- adapterConfig 는 {timeoutSec:900, effort:"medium", persistSession:true} 입니다.
- model 칸은 비워둡니다.
- 채용 직후 같은 작업 안에서 reportsTo 를 PATCH 로 설정합니다.
- CEO 본인은 reportsTo 를 건드리지 않습니다.
# 명단과 조직도
| # | 이름 | 역할 | 직책 | 보고 대상 |
|---|---|---|---|---|
| 1 | 종목 리서처 | researcher | 단일 종목 정성 데이터 리서처 | 리포트 작성자 |
| 2 | 퀀트 | researcher | 정량 시그널 애널리스트 | 리포트 작성자 |
| 3 | 팩트 체커 | qa | 인용·수치·날짜 교차 검증자 | 리포트 작성자 |
| 4 | 리포트 작성자 | researcher | 투자 제언 리포트 라이터 | CEO |
| 5 | 대시보드 엔지니어 | engineer | Next.js + Vercel 대시보드 엔지니어 | CEO |
| 6 | 디자이너 | designer | Vintage Letterpress 디자인 가드 | 대시보드 엔지니어 |
# 페르소나 본문
[6명의 페르소나 본문을 그대로 첨부]
# 결과 보고
작업이 끝나면 코멘트로 표를 남깁니다.
첫 줄에 사용한 도구를 적습니다.
| 에이전트 | id | 보고 대상 | 확인 |
|---|---|---|---|
# 공통 규칙
[부록 의 공통 규칙 블록을 그대로 첨부]
# 마무리
7명(CEO + 6) 이 모두 보이고 보고 라인이 표와 같으면 done 으로 바꿉니다.
07. 디자이너에게 DESIGN.md 첨부
디자이너 에이전트가 디자인 시스템 원본을 항상 참고하도록 두 가지 방법을 함께 사용합니다.
방법 A. 디자이너 페르소나(capabilities) 끝에 두 줄 추가
# 참조 자료
- Vintage Letterpress DESIGN.md 전체 사양 (web view):
https://gist.github.com/dandacompany/03914235c889b1327e38c15de43956c7
- 동일 파일 raw markdown (도구 fetch 용):
https://gist.githubusercontent.com/dandacompany/03914235c889b1327e38c15de43956c7/raw/DESIGN.md
위 두 URL 은 단일 진실 소스입니다. 색 팔레트, 타이포, 컴포넌트 사양을 인용할 때 raw URL 을 BrightData scrape 로 가져와 사용합니다.
대시보드 엔지니어 페르소나 끝에도 같은 두 줄을 붙입니다. 두 에이전트가 같은 자료를 참고하도록 만드는 단순한 방법입니다.
방법 B. 디자이너의 Instructions 에 DESIGN.md 파일을 올림 (선택)
콘솔의 Instructions 탭에서 진입점이 보이지 않으면 방법 A 만으로도 충분합니다.
08. 정성 데이터 수집 — 종목 리서처
최근 14일 삼성전자 관련 한국·영문 뉴스 10건을 구조화해 Supabase 에 적재합니다.
| 항목 | 값 |
|---|---|
| 이슈 제목 | 삼성전자(005930) 최근 14일 정성 데이터 10건 수집·구조화 |
| 담당자 | 종목 리서처 |
| 연결 | Sub-Goal 4-1 / Project 5-1 |
이슈 본문
# 임무
삼성전자(ticker '005930') 의 최근 14일 정성 데이터 10건을 수집하고 구조화합니다. Supabase news_articles 테이블에 적재합니다.
# 도구
- BrightData search 스킬 — 한국·영문 키워드 검색
- BrightData scrape 스킬 — 검색 결과 URL 의 본문 일부 확보 (작성일자·인용 검증용)
- Supabase 적재 — 환경변수 SUPABASE_DB_URL 사용
# 수집 균형 (10건)
- 한국 매체 7건 (한경·매경·연합인포맥스·전자신문·조선비즈·머니투데이 등)
- 영문 매체 2건 (Bloomberg·Reuters·SEC·Nikkei Asia 등)
- 증권사 리포트 1건 (요약본)
# 각 기사 구조 (news_articles 테이블)
- source: 매체명
- url: 실제 접근 가능한 URL (UNIQUE)
- title: 원문 제목
- published_at: 작성일시
- content: 본문 일부 또는 요약 (3~5문장)
- tickers: {"005930"}
- industries: {"반도체","AI","HBM"} 등
- sentiment: -1.0 ~ +1.0
- collected_by: "종목 리서처"
# 절차
1. BrightData search 로 키워드 검색 (5~7개 쿼리)
2. 14일 이내 + 신뢰도 있는 매체로 10건 선정
3. 각 URL 에 BrightData scrape 로 본문 일부 확보 → published_at 정확히 추출
4. Supabase 적재 (INSERT ... ON CONFLICT (url) DO NOTHING)
5. 적재 결과를 이슈 코멘트로 보고
# 출력 형식 (이슈 코멘트)
코멘트 첫 줄: 사용 도구: BrightData search/scrape
| # | source | title | published_at | tickers | industries | sentiment | url |
|---|---|---|---|---|---|---|---|
마지막 줄: SELECT count(*) FROM news_articles WHERE '005930' = ANY(tickers); 실행 결과
# 공통 규칙
[부록 의 공통 규칙 블록을 그대로 첨부]
# 마무리
10건 적재 + 코멘트 표 게시 후 status 를 done 으로.
09. 정량 시그널 산출 — 퀀트
krx_daily 의 30영업일 데이터로 시그널 6개를 산출합니다.
| 항목 | 값 |
|---|---|
| 이슈 제목 | 삼성전자(005930) 30영업일 정량 시그널 산출 |
| 담당자 | 퀀트 |
| 연결 | Sub-Goal 4-2 / Project 5-2 |
이슈 본문
# 임무
Supabase krx_daily 테이블에서 ticker='005930' 30영업일 데이터를 분석해 정량 시그널을 산출합니다.
# 도구
- 환경변수 SUPABASE_DB_URL 사용
- psql / psycopg2 / pandas / node pg — 무엇이든 OK
- 기존 테이블 그대로 SELECT 만 합니다. DROP, ALTER 금지.
# krx_daily 스키마
- ticker text NOT NULL (컬럼명 ticker, symbol 아님)
- market text (KOSPI / KOSDAQ)
- trade_date date NOT NULL
- open / high / low / close numeric
- volume bigint
- source text default 'naver_fchart'
- loaded_at timestamptz
- PK (ticker, trade_date)
# 산출 시그널 (6개)
1. 5일·20일 단순 이동평균 (SMA5, SMA20): close 기준
2. 단기 모멘텀: (close[t0] / close[t-5] - 1) × 100 (%)
3. 거래량 z-score: 최근 5일 평균 거래량 vs 30일 평균 거래량 표준점수
4. 변동성 σ: 최근 20일 일간 수익률 표준편차 (%)
5. KOSPI 평균 대비 상대 강도: 30일 누적 수익률 - KOSPI 평균 30일 누적 수익률
# 출력 형식 (이슈 코멘트)
코멘트 첫 줄: 사용 도구: 사용한 클라이언트명 명시
| 시그널 | 값 | 한 줄 해석 |
|---|---|---|
| SMA5 | ... | ... |
| SMA20 | ... | ... |
| 단기 모멘텀 (5D) | ... | ... |
| 거래량 z-score | ... | ... |
| 변동성 σ (20D) | ... | ... |
| KOSPI 상대 강도 (30D) | ... | ... |
마지막 줄: 데이터 기간 (예: 데이터: 2026-04-03 ~ 2026-05-18)
숫자는 소수 셋째 자리까지. NA 는 명시.
# 공통 규칙
[부록 의 공통 규칙 블록을 그대로 첨부]
# 마무리
표 게시 + status done.
10. 사실성 검증 — 팩트 체커
정성 10건과 정량 시그널을 교차 검증합니다.
| 항목 | 값 |
|---|---|
| 이슈 제목 | 팩트 체크 — 정성 10건 + 정량 시그널 교차 검증 |
| 담당자 | 팩트 체커 |
| 연결 | Sub-Goal 4-3 / Project 5-3 |
이슈 본문
# 임무
두 산출물의 사실성을 BrightData Web Unlocker 와 Supabase 로 교차 검증합니다.
1. 정성 데이터 10건: news_articles 의 ticker='005930' 14일 이내 10건
2. 정량 시그널 6개: 퀀트가 보고한 시그널
# 도구 (필수)
환경변수:
- BRIGHTDATA_API_KEY
- BRIGHTDATA_ZONE (= web_unlocker1)
호출 패턴: 부록 의 BrightData 호출 패턴을 그대로 사용합니다.
# 절차
## Part A. 정성 10건 검증
각 URL 마다:
1. BrightData /request 호출 → HTTP 200 + HTML 본문 확보
2. news_articles 의 title 이 원문 제목과 일치/유사한지 확인
3. published_at 이 원문 작성일자와 ±1일 이내인지 확인
4. 본문에 '005930' 또는 '삼성전자' 또는 'Samsung Electronics' 등장 확인
## Part B. 정량 시그널 재계산
SUPABASE_DB_URL 로 krx_daily 직접 SELECT 후 동일 정의로 재계산.
SMA5 / SMA20 / 5D 모멘텀 / 거래량 z-score / 변동성 σ.
퀀트 보고값 vs 재계산값 ±2% 오차면 OK.
# 출력 형식 (이슈 코멘트)
코멘트 첫 줄: 사용 도구: BrightData Web Unlocker (zone=web_unlocker1) + SUPABASE
### Part A.
| # | source | scrape HTTP | title 일치 | date ±1d | ticker mention | OK |
|---|---|---|---|---|---|---|
### Part B.
| 시그널 | 퀀트 보고 | 본인 재계산 | 오차% | OK |
|---|---|---|---|---|
### 종합
정정 필요 항목 수, 신뢰도(0~1), 한 줄 코멘트.
# 공통 규칙
[부록 의 공통 규칙 블록을 그대로 첨부]
# 마무리
표 2개 + 종합 게시 + status done.
11. 투자 리포트 작성
정량·정성·검증 결과를 모아 마크다운 투자 제언 리포트를 작성합니다.
| 항목 | 값 |
|---|---|
| 이슈 제목 | 삼성전자(005930) 단기·중기 투자 제언 리포트 작성 |
| 담당자 | 리포트 작성자 |
| 연결 | Sub-Goal 4-3 / Project 5-3 |
이슈 본문
# 임무
정량 시그널, 정성 데이터, 사실성 검증 결과를 모아
삼성전자(005930) 의 단기·중기 투자 제언 리포트를 마크다운으로 작성합니다.
# 입력 자료
- 정성: news_articles 의 '005930' = ANY(tickers) 14일 이내 10건
- 정량: 퀀트 이슈 코멘트의 시그널 6개
- 검증: 팩트 체커 이슈 코멘트 (신뢰도, 정정 건수)
# 리포트 구조 (한국어, 마크다운)
1. 한 줄 결론 (단기 의견 + 신뢰도)
2. 핵심 시그널 3개 (각 1~2문장 + 근거)
3. 리스크 3개 (각 1~2문장)
4. 시간 지평별 권고
- 단기 (1~4주): 관찰 / 매집 / 관망 / 매도 중 하나
- 중기 (1~3개월): 관찰 / 매집 / 관망 / 매도 중 하나
5. 데이터 근거
- 정성 인용 (출처 URL 5개 이내)
- 정량 표
# 작성 규칙
- "추천" 은 신중하게 씁니다. 근거가 약하면 "관찰" 또는 "주목" 으로 표현합니다.
- 본인 의견과 인용을 명확히 구분합니다.
- 코멘트 첫 줄: 사용 도구: SUPABASE + 다른 이슈 코멘트 인용
# 공통 규칙
[부록 의 공통 규칙 블록을 그대로 첨부]
# 마무리
리포트 본문을 코멘트로 올리고 status 를 done 으로.
12. 디자인 사양 명문화 — 디자이너
대시보드 엔지니어가 그대로 따라 만들 수 있도록 영역별 사양을 코멘트로 정리합니다. 코드는 작성하지 않습니다.
| 항목 | 값 |
|---|---|
| 이슈 제목 | Vintage Letterpress 디자인 사양 — 8개 영역 명세 |
| 담당자 | 디자이너 |
| 연결 | Sub-Goal 4-4 / Project 5-4 |
이슈 본문
# 임무
대시보드 페이지의 8개 영역에 대해 색·타이포·여백·금지 효과를
영역별로 정확히 적어 코멘트로 올립니다.
# 단일 진실 소스
DESIGN.md (Vintage Letterpress).
- Web view:
https://gist.github.com/dandacompany/03914235c889b1327e38c15de43956c7
- Raw markdown:
https://gist.githubusercontent.com/dandacompany/03914235c889b1327e38c15de43956c7/raw/DESIGN.md
# 8개 영역
1. 헤더 — 종목명, 티커, 기준일자, 시장 라벨
2. 종목 요약 카드 — 가격, 등락률, 거래량
3. 정량 시그널 그리드 — 시그널 6개
4. 거래량 트렌드 — 라인 차트
5. 정성 인사이트 타임라인 — 뉴스 10건
6. 사실성 배지 — 신뢰도 점수
7. 종합 권고 본문 — 리포트 결론
8. 리스크 박스 — 핵심 리스크 3개
# 각 영역에 적을 항목
- 사용할 색 토큰 (DESIGN.md 의 이름 그대로)
- 폰트, 글자 크기, 굵기, 줄 간격
- 안쪽 여백(padding), 모서리 둥글기(radius), 행간
- 금지 효과: 글래스모피즘, 그라데이션 블롭, 네온, 흐림 그림자
# 작성 규칙
- 코드는 작성하지 않습니다. 사양만 남깁니다.
- 색 이름은 DESIGN.md 의 명칭을 그대로 인용합니다.
- 코멘트 첫 줄: 사용 자료: DESIGN.md (Vintage Letterpress)
# 공통 규칙
[부록 의 공통 규칙 블록을 그대로 첨부]
# 마무리
8개 영역 모두 사양이 들어가면 status 를 done 으로.
이 코멘트만 보고 대시보드 엔지니어가 화면을 만들 수 있어야 합니다.
13. 대시보드 만들고 배포 — 대시보드 엔지니어
디자이너 사양과 그동안의 데이터를 가지고 Next.js 단일 페이지를 만들고 Vercel 에 배포합니다.
| 항목 | 값 |
|---|---|
| 이슈 제목 | Stock Insight Dashboard 구현과 Vercel 배포 |
| 담당자 | 대시보드 엔지니어 |
| 연결 | Sub-Goal 4-4 / Project 5-4 |
이슈 본문
# 임무
디자이너가 정의한 8개 영역, 리포트 작성자의 결론, 그리고
Supabase 의 데이터를 사용해 한 페이지짜리 대시보드를 만들고
Vercel 에 배포합니다.
# 사용 스택
- Next.js 15 (App Router) + TypeScript
- Tailwind CSS + shadcn/ui
- Tremor (Metric, BarList)
- ECharts (echarts-for-react)
- @supabase/supabase-js (Server Component 에서만)
# 환경변수
이미 컨테이너 .env 에 들어 있습니다.
- SUPABASE_URL, SUPABASE_PUBLISHABLE_KEY, SUPABASE_SECRET_KEY
- VERCEL_API_TOKEN
코멘트에 평문 노출 금지. 마스킹.
# 데이터
- krx_daily 의 ticker='005930'
- news_articles 의 '005930' = ANY(tickers)
기존 테이블 그대로 SELECT 만 합니다.
# 페이지 구성
디자이너 사양 8개 영역을 그대로 따라갑니다.
# Git 와 Vercel
repo 는 이미 준비되어 있습니다.
[email protected]:dandacompany/stock-insight-dashboard.git
컨테이너에서 SSH 로 push 가 가능합니다.
배포 명령 순서:
npx vercel link --token $VERCEL_API_TOKEN
npx vercel env add SUPABASE_URL production --token $VERCEL_API_TOKEN
npx vercel env add SUPABASE_SECRET_KEY production --token $VERCEL_API_TOKEN
npx vercel deploy --prod --token $VERCEL_API_TOKEN --name stock-insight-dashboard
# 결과 보고 (코멘트)
코멘트 첫 줄: 사용 도구: npx vercel + Next.js 15 + Tremor + ECharts + Supabase
| 항목 | 값 |
|---|---|
| 브랜치 | main |
| 마지막 커밋 | <sha> |
| 핵심 파일 | app/page.tsx, lib/supabase.ts, components/... |
| 배포 URL | https://stock-insight-dashboard-<id>.vercel.app/ |
# 작성 규칙
- 디자인은 디자이너 사양만 따릅니다. 자체 결정 금지.
- 키는 평문 노출 금지.
# 공통 규칙
[부록 의 공통 규칙 블록을 그대로 첨부]
# 마무리
배포 URL 에 HTTP 200 으로 접속되면 done.
14. 결과 확인
배포 URL 을 직접 열어 다음을 확인합니다.
- 페이지가 정상으로 열린다 (HTTP 200).
- 8개 영역이 모두 보인다 — 헤더, 종목 요약, 정량 그리드, 거래량 트렌드, 정성 타임라인, 사실성 배지, 종합 권고, 리스크 박스.
- 정량 시그널 값이 퀀트 코멘트와 일치한다.
- 정성 타임라인의 뉴스가 종목 리서처 10건과 일치한다.
- 종합 권고의 결론이 리포트 작성자의 결론과 일치한다.
- 사실성 배지에 신뢰도 숫자가 보인다.
- 색은 paper, ink, oxblood, forest 위주.
- 금지 효과(글래스모피즘, 그라데이션 블롭, 네온, 흐림 그림자) 없다.
부록 — 공통 규칙 / BrightData 호출
공통 규칙 블록 — 모든 이슈 본문 끝에 그대로 붙임
# 공통 규칙
- 결과는 반드시 paperclip API 의 코멘트로 올립니다.
호출: POST /api/issues/<이슈 id>/comments
본문: {"body": "<마크다운>"}
파일에만 저장하고 끝내지 않습니다.
- 코멘트 첫 줄에 사용한 도구 이름을 적습니다.
- DB 의 테이블 구조는 바꾸지 않습니다.
SELECT 와 INSERT 만 사용합니다.
필요한 테이블이 없으면 새로 만들지 말고 작업 디렉터리에 임시 파일로 대신합니다.
- 키 값은 절대로 코멘트에 평문으로 적지 않습니다.
필요하면 첫 8자만 보이고 나머지는 *** 로 가립니다.
- 명단·보고 라인·테이블 스키마·디자인 토큰을 임의로 바꾸지 않습니다.
변경이 필요하면 코멘트로 제안만 합니다.
BrightData 호출 패턴 (Bash)
curl https://api.brightdata.com/request \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $BRIGHTDATA_API_KEY" \
-d '{
"zone": "'"$BRIGHTDATA_ZONE"'",
"url": "<원문 URL>",
"format": "raw"
}'
- 응답 본문이 HTML 원문. HTTP 200 + size > 0 이면 성공.
- format 은 raw 외에 json, markdown 도 가능.
- 호출이 실패하면 그 항목은 "scrape 실패" 라 적습니다. 다른 방법으로 우회하지 않습니다.
Stock Insight Lab · 2026-05-18
관련 자료:
