Stock Insight Lab · 라이브 가이드

삼성전자 한 종목을 멀티에이전트로 분석하는 라이브

회사를 만들고, 6명의 에이전트를 채용하고, 정성 자료를 모으고, 정량 시그널을 산출하고, 검증을 거쳐, 투자 리포트를 작성하고, 대시보드로 배포합니다.

각 단계의 입력 본문은 코드 블록 우상단의 복사 버튼으로 한 번에 가져갈 수 있습니다.

00시작하기 전 준비

아래 세 가지가 준비되어 있어야 합니다.

분석 대상 종목은 삼성전자(005930) 입니다. 다른 종목으로 진행할 때는 본문의 005930 을 그 종목 코드로 치환하면 됩니다.

01회사 만들기

Paperclip 콘솔에서 새 회사를 만듭니다.

위치좌측 nav → + Create company
회사 이름Stock Insight Lab
회사 설명 (Description)
단일 상장 종목의 정량·정성 데이터를 멀티에이전트로 분석해 투자 제언 리포트를 생성하는 데모용 무대.

1차 분석 대상: 삼성전자(005930).
반복성 검증 2차: SK하이닉스(000660).

디자인 시스템: Vintage Letterpress.

만들고 나면 우상단 회사 선택기에서 Stock Insight Lab 으로 전환합니다.

02CEO 에이전트 만들기

먼저 CEO 한 명을 만듭니다. 나머지 6명은 CEO 가 채용합니다.

위치좌측 nav → Agents → + New Agent
이름CEO
역할 (role)ceo
직책 (title)Chief Executive Officer
어댑터Hermes Agent (hermes_local)
모델비워둠
Timeout900
Effortmedium
persistSessiontrue
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
제목단일 종목 심층 분석 + 투자 제언 리포트 시스템
Levelteam
Statusplanned
목표 설명 (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. 정성 데이터 수집·정리 (뉴스·공시·산업)

Description
삼성전자(1차) 관련 한국·영문 뉴스, 공시, 증권사 리포트, 정책, 산업 동향 자료를 BrightData web search 와 scrape 로 수집하고 출처·작성일자·핵심 인용을 구조화해 정리합니다.

산출물은 Supabase news_articles 테이블과 일간·주간 정성 인사이트 노트입니다.

4-2. 정량 데이터 분석 (주가·거래량·재무)

Description
삼성전자(1차) 의 주가, 거래량, 수급, 변동성, 섹터 상대성, 재무 지표를 분석합니다.

기반 데이터: 이미 적재된 Supabase krx_daily 테이블 (KOSPI/KOSDAQ 30영업일).
필요 시 재무·수급 데이터를 추가로 수집합니다.

산출물은 정량 시그널 노트와 대시보드용 쿼리·뷰입니다.

4-3. 종합 인사이트 + 투자 제언 리포트

Description
정량과 정성 데이터를 통합해 투자 관점의 핵심 시그널을 도출하고, 사실성 검증을 거친 후 종합 투자 제언 리포트를 생성합니다.

구조: 한 줄 결론 → 핵심 시그널 3개 → 리스크 3개 → 단기·중기 권고 → 데이터 근거.

디자인: Vintage Letterpress 를 일관 적용합니다.

4-4. 투자 의사결정 지원 시각화 환경

Description
정량 시그널, 정성 인사이트, 사실성 검증, 종합 투자 제언 리포트 결과를 한 페이지에 통합해 사용자가 의사결정에 필요한 정보를 한눈에 소비할 수 있는 시각화 환경을 갖춥니다.

UX 원칙: 종목 요약 → 정량 시그널 → 정성 인사이트 타임라인 → 사실성 배지 → 종합 권고 → 리스크.
디자인은 Vintage Letterpress 를 일관 적용합니다.

구현 기술 스택과 배포 방법은 하위 프로젝트에서 정의합니다.

05프로젝트(Project) 4개

각 세부 목표 안에서 + Add project 를 눌러 1개씩 등록합니다. Repo URL 과 Local folder 칸은 4-4 만 채우고 나머지는 비워둡니다.

5-1. 삼성전자 정성 데이터 수집 시스템 (sub-goal 4-1)

Description
삼성전자(005930) 관련 한국·영문 뉴스·공시·증권사 리포트를 BrightData scrape 와 search 로 수집하고 Supabase news_articles 테이블에 적재합니다.

수집 우선순위:
1) 한국어 매체 (한경·매경·연합인포맥스·전자신문)
2) 영문 IR·공시 (Bloomberg·Reuters·SEC EDGAR)
3) 증권사 리서치 요약

각 기사에 ticker(005930), 산업 태그, sentiment 를 함께 부여합니다.

5-2. 삼성전자 정량 시그널 분석 (sub-goal 4-2)

Description
Supabase krx_daily 테이블에서 ticker='005930' 데이터를 SELECT 해 정량 시그널을 산출합니다.

산출물: 5/20일 이동평균, 거래량 변화율, 섹터 상대성, 변동성 지표를 담은 분석 노트와 대시보드용 view·쿼리. 결과는 이슈 코멘트로 보고합니다.

5-3. 투자 제언 리포트 빌더 (sub-goal 4-3)

Description
정량(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비워둠
Description
정량·정성·리포트 결과를 한 페이지 대시보드로 시각화합니다.

스택: 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 + 리포트 마크다운.

066명 조직 구성

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) 끝에 두 줄 추가

디자이너 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 을 직접 열어 다음을 확인합니다.

부록공통 규칙 / BrightData 호출

공통 규칙 블록 — 모든 이슈 본문 끝에 그대로 붙임

공통 규칙
# 공통 규칙

- 결과는 반드시 paperclip API 의 코멘트로 올립니다.
  호출: POST /api/issues/<이슈 id>/comments
  본문: {"body": "<마크다운>"}
  파일에만 저장하고 끝내지 않습니다.

- 코멘트 첫 줄에 사용한 도구 이름을 적습니다.

- DB 의 테이블 구조는 바꾸지 않습니다.
  SELECT 와 INSERT 만 사용합니다.
  필요한 테이블이 없으면 새로 만들지 말고 작업 디렉터리에 임시 파일로 대신합니다.

- 키 값은 절대로 코멘트에 평문으로 적지 않습니다.
  필요하면 첫 8자만 보이고 나머지는 *** 로 가립니다.

- 명단·보고 라인·테이블 스키마·디자인 토큰을 임의로 바꾸지 않습니다.
  변경이 필요하면 코멘트로 제안만 합니다.

BrightData 호출 패턴 (Bash)

BrightData 호출 패턴
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"
  }'