1. 주식 디테일 관련 페이지 수정
-> 주가 차트
-> 삼성전자 일별 가격시세 api로 받아와서 db에 저장하고 그려준다.
TICK단위는 필요없는걸로
2. dart공시 api 사용
- 공시 고유 번호 매핑 방법
- . 구현 설계
- 배치돌려서 일자별 맞는건 업데이트
- zip파일 열어서 xml파싱
- db에 코드 업데이트
- 구현 내용
- zip은 여러번 쓰기때문에 공통 util로 리팩토링
- dratController - 고유 번호 조회 api
- XML 파싱은 DocumentBuilderFactory 사용
- org.w3c.dom NodeList사용해서 CorpCode 파싱 및 빌드
- 상장 회사만 필터링하고 stock업데이트
- . 구현 설계
- 주식 정보 디테일 페이지에서 공시 정보 호출 구현
- 구현 설계
- controller api 정기공시, 주요사항보고, 발행공시3개만 , 1년 최신
- 결과에서 접수번호 DB에 저장해야할지 공시 정보 업데이트 배치
- 신규 상장때문에 데이터가 없다면 api 1년치 호출 1번하고 저장 -> 이후 매일 스케줄로 돌리며 업데이트.
- 매일 모든 종목을 업데이트해?
- 누군가 들어갈때 그때 1일치를 불러?
- DART의 list.json API는 특정 기업(corp_code)을 지정하지 않고 호출하면 **"그날 발생한 모든 기업의 공시"**를 한 번에 가져올 수 있습니다. 즉, 종목별로 2,500번 부르는 게 아니라, 어제 날짜 전체 공시를 페이지별로 몇 번만 호출하면 모든 종목 업데이트가 가능합니다.
- 최신순으로 무한스크롤 기능 -> 페이지네이션은 조회에 한계가 있을 수 있으니
- DB 엔티티 추가 종목명 / 종목 코드/ 보고서명 / 접수 번호/접수 일자 dart_disclosuer_entry에 저장함.
- 구현 내용
- 1년치 초기화 init -> 1년으로 설정 search
- 공시 검색 search
- 스케줄러로 새벽에 공시 업데이트
- 구현 설계
주식 현재가 가져오기구현 설계tick 거래량을 가져오는건 한투api에서도 20개정도로 제한됨.현재가는 필요시 api호출로 가져올 수 있음.종목 detail에서 현재가 보여주기방식은 스케줄러 On/Off 진입시 On 아웃시 Off진입은 API요청으로 가능한데 OFF는 어떻게 처리할까진입시 웹소켓으로 서버와 연결하고 매번 보고있는 페이지 송신메인 거래량 top5는 매번 업데이트api??1000명까지는 어캐 버티긴한다만 이게 필요함?일봉을 분석해서 가능성을 보여주는게 더 나은 기획같다.
- 일봉 월봉 년봉 데이터 저장 및 차트 그리기
- 한투에서 기준일자 기준 1년치 데이터 가져오기
- 데이터 100건정도였음.
- 내일이 밝아왔고 1일치 일봉을 어떻게 업데이트 할것인가.
- 매일 모든 종목을 호출하는건 api제한도그렇고 비효율적.
- 자주 조회하는 + 거래량이 높은 항목은 배치로 업데이트하고 잘 조회하지 않는건 사용자가 들어갈때 조회 이러면 생기는 문제는 100명이 잘 조회하지 않는 데이터에 들어오면 그때마다 MAX(datetime)을 조회하는 쓸데 없는 쿼리발생.
- 모든 주식을 사용자가 처음볼때 하는걸로 왜냐하면 최종 업데이트 일자 캐싱해서 더이상 db에 접근하지 않게 수정하기. 종목수도 어차피 4500개정도 밖에 안됨
- 최종 결론
- 각 데이터의 마지막 조회일을 레디스에 저장한다.
- 저장날짜를 가져와서 마지막 조회일이 오늘날짜 이전이라면 업데이트한다.
- 맨처음이라면 기준일은 2023년1월1일~오늘까지 업데이트한다.
- 맨처음이 아니라면 아닌날짜 기준으로 오늘까지 업데이트한다.
------------------------------내일 TODO
- 공시보고서 pdf올리면AI가 분석해주기.
- cf) 비동기 처리 레디스 + 레빗MQ/카프
- pdf파일 업로드 및 저장
- 해당 관련해서 반기 보고서 분기보고서만 쓰는데 회사명이 주식명과 다른경우 뱉는다. AI가 회사명을 파악하고 분석을 거절하는 시스템 구현필요
- 중복 방지 파일 해시 추출
- 해당 파일이 바이러스 있는지 확인하는 기능 필요 ClamAV 같은 백신으로 체크가능
- DB에 올린 기록 저장. 파일명 사용자ID 업로드 시간.
- PDF 추출
- pdf에서 text를 PdfBox에서 전체 텍스트를 읽는다.
- 표는 Tabula-java를 실행해 재무제표 등 핵심 표 데이터를 추출해서 마크다운형식으로 변환한다.
- 섹션을 나눈다. 사업의내용 재무에 관한 사항같은
- 청킹 및 임베딩
- 청킹 : pdf에서 나눈 섹션별 텍스트와 표를 AI가 읽기 좋게 쪼갠다.
- 임베딩 : 쪼개진 텍스트 조각들을 임베딩 모델에 통과시켜 벡터로 만든다.
- DB에 저장
- 마리아DB에 문서 메타데이터와 요약본 검증결과를 저장
- 벡터DB에 3단계 벡터값과 원문 텍스트 조각 섹션정보를 저장한다.
프론트 바인딩하기
1. 현재가 제거.
2. 차트는 2026년 1월달 기준 일봉차트 스크롤시 2023년1월1일까지 MAX로 가능
3. 최근 공시조회 기능
스케줄은 얼마나 감당가능한지 서버에 올리고 수치 확인 필요 -> 수치 확인 연습
이후 고유 번호로 공시 목록 조회 API
-> 이후 클릭시 ->
- PC용 URL: https://dart.fss.or.kr/dsaf001/main.do?rcpNo={접수번호}
'Archive(완료된 내용) > 포트폴리오 강화' 카테고리의 다른 글
| [Stock101] PDF 데이터 추출이 1회 만에 멈췄던 이유 - 5일차 (0) | 2026.01.26 |
|---|---|
| [stock101] pdf 업로드 및 추출 -5일차 (0) | 2026.01.26 |
| [stock101] KIS 코스피 코스닥 종목 정보 매일 최신화하기 - 3일차 (1) | 2026.01.21 |
| [stock101] LOCK을 누가 계속 잡는 문제. (0) | 2026.01.21 |
| [stock101] KIS API연동 웹소켓 - 2일차 (1) | 2026.01.20 |