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

EventBridge 대신 EventScheduler 사용하도록 코드 수정 #107

Merged
merged 19 commits into from
Feb 5, 2025

Conversation

hyejungg
Copy link
Owner

@hyejungg hyejungg commented Jan 20, 2025

Close #105

변경사항

  • EventBridge 대신 EventScheduler 사용하도록 코드 수정
    • 저스틴이 공유해주신 자료 바탕으로 수정해두었습니다.
    • local에서 스택 성공적으로 배포하고, 스케줄러 생성되는 것까지 확인했습니다.

To Reviewer

hyejungg and others added 13 commits October 14, 2024 17:45
* 코드 추가

* 크롤링 에이전트를 병렬로 수행하도록 RunnableParallel 추가 및 불필요한 상태 삭제

* pnpm 관련 코드 및 파일 삭제

* python 에 맞게 gitignore 수정

* readme 수정

* gitignore에 .idea 폴더 추가

* 필요 없는 gitignore 삭제

* typing-extensions 추가

* env 가져오는 것을 config 파일로 분리

* mongoengine 추가 및 연결 코드 추가

* 기존 파일 삭제

* agent node 추가

* config 추가

* graph 관련 코드 추가

* db 연결 추가

* db 스키마 추가

* 사이트, 메시지 정보 가져오는 함수 추가

* 그래프 이미지 저장, kst 시간으로 변환하는 유틸 함수 추가

* main 함수 추가

* 사용하지 않는 모듈 import 삭제

* import 통일된 형태로 수정

* fixed untracked files

* 디버깅용 print 삭제

* Crawling agent 두번 호출되는 문제 수정

* fakeLLM 사용을 위한 langchain-community 추가

* fakeLLM 추가 하면서 코드 일부 수정

* 껍데기 parser 노드 추가

* langfuse 삭제

* 코드 리뷰 반영

* 기존 프로젝트 삭제

* 기본 코드 작성

* Dockerfile 수정, requirements 추가

* 테스트용 event json 추가

* event 삭제

* repository, tag 관련 설정 추가

* ecr 레지스트리 수동지정, 로그 관련 및 필요권한 추가, 메모리와 이름 수정

* 오타수정, 불필요한 옵션 삭제

* test용 html 주소 수정

* readme 작성

* readme의 build 내용 수정

* 삭제되지 않은 기존 프로젝트 일부 코드 삭제

* black 추가

* 코드 리포맷팅

* 의존성 업데이트

* github workflows 파일 삭제

* scaper-lambda 에 black 의존성 추가

* scraper-lambda 코드 리포맷팅

* 이름변경, package-mode 변경

* typing 패키지가 아닌 내장 타입 이용하도록 변경 (list, dict)

* pydantic기반 타입 추가, 질문 추가

* 타입 수정

* type 수정, 타입에 맞게 코드 수정

* 코드정렬, deprecated 메서드 수정

* 변수명 일반적인 컨벤션에 맞게 수정

* llm 타입수정

* __init__에 Import 하는 부분 삭제

* lambda payload에 body만 넣을 수 있도록 변경

* query_selector -> query_selector_all로 변경

* timeout 수정

* timeout 수정

* 결과 return 시 ensure ascii 옵션 수정

* 람다가 outer html을 반환하도록 수정

* html parser agent 구현

* logger 추가, 일부 Logger 적용

* agent 별로 모델을 다르게 사용할 수 있도록 매개변수 llm 삭제

* ai 관련 뉴스 필터링 에이전트 구성

* type 변경

* 필터링된 기사 순서 정렬하는 에이전트 구현

* parser_result 타입수정

* JsonOutputParser 대신 with_structured_output() 를 쓰도록 수정

* print -> logger로 수정

* 시간에 대한 주석 추가

* 4o-mini로 수정

* 정렬 에이전트의 경우 llm 4o로 수정

* merge 전에 원래 코드 형태로 되돌리기

* parser_result 타입수정

* prompt_config.py 추가

* prompt_config 를 사용하도록 코드 수정

* 불필요한 import 삭제

* 잘못 선언된 parser_result 삭제

* agent 구현, 긱뉴스 테스트 추가

* aitimes, 데보션 구현 및 테스트

* sds 테스트 추가

* 디버깅용 로그 삭제

* 테스트 경로문제 해결

* 타입을 생성의도대로 사용

* sorting agent 로깅 방식 수정

* message 가져오는 로직 수정

* 카카오메시지 데이터 타입 생성

* 메시지 생성 및 요청 구현

* 모듈 export, import 방식 변경

* 필터링 에이전트 모델 변경

* message 가져오는 함수 수정

* init 삭제하고 주석 추가

* 객체 중 site_data 가 없는 경우 예외처리 추가

* 워크 채팅 메시지에 표시될 문자 추가

* 로그 및 변수 네이밍 수정

* Union 대신 | 사용

* 환경변수용 데이터클래스 사용방식 변경

* 사용하지 않는 변수 정리 및 새로운 키 추가

* prompt template 사용방식 변경

* external 패키지 밑에 위치하도록 수정

* 사용 방식 변경

* import 수정

* selector에 매칭되는 요소가 없는 경우 에러 발생

* 람다의 타임아웃을 180으로 조정

* request, playwright의 타임아웃 에러 체크

* 사용하지않는 함수 삭제

* timeout 200초로 수정

* 외부 호출 오류에 대한 예외처리 추가

* 수정내용 적용

* 변수 생성방식 수정

* 에러 프린트 추가

* try except 범위 수정

* env 사용방식 수정

* 공통 logger 이름변경, create_logger 추가

* 포매팅

* llogger에 이름 추가

* 각 에이전트 수행 전, 후, 실행시간 출력

* 에이전트 로그 출력형식 일부 수정, 람다 호출 시 로그 추가

* LLM 호출 로그 추가

* raise 구문 삭제

* state 로그 추가

* 삭제된 코드 추가

* llm caller의 로거 생성방식 변경

* llm caller 로깅방식 변경

* lambda invoker에 args 삭제

* LangChainLLMCallerWithStructure 삭제

* 테이블 출력 형식 수정

* state 출력 로직 수정

* message agent 데이터 로깅 로직 수정

* 로깅 여부를 환경변수로 수정

* 잘못된 import 수정

* local 실행을 위한 __name__ 추가

* 잘못된 import 수정

* Dockerfile 추가

* sam deploy 를 위한 toml, yaml 파일 추가

* EventBridge 스케줄러 설정 추가

* 최상위 폴더에 ai-news-agent 라는 스택 이름으로 scraper-lambda와 news-scraper-agent가 모두 생성되도록 template.yaml 추가

* browser.close()를 finally에서 호출

* browser.close() 삭제, 페이지 대기를 더 안정적으로 수정

* sds, 데보션 테스트코드 추가

* wait 조건 수정

* timeout 관련 에러 로깅 추가

* 누락된 스케줄링 타임존 추가

* rich 라이브러리를 logging 에 추가

* 로컬에서는 테이블로 그 외에서는 dict 형태의 json 포맷으로 표시되도록 코드 수정

* lambda 호출에 retry 추가

* 재시도 간격을 파라미터로 받을수 있게 변경

* env.PROFILE 값을 파라미터로 넘겨주지 않고 내부에서 바로 참조해서 분기타도록 수정

* NewsScraperAgentLogger 클래스 생성하여 하위 메서드로 관련 메서드를 구현하도록 코드 수정

* 코드 전체적으로 NewsScraperAgentLogger를 사용하도록 코드 수정

* 각 print state 별로 logger 생성하도록 코드 수정

* README.md 추가

* 중복되는 레벨, 시간 삭제하고 richHandler의 시간으로 표시되도록 코드 수정

* 재시도 횟수 및 간격을 변수화

* retry를 어노테이션으로 사용

* 잘못된 Enum 타입 사용 수정

* retry after 로그 추가, lambda 에러 보완

* lambda 결과 파싱에 에러처리 추가

* exception 로깅방식 수정

* invoke 에러처리방식 수정

* invoke 에러처리 순서 수정

* get()의 default 인자 삭제

* sds 관련 코드 삭제

* 람다 자동재시작 횟수 1로 조정

* 각 람다 타임아웃 증가

* phase별 template 설정 변경 및 코드 수정

* Environment 추가

* samconfig 모든 파일에 적용

* Scheduler 이름에 PROFILE 추가, samconfig phase별 설정 추가

* 이전 Dockerfile 삭제

* 이전 dockerignore 삭제

* gitignore 추가

* agent Dockerfile에 env 덮어쓰는부분 삭제

* dockerignore 추가

* 각 모듈안의 samconfig, template 삭제

* ecr 분리

* schedule 조건부 생성

* 환경변수에 람다이름 삭제, PROFILE 기본값 변경

* 종속성 업데이트

* 기존의 사이트 추가, 페이지에 대한 배포는 가장 최신 코드 (main) 기준으로 수동 배포 하도록 추가

* ai-news-agent-stack 배포하는 workflow 추가

* 테스트를 위해 pr 시에 실행되도록 코드 수정

* .env 파일 경로 수정

* 주석 삭제

* 주석 삭제

* phase 분리 및 dev 배포는 수동으로 하도록 수정

* web, api 는 아예 삭제

* poetry install 추가 및 pr에서 테스트하기 위한 코드 추가

* 버전 삭제

* POETRY 삭제하고, docker build 시 requirement 파일로 설치하도록 코드 수정

* 자세한 내용 확인을 위해 debug 모드 추가

* 파이썬 버전 업데이트

* 파이썬 버전을 개발 환경과 맞춤

* poetry 설치 및 poetry install 코드 변경

* 공식 문서처럼 lambda_task_root 변수로 경로 지정하도록 코드 수정

* 공식 문서처럼 --use-container 옵션 추가

* 공식 문서처럼 --no-confirm-changeset --no-fail-on-empty-changeset 옵션 추가

* poetry 설치 시 Python3.12 -m pip로 실행하도록 수정

* Python3.12 -m pip로 변경

* dockerfile 변경

* dockerfile 원복 & 옵션 추가

* pip로 sam 설치하도록 변경

* root user action ignore 추가

* pip debug 옵션 추가

* docker 설치 과정 추가

* docker 설치 과정 수정

* no use container 사용

* architecture 수정

* architecture 수정

* playwright 아키텍쳐 수정

* debug용 플래그 제거

* debug용 플래그 제거

* debug용 플래그 제거

* debug용 플래그 제거

* pr 에서 실행되지 않도록 코드 삭제

* main 브랜치에서도 따로 배포 가능하도록 코드 추가

* pyproject 및 lock 파일 수정

* export plugin 추가 및 requirements.txt 갱신

* 버전을 기본값으로 수정

---------

Co-authored-by: hyejungg <[email protected]>
Co-authored-by: 김혜정 (hyejung kim) <[email protected]>
Co-authored-by: 김혜정(molly.ouo) <[email protected]>
Co-authored-by: Justin <[email protected]>
@jongwoo328 jongwoo328 self-requested a review January 21, 2025 14:19
Copy link
Collaborator

@jongwoo328 jongwoo328 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다

FlexibleTimeWindow:
  MaximumWindowInMinutes: 1
  Mode: 'FLEXIBLE'

이부부은 어떻게 이해하면 될까요?

@hyejungg
Copy link
Owner Author

수고하셨습니다

FlexibleTimeWindow:
 MaximumWindowInMinutes: 1
 Mode: 'FLEXIBLE'

이부부은 어떻게 이해하면 될까요?

저거는 필수 파라미터인데, 저기에 설정한 윈도우 시간 만큼 유연하게 실행되게 할 것인지입니다.
그래서 유연하게 안하겠다는 의미로 저렇게 준 거긴 합니다 .. !!


추가로 오늘 아침에 실행이 안됐는데 이유는 제가 오타가 있어서 그랬던 것으로 보여서 수정해서 다시 배포해두었습니다
내일은 진짜 실행되는지 확인해보겠습니당

@jongwoo328 jongwoo328 self-requested a review January 31, 2025 07:55
@hyejungg
Copy link
Owner Author

hyejungg commented Feb 3, 2025

https://docs.mongoengine.org/guide/defining-documents.html
image
image

인덱스명 재지정 하는 것도 고려해보기

@hyejungg
Copy link
Owner Author

hyejungg commented Feb 3, 2025

@jongwoo328
필드명, 인덱스명을 추가하고 dev 에 잘못 생성된 인덱스 지우고 실행했을 때 정상 동작하여 현재 코드 기준으로 다시 배포해두었습니다!
파이썬 코드 내에서 카멜 케이스를 쓰고 있는 걸 스네이크 케이스로 변경하려고 했으나 .. model 쪽에 선언한 dto 를 많이 사용하고 있어서 하지 않았습니다 .,.

  • 이벤트 브릿지 다시 새 뉴스봇 활성화로 변경해두었습니다. 내일 데뷔전 같이 보시죠 ...

@hyejungg
Copy link
Owner Author

hyejungg commented Feb 4, 2025

@jongwoo328

[ERROR] FieldDoesNotExist: The fields "{'_id'}" do not exist on the document "MessageContent"

_id 가 없어서 발생한 것 같은데 .. 놀랍게도 real 은 _id가 있게 저장되고, local/dev는 _id가 없게 저장되고 있었습니다.
image
image

그래서 그냥 _id 필드를 추가하는 것으로 했습니다.
그러면서 auto_create_index는 True로 주었고, index_background라는 존재하지 않는 필드는 삭제했습니다.
당시 gpt 도움을 받아 작성했는데 ... 도움이 안됐네요 ... 유감 ...

결과

로컬에서 카웍 알림을 dev, 몽고디비를 real로 해서 local invoke 했을 때 잘 옵니다 ...
image
image

진짜 찐막으로 다시 배포를 해두었고, 스케줄러도 기대를 안고 다시 활성화해두겠습니다.

@jongwoo328
Copy link
Collaborator

gpt 이녀석 😡😡

@hyejungg hyejungg merged commit e959491 into develop Feb 5, 2025
1 check passed
@hyejungg hyejungg deleted the feat/#105 branch February 6, 2025 09:48
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