Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat: 고급 아티클 기능 구현 #81

Merged
merged 7 commits into from
Dec 1, 2024

Conversation

Preta3418
Copy link
Collaborator

closed #59


✅ PR 유형

  • 새로운 기능 추가

📝 작업 내용

Pull Request: 기사 생성 기능 구현

개요

이 PR은 주식 예측 데이터를 기반으로 기사 생성 기능을 추가합니다. 매일 오전 7시 30분에 주식 트렌드를 분석하여 기사를 자동으로 생성하며, 생성된 기사는 정해진 기간 동안 저장됩니다. 시스템은 기사의 총 개수가 최대 제한(10개)을 초과하지 않도록 관리하며, 만료된 기사는 자동으로 삭제됩니다.


주요 기능

1. ArticleScheduler

  • 목적: 매일 오전 7시 30분에 기사를 자동 생성합니다.
  • 기능:
    • 데이터베이스에서 예측 주식 데이터를 가져옵니다.
    • 주식 트렌드를 분석 (단기, 중기, 장기).
    • 랜덤으로 트렌드를 선택하여 기사를 생성하며, 총 기사의 수가 10개를 초과하지 않도록 제한합니다.
    • 만료된 기사를 삭제하여 최신 상태를 유지합니다.

2. ArticleGenerationService

  • 목적: GPT API를 통해 기사를 생성합니다.
  • 기능:
    • 트렌드 데이터를 GPT API 요청 형식에 맞게 포맷팅합니다.
    • GPT API에 트렌드 데이터를 요청으로 전달합니다.
    • GPT API의 응답을 Article 엔티티로 변환합니다.
    • 트렌드 유형(SHORT_TERM, MID_TERM, LONG_TERM)에 따라 기사의 지속 기간을 설정합니다 (3일, 7일, 14일).

3. ArticleServiceImpl

  • 목적: 기사를 조회하는 기능을 제공합니다.
  • 기능:
    • 모든 기사 조회 (getAllArticles).
    • 특정 주식 심볼로 기사 조회 (getArticlesBySymbol).
    • 조회된 기사를 DTO 형식으로 변환하여 반환합니다.

4. ArticleController

  • 목적: 기사를 조회 및 관리하기 위한 API 엔드포인트를 제공합니다.
  • 엔드포인트:
    • GET /articles: 모든 기사 조회.
    • GET /articles/{symbol}: 특정 주식 심볼의 기사 조회.
    • POST /articles/generate: 기사 생성을 강제로 실행.

5. AdvTrendAnalyzerImpl

  • 목적: 예측 데이터를 기반으로 주식 트렌드를 분석합니다.
  • 기능:
    • 주식 데이터를 날짜별로 그룹화하여 일일 트렌드를 계산합니다.
    • 단기, 중기, 장기 트렌드를 분석합니다.
    • 기사 생성을 위한 트렌드 설명을 생성합니다.

6. ChatGptConfig

  • 목적: GPT API와 통신하기 위한 RestClient를 구성합니다.
  • 기능:
    • API 요청을 위한 기본 URL, 인증 헤더, 기본 Content-Type을 설정합니다.

주요 개선사항

  1. 동적 기사 생성:

    • 랜덤 트렌드 선택으로 다양한 기사를 생성합니다.
    • 만료된 기사를 자동으로 삭제하여 데이터의 신선함을 유지합니다.
  2. 효율적인 트렌드 분석:

    • 단기, 중기, 장기 트렌드로 분류하여 다양한 인사이트를 제공합니다.
  3. 기사 수 제한:

    • 기사의 총 개수를 10개 이하로 제한하여 관리합니다.
  4. 수동 실행 가능:

    • POST /articles/generate 엔드포인트를 추가하여 관리자가 수동으로 기사 생성을 실행할 수 있습니다.

🔍 테스트 결과

코드 변경에 대해 테스트를 수행한 결과를 요약해주세요. 예: 모든 테스트 통과 여부, 새로 작성한 테스트 케이스 등


🎈 변경 사항 체크리스트

  • 코드에 영향이 있는 모든 부분에 대한 테스트를 작성하고 실행했나요?
  • 문서를 작성하거나 수정했나요? (필요한 경우)
  • 코드 컨벤션에 따라 코드를 작성했나요?
  • 본 PR에서 발생할 수 있는 모든 의존성 문제가 해결되었나요?

✨ 피드백 반영사항

피드백 받은 내용이 있으면 작성해주세요.


💬 리뷰 요구사항

리뷰어가 중점적으로 봐주면 좋을 것 같은 부분이 있다면 작성해주세요.
ex) Student.java:29 부분의 코드가 잘 작동하는지 테스트해 주실 수 있나요?


Reference Data 와 Live Data 에 이어서 Article 만이 사용하는 미래의 데이터, FORECAST 데이터를 추가하고 Scheduler 를 통해 들고오게 했습니다

related to: #59
아티클 구현 1차 입니다. Controller, dto, Entity, Repository 구현이 완료 되었으며, Service 쪽과 스케쥴러 구현은 진행 과정에 있습니다

related to: #59
각 주식의 Trend 를 계산하는 계산기를 만들었습니다.

related to: #59
주석 변경 입니다

related to: #59
아티클 주고상 데이터가 많으면 많을 수록 좋아 주식 데이터들을 가져오는 날짜를 변경하였습니다.

related to: #59
고급 아티클 생성 기능 구현입니다.

related to: #59
Shceduler 를 통해 모든것이 자동화가 되어 더이상 RequestDto 가 필요하지 않게 되어 삭제조치 하였습니다.

related to: #59
@Preta3418 Preta3418 requested a review from deveunhwa December 1, 2024 11:37
@Preta3418 Preta3418 self-assigned this Dec 1, 2024
@deveunhwa
Copy link
Collaborator

수고하셨습니다.

@deveunhwa deveunhwa merged commit 0e8453e into develop Dec 1, 2024
@Preta3418 Preta3418 deleted the feature/articles/SCRUM-103 branch December 4, 2024 01:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants