mirror of
https://github.com/shawnkim1997/All-in-one-Financial-Analysis.git
synced 2026-08-19 13:28:07 +00:00
- Create directory for AI coding agents and new developers - Add as the main navigation hub and entrypoint - Add project context files: , , , , , - Add development guidelines and architecture decisions: , (including 429 error handling and 10-year DCF logic)
19 lines
1.7 KiB
Markdown
19 lines
1.7 KiB
Markdown
# Project Development Rules
|
|
|
|
### 1. 예외 및 폴백(Fallback) 처리 필수
|
|
- 금융 API(`yfinance`, `yahooquery`)는 데이터 누락이 잦으므로, 항상 `try-except` 구문을 사용해 에러를 방지하세요.
|
|
- 데이터 조회 실패 시 빈 데이터프레임(`pd.DataFrame()`)이나 기본값(`0.0`, `None`)을 반환하도록 설계해야 합니다.
|
|
- 수치 데이터 파싱 시에는 직접 형변환(`float(x)`)을 지양하고, 반드시 예외처리가 포함된 `_safe_float(x)` 헬퍼 함수를 사용하세요.
|
|
|
|
### 2. LLM 호출 시 토큰 최적화
|
|
- 대형 HTML을 LLM에 전송하기 전 반드시 `BeautifulSoup` 및 정규식(`re`)을 사용하여 태그와 표 데이터를 클렌징해야 합니다.
|
|
- 텍스트 길이가 길어질 경우 `smart_chunk()` 함수를 통해 중간 내용을 버리고 핵심(앞부분과 뒷부분)만 남겨 토큰 한도를 준수해야 합니다.
|
|
- 429 Error(Rate Limit) 방지를 위해 Gemini 호출 시 `_generate_with_retry()` 래퍼 함수를 통해 자동 재시도 로직을 적용하세요.
|
|
|
|
### 3. 상태 관리 및 캐싱
|
|
- 재무 데이터와 분석 결과는 `@st.cache_data(ttl=300)`을 사용해 캐싱하여 속도를 향상시킵니다.
|
|
- 10-K 분석 텍스트는 `data/` 경로 하위에 JSON 파일 형태로 영구 저장하여 불필요한 SEC API 재요청을 최소화해야 합니다.
|
|
|
|
### 4. 코드 스타일
|
|
- 모든 UI 출력 문자열과 변수명은 명확성을 위해 일관성 있게 작성되어야 합니다.
|
|
- Pandas 데이터프레임에서 빈 값(None, NaN)을 화면에 출력할 경우, 반드시 `"N/A"` 포맷으로 변경하여 사용자 혼동을 피하세요 (`_na()` 함수 활용). |