GET /api/v1/stocks/search
의도
종목 검색 (종목명 부분일치 또는 종목코드 정확일치). 검색창 자동완성.
인증
없음 (공개)
입력
- Query:
query— 종목명 또는 종목코드. 빈 값이면[]반환
응답
json
[
{ "corp_code": "00126380", "corp_name": "삼성전자", "stock_code": "005930", "market_type": "Y" }
]corp_name ILIKE '%query%' OR stock_code = query,ORDER BY corp_name LIMIT 20- 비상장 기업은
dartbrief.stocks테이블에 없음 (KOSPI=Y / KOSDAQ=K 만 저장)
curl 예제
bash
curl -s "https://api.dartbrief.com/api/v1/stocks/search?query=삼성" | jq비즈니스 메모
- HTTP Cache TTL 1분 + 핸들러 인메모리 10분 캐시
GET /api/v1/stocks/active
의도
오늘(KST) summary(AI 한줄요약) 있는 공시가 발생한 종목 — 웹 프리셋 칩용. 하드코딩 추천 8개를 대체. 칩 클릭 → 대시보드 /?corp={corp_code} 필터.
종목 컬렉션의 "활성(오늘 공시 발생)" 부분집합 (/users/active 관용). disclosures + analysis_cache 파생이라 corp_name/stock_code 는 공시 시점 값.
인증
없음 (공개)
입력
- Query:
limit(optional, default 8, min 1, max 20) — 칩 개수 상한. 범위 밖은 clamp - (날짜 범위 파라미터 없음 — 항상 오늘(KST) 고정)
응답
json
[
{ "corp_code": "00126380", "corp_name": "삼성전자", "stock_code": "005930" }
]corp_code 단일 키 dedup (동일 종목의 corp_name/stock_code 이력 달라도 1개), 최근 공시순. 쿼리:
sql
SELECT corp_code, corp_name, stock_code
FROM (
SELECT DISTINCT ON (d.corp_code)
d.corp_code, d.corp_name, d.stock_code, d.rcept_dt, d.rcept_no
FROM dartbrief.disclosures d
JOIN dartbrief.analysis_cache a
ON a.rcept_no = d.rcept_no AND a.status = 'COMPLETED' AND a.summary <> ''
WHERE d.rcept_dt = TO_CHAR((now() AT TIME ZONE 'Asia/Seoul')::date, 'YYYYMMDD') -- 오늘, KST
ORDER BY d.corp_code, d.rcept_dt DESC, d.rcept_no DESC -- corp_code 별 최신 1건 (rcept_no tie-breaker)
) t
ORDER BY t.rcept_dt DESC, t.rcept_no DESC -- 동률 시 결정적 정렬 (칩 구성 고정)
LIMIT $1; -- limit (default 8, max 20)인덱스 idx_disclosures_rcept_dt 활용, 마이그레이션 불필요.
curl 예제
bash
curl -s "https://api.dartbrief.com/api/v1/stocks/active?limit=8" | jq비즈니스 메모
- HTTP Cache TTL 5분
관련 화면
- screen-dashboard.md — 웹 프리셋 칩