/**
 * Stocks 모듈 공유 타입.
 *
 * invest_results/target_stocks.json 스키마를 그대로 받아서, ConnectAI 의
 * `<workspace>/.astra/stocks.json` 으로 옮긴 뒤 같은 필드명을 유지.
 * 한글 필드명은 사용자의 도메인 데이터라 변경하지 않는다 — 마이그레이션 충돌
 * 회피 + 사용자가 직접 JSON 편집할 때 friction 최소화.
 */

/** target_stocks.json 의 한 종목 항목. */
export interface Stock {
    이름: string;
    심볼: string;
    /** 시장 — 'KR'(6자리 코드) | 'US'(알파벳 티커). 미지정 시 심볼로 자동 판별(marketUtils). */
    market?: 'KR' | 'US';
    /** ISO date — 보통 'YYYY-MM-DD'. */
    상장일?: string;
    유보율?: string;
    'ROE(25E)'?: string;
    '영업이익률(25E)'?: string;
    'EPS(25E)'?: string;
    'PER(25E)'?: string;
    PBR?: string;
    시가총액?: string;
    /** 사람이 계산한 적정주가 (텍스트). */
    적정주가?: string;
    /** 매수 추천 임계가. signalClassifier 가 현재가와 비교. */
    매수권장가?: string;
    설립일?: string;
    /** 핵심 사업 한 줄. */
    '최대 먹거리'?: string;
    특이사항?: string;
    /** "충족 (ROE, 성장성, 유동성)" 같은 텍스트. signalClassifier 는 `.includes("충족")` 로만 매칭. */
    '3/4 필터'?: string;
    /** Yahoo Finance 최근 fetch 한 현재가 (정수). 0 또는 누락이면 미수집. */
    현재가?: number;
    /** 분류 시트 — '스윙/중기' / '장기투자' / '저평가우량주' 중 하나. */
    투자성향?: '스윙/중기' | '장기투자' | '저평가우량주';
}

export type StocksStore = Stock[];

/** 신호 분류 결과 — UI / 텔레그램 / 시트 동기화 모두 이 모양을 공유. */
export type Signal = 'BUY_ZONE' | 'OVERVALUED' | 'HOLD';

export interface ClassifiedStock extends Stock {
    /** 정량 + 정성 필터 결합 결과. */
    signal: Signal;
    /** 텔레그램·시트 정렬용. 2 = 매수사정권, 1 = 가격 조정 감시, 0 = 관망. */
    sortScore: 0 | 1 | 2;
    /** `.includes("충족")` 결과 — 정성 필터 통과 여부. */
    filterPass: boolean;
    /** 사용자에게 표시할 한글 신호 문구. */
    signalText: string;
}
