사용자 도구

사이트 도구


wiki:it:dream_of_enc:automation:newstohr_py

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

wiki:it:dream_of_enc:automation:newstohr_py [2025/07/30 06:43] – 만듦 - 바깥 편집 127.0.0.1wiki:it:dream_of_enc:automation:newstohr_py [2025/08/01 12:45] (현재) syjang0803
줄 1: 줄 1:
 ====== NewstoHR.py: 데일리 뉴스레터 자동 발송 스크립트 ====== ====== NewstoHR.py: 데일리 뉴스레터 자동 발송 스크립트 ======
  
-`NewstoHR.py`는 **Dream of E&C 자동화 시스템**의 핵심 중 하나로, 매일 아침 HR지원실 직원들에게 맞춤형 정보를 담은 이메일 뉴스레터를 자동으로 생성하고 발송하는 역할을 합니다.+''NewstoHR.py''는 **Dream of E&C 자동화 시스템**의 핵심 중 하나로, 매일 아침 HR지원실 직원들에게 맞춤형 정보를 담은 이메일 뉴스레터를 자동으로 생성하고 발송하는 역할을 합니다.
  
 이 스크립트는 다양한 외부 소스에서 데이터를 수집하고 가공하여 하나의 HTML 이메일로 종합하는 복잡한 파이프라인을 가지고 있습니다. 이 스크립트는 다양한 외부 소스에서 데이터를 수집하고 가공하여 하나의 HTML 이메일로 종합하는 복잡한 파이프라인을 가지고 있습니다.
  
 +----
 === 주요 기능 및 실행 순서 === === 주요 기능 및 실행 순서 ===
  
-`main()함수를 중심으로 다음과 같은 순서로 동작합니다.+''main()'' 함수를 중심으로 다음과 같은 순서로 동작합니다.
  
-1.  **공휴일 확인**: `pytimekr라이브러리를 사용하여 스크립트 실행일이 공휴일인지 확인합니다. 공휴일이면 뉴스레터를 발송하지 않고 종료합니다.+  - **공휴일 확인**: ''pytimekr'' 라이브러리를 사용하여 스크립트 실행일이 공휴일인지 확인합니다. 공휴일이면 뉴스레터를 발송하지 않고 종료합니다.
  
-2.  **콘텐츠 생성 (OpenAI GPT)**: `get_gpt_content()` +  - **콘텐츠 생성 (OpenAI GPT)**: ''get_gpt_content()'' 
-    *   OpenAI의 `gpt-4o-mini모델을 호출하여 4가지 주제의 짧은 콘텐츠를 생성합니다. +    *   OpenAI의 ''gpt-4o-mini'' 모델을 호출하여 4가지 주제의 짧은 콘텐츠를 생성합니다. 
-        *   오늘의 명언 (`quote`+      *   오늘의 명언 (''quote''
-        *   실용 영어 한 문장 (`english`+      *   실용 영어 한 문장 (''english''
-        *   교훈적 사자성어 (`idiom`+      *   교훈적 사자성어 (''idiom''
-        *   최신 시사/경제 용어 (`term`+      *   최신 시사/경제 용어 (''term''
-    *   **중복 방지**: 이전에 생성했던 내용을 `gpt_history.json파일에 기록하고, 새로운 콘텐츠를 요청할 때 이 목록을 참고하여 중복되지 않는 결과를 받도록 프롬프트를 구성합니다.+    *   **중복 방지**: 이전에 생성했던 내용을 ''gpt_history.json'' 파일에 기록하고, 새로운 콘텐츠를 요청할 때 이 목록을 참고하여 중복되지 않는 결과를 받도록 프롬프트를 구성합니다.
  
-3.  **뉴스 스크래핑**: `scrape_naver_news()` +  - **뉴스 스크래핑**: ''scrape_naver_news()'' 
-    *   `requests`와 `BeautifulSoup4라이브러리를 사용하여 네이버 뉴스의 속보 섹션에서 기사 제목, 요약, 링크, 이미지 등을 수집(스크랩)합니다.+    *   ''requests''와 ''BeautifulSoup4'' 라이브러리를 사용하여 네이버 뉴스의 속보 섹션에서 기사 제목, 요약, 링크, 이미지 등을 수집(스크랩)합니다.
     *   정치, 경제, 사회 등 여러 섹션의 뉴스를 가져옵니다.     *   정치, 경제, 사회 등 여러 섹션의 뉴스를 가져옵니다.
  
-4.  **경제 지표 수집**: `get_economic_stats()`+  - **경제 지표 수집**: ''get_economic_stats()''
     *   한국은행(BOK) 경제통계시스템 API를 호출하여 최신 환율(달러, 엔, 유로), 코스피 지수, 회사채 수익률 등의 주요 경제 지표를 가져옵니다.     *   한국은행(BOK) 경제통계시스템 API를 호출하여 최신 환율(달러, 엔, 유로), 코스피 지수, 회사채 수익률 등의 주요 경제 지표를 가져옵니다.
  
-5.  **이메일 본문 생성**: `build_html_content()` +  - **이메일 본문 생성**: ''build_html_content()'' 
-    *   `Jinja2템플릿 엔진을 사용합니다. +    *   ''Jinja2'' 템플릿 엔진을 사용합니다. 
-    *   지금까지 수집하고 생성한 모든 데이터(GPT 콘텐츠, 뉴스, 경제 지표 등)를 `newsletter_template.html파일에 끼워 넣어 최종 이메일 본문을 완성합니다.+    *   지금까지 수집하고 생성한 모든 데이터(GPT 콘텐츠, 뉴스, 경제 지표 등)를 ''newsletter_template.html'' 파일에 끼워 넣어 최종 이메일 본문을 완성합니다.
  
-6.  **수신자 목록 로드**: `get_email_list_from_yaml()` +  - **수신자 목록 로드**: ''get_email_list_from_yaml()'' 
-    *   `email_list.yaml파일에서 뉴스레터를 받을 사람들의 이메일 주소 목록을 읽어옵니다.+    *   ''email_list.yaml'' 파일에서 뉴스레터를 받을 사람들의 이메일 주소 목록을 읽어옵니다.
  
-7.  **이메일 발송**: `send_newsletter()` +  - **이메일 발송**: ''send_newsletter()'' 
-    *   `smtplib라이브러리를 사용하여 네이버 SMTP 서버에 접속합니다.+    *   ''smtplib'' 라이브러리를 사용하여 네이버 SMTP 서버에 접속합니다.
     *   생성된 HTML 본문과 수신자 목록을 이용해 뉴스레터를 발송합니다.     *   생성된 HTML 본문과 수신자 목록을 이용해 뉴스레터를 발송합니다.
  
 +----
 === 주요 사용 라이브러리 === === 주요 사용 라이브러리 ===
-*   `openai`: GPT 모델 호출 +  *   ''openai'': GPT 모델 호출 
-*   `requests``beautifulsoup4`: 웹 스크래핑 +  *   ''requests''''beautifulsoup4'': 웹 스크래핑 
-*   `jinja2`: HTML 템플릿 처리 +  *   ''jinja2'': HTML 템플릿 처리 
-*   `pytimekr`: 대한민국 공휴일 확인 +  *   ''pytimekr'': 대한민국 공휴일 확인 
-*   `pyyaml`: YAML 파일(수신자 목록) 처리 +  *   ''pyyaml'': YAML 파일(수신자 목록) 처리 
-*   `pandas`: 한국은행 API 데이터 처리 +  *   ''pandas'': 한국은행 API 데이터 처리 
-*   `smtplib`: 이메일 발송 +  *   ''smtplib'': 이메일 발송
- +
-이 스크립트는 `Automail.sh` 셸 스크립트에 의해 주기적으로(예: 매일 아침) 실행되도록 설정되어 있습니다. +
  
 +이 스크립트는 ''Automail.sh'' 셸 스크립트에 의해 주기적으로(예: 매일 아침) 실행되도록 설정되어 있습니다.
wiki/it/dream_of_enc/automation/newstohr_py.1753857794.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki