사용자 도구

사이트 도구


wiki:automation:newstohr_py

차이

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

차이 보기로 링크

wiki:automation:newstohr_py [2025/07/30 06:43] – 만듦 - 바깥 편집 127.0.0.1wiki:automation:newstohr_py [2025/08/03 02:11] (현재) syjang0803
줄 1: 줄 1:
 ====== NewstoHR.py: 데일리 뉴스레터 자동 생성 스크립트 ====== ====== NewstoHR.py: 데일리 뉴스레터 자동 생성 스크립트 ======
  
-`NewstoHR.py`는 **Dream of E&C 자동화 시스템**의 핵심 중 하나로, 매일 아침 HR지원실 직원들에게 맞춤형 정보를 담은 이메일 뉴스레터를 자동으로 생성하고 발송하는 역할을 합니다.+''NewstoHR.py''는 **Dream of E&C 자동화 시스템**의 핵심 구성 요소 중 하나입니다. 이 스크립트는 매일 아침 HR지원실 직원들에게 맞춤형 정보를 담은 이메일 뉴스레터를 자동으로 생성하고 발송함으로써, 정보 습득의 효율성을 높이고 업무 생산성 향상에 기여합니다.
  
-이 스크립트는 다양한 외부 소스에서 데이터를 수집하고 가공하여 하나의 HTML 이메일로 종합하는 복잡한 파이프라인을 가지고 있습니다.+이 스크립트는 다양한 외부 데이터 소스(예: OpenAI, 네버 뉴스, 한국은행 경제통계시스템)로부터 정보를 수집하고, 이를 가공하여 하나의 정돈된 HTML 이메일 본문으로 종합하는 복잡하면서도 효율적인 자동화 파이프라인을 구축하고 있습니다.
  
-=== 요 기능 및 실행 순서 ===+---- 
 +===== 1. 시스템 개요 및 목적 ===== 
 +''NewstoHR.py'' 스크립트는 정보 과부하 시대에 필수적인 맞춤형 정보 제공을 목표로 합니다. HR지원실 직원들이 매일 필요한 최신 시사, 경제, 지식 정보를 별도의 검색 없이 한눈에 파악할 수 있도록 돕는 것이 주된 목적입니다.
  
-`main()함수를 중심으로 다음과 같은 순서로 동작합니다.+---- 
 +===== 2. 주요 기능 및 실행 순서 ===== 
 +''NewstoHR.py'' 스크립트의 핵심 로직은 ''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'' 라이브러리를 용하여 네이버 뉴스의 속보 섹션에서 실시간 기사를 스크랩합니다. 이 과정에서 기사 제목, 요약 내용원본 링크, 그리고 대표 이미지 URL 의 핵심 정보를 수집합니다. 
-    *   `requests`와 `BeautifulSoup4라이브러리를 용하여 네이버 뉴스의 속보 섹션에서 기사 제목, 요약, 링크, 이미지 등을 수집(스크랩)합니다. +  * 정치, 경제, 사회, IT/과학 등 주요 섹션의 뉴스를 포괄적으로 수집하여 다양한 분야의 최신 이슈를 전달합니다.
-      정치, 경제, 사회 등 여러 섹션의 뉴스를 가져옵니다.+
  
-4.  **경제 지표 수집**: `get_economic_stats()+  - **경제 지표 수집**: ''get_economic_stats()'' 함수는 한국은행(BOK) 경제통계시스템의 공식 API를 호출하여 실시간 경제 지표 데이터를 가져옵니다. 
-    *   한국은행(BOK) 경제통계시스템 API를 호출하여 최신 환율(달러, 엔, 유로), 코스피 지수, 회사채 수익률 등의 주요 경제 지표를 가져옵니다.+  * 주요 수집 지표에는 최신 환율(미국 달러, 일본 엔, 유로), 국내 주식 시장의 코스피 지수, 그리고 주요 회사채 수익률 등이 포함되어, 거시 경제 동향을 한눈에 파악할 수 있도록 돕습니다.
  
-5.  **이메일 본문 생성**: `build_html_content()+  - **이메일 본문 생성**: ''build_html_content()'' 함수는 강력한 ''Jinja2'' 템플릿 엔진을 사용하여 최종 이메일 본문을 구성합니다. 
-    *   `Jinja2템플릿 엔진을 사용합니다. +  * 지금까지 수집하고 생성된 모든 데이터(GPT 콘텐츠, 네이버 뉴스 기사 목록, 경제 지표 등)가 ''newsletter_template.html'' 파일에 정의된 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 모델 호출 +===== 3. 기술 스택 및 주요 라이브러리 ===== 
-*   `requests`, `beautifulsoup4`: 웹 스크래핑 +''NewstoHR.py'' 스크립트 개발에 사용된 주요 Python 라브러리 및 그 역할은 다음과 같습니다.
-*   `jinja2`: HTML 템플릿 처리 +
-*   `pytimekr`: 대한민국 공휴일 확인 +
-*   `pyyaml`: YAML 파일(수신자 목록) 처리 +
-*   `pandas`: 한국은행 API 데터 처 +
-*   `smtplib`: 이메일 발송+
  
-이 스크립트는 `Automail.sh` 셸 스크립트에 해 주기적으로(예일 아침) 실행되도록 설정어 있습니다. +  * ''openai'': OpenAI의 인공지능 모델(예: ''gpt-4o-mini'')과의 상호작용 및 콘텐츠 생성을 위해 사용됩니다. 
 +  * ''requests'': 웹 페지의 HTML 콘텐츠를 가져오기 위한 HTTP 요청을 처리하는 데 사용됩니다. 
 +  * ''beautifulsoup4'': ''requests''로 가져온 HTML 콘텐츠를 파싱(parsing)하고, 필요한 데이터를 추출하는 웹 스크래핑 핵심 라이브러리입니다. 
 +  * ''jinja2'': 수집된 데이터를 미리 정된 HTML 템플릿에 동적으로 삽입하여 최종 이메일 본문을 생성하는 데 사용되는 강력한 템플릿 엔진입니다. 
 +  * ''pytimekr''대한민국 공휴을 정확하게 확인하고, 스크립트 실행 여부를 결정하는 데 활용됩니다. 
 +  * ''pyyaml'': 수신자 목과 같은 설정 정보를 YAML 형식의 파일에서 쉽고 안전하게 읽오는 데 사용됩니다. 
 +  * ''pandas'': 한국은행 API를 통해 수집된 경제 지표 데이터를 효율적으로 처리하고 정제하는 데 유용하게 사용됩니다. 
 +  * ''smtplib'': 이메일 발송을 위해 SMTP(Simple Mail Transfer Protocol) 서버와의 통신을 관리하는 표준 라이브러리입니다.
  
 +----
 +===== 4. 실행 환경 및 추가 정보 =====
 +----
 +==== 1) 스크립트 실행 자동화 ====
 +이 ''NewstoHR.py'' 스크립트는 ''Automail.sh''라는 셸 스크립트에 의해 주기적으로 실행되도록 설정되어 있습니다. 일반적으로 ''Linux'' 시스템의 ''cron'' 스케줄러를 통해 매일 아침 지정된 시간에 자동으로 실행되어 뉴스레터 발송 프로세스를 시작합니다.
 +
 +----
 +==== 2) 개발 및 유지보수 ====
 +''NewstoHR.py''는 모듈화된 구조로 설계되어 있어, 새로운 콘텐츠 소스 추가나 기존 로직 변경 시 유연하게 대응할 수 있습니다. 향후 사용자 피드백을 반영하여 콘텐츠의 다양성을 높이거나, 개인화 기능을 강화하는 방향으로 지속적인 업데이트가 이루어질 예정입니다.
wiki/automation/newstohr_py.1753857794.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki