레퍼런스 - code-yeongyu/moragi GitHub Wiki

훑어보기

기본적으로 다음과 같은 구조를 갖고 있습니다.

모락이 코드 아키텍쳐

코드

moragi/cli/commands.py

  • moragi 의 CLI 명령어들을 담고있습니다. 제일 추상화 된 계층으로서, 코드 작성은 이곳에서 시작합니다.
  • typer 모듈을 통해 구성되었습니다.

send_daily_menu_summary_with_photo(cj_fresh_meal_store_id: int, slack_webhook_url: str, is_lunch: bool)

  • 매일 메뉴 요약과 함께 사진을 Slack 채널에 전송합니다.
  • cj_fresh_meal_store_id: 메뉴를 가져올 CJ FreshMeal 매장의 ID입니다.
  • slack_webhook_url: 메시지를 전송할 Slack webhook URL입니다.
  • is_lunch: 점심 메뉴를 전송할지, 저녁 메뉴를 전송할지를 결정합니다.

send_lunch_menu_summary_with_photo(cj_fresh_meal_store_id: int, slack_webhook_url: str)

  • 점심 메뉴 요약과 함께 사진을 Slack 채널에 전송합니다. send_daily_menu_summary_with_photo의 별칭입니다.
  • cj_fresh_meal_store_id: 메뉴를 가져올 CJ FreshMeal 매장의 ID입니다.
  • slack_webhook_url: 메시지를 전송할 Slack webhook URL입니다.

send_dinner_menu_summary_with_photo(cj_fresh_meal_store_id: int, slack_webhook_url: str)

  • 저녁 메뉴 요약과 함께 사진을 Slack 채널에 전송합니다. send_daily_menu_summary_with_photo의 별칭입니다.
  • cj_fresh_meal_store_id: 메뉴를 가져올 CJ FreshMeal 매장의 ID입니다.
  • slack_webhook_url: 메시지를 전송할 Slack webhook URL입니다.

send_next_menu_summary(cj_fresh_meal_store_id: int, slack_webhook_url: str)

  • 다음날의 메뉴 요약을 Slack 채널에 전송합니다.
  • cj_fresh_meal_store_id: 메뉴를 가져올 CJ FreshMeal 매장의 ID입니다.
  • slack_webhook_url: 메시지를 전송할 Slack webhook URL입니다.

send_today_menu_summary(cj_fresh_meal_store_id: int, slack_webhook_url: str)

  • 오늘의 메뉴 요약을 Slack 채널에 전송합니다.
  • cj_fresh_meal_store_id: 메뉴를 가져올 CJ FreshMeal 매장의 ID입니다.
  • slack_webhook_url: 메시지를 전송할 Slack webhook URL입니다.

send_message(message: str, slack_webhook_url: str)

  • 사용자 정의 메시지를 Slack 채널에 전송합니다. 테스트용도로 만들었습니다.
  • message: 전송할 메시지입니다.
  • slack_webhook_url: 메시지를 전송할 Slack webhook URL입니다.

moragi/utils/slack/slack_message_builder.py

슬랙 웹훅 앱에서 사용하는 메시지는 Block Kit 이라는 JSON 기반의 UI Framework 를 사용합니다. 이러한 메시지를 블록 메시지라고 부릅니다. SlackMessageBuilder 는 이러한 블록 메시지를 생성하는 클래스들입니다.

각 블록 메시지는 각 빌더에서 구성됩니다. 다만, 필요에 따라 컴포넌트 성을 띄거나 명확히 분리가 될 필요가 있는 블록들은 moragi/utils/slack/blocks.py 에서 정의 되어있습니다.

기본 클래스: SlackMessageBuilder

SlackMessageBuilder는 모든 슬랙 메시지 빌더의 추상 기본 클래스입니다. 이 클래스는 make_slack_blocks라는 추상 메서드를 정의합니다. 슬랙 메시지 전송에 사용되는 SlackMessageSender 의 파라미터로도 사용되는 값입니다.

메뉴 요약 메시지 빌더: MenuSummaryMessageBuilder

MenuSummaryMessageBuilder는 오늘의 메뉴 요약을 생성합니다. 이 클래스는 DailyMenu 객체를 사용하여 생성됩니다.

사진과 함께 점심 메시지 빌더: LunchWithPhotoMessageBuilder

LunchWithPhotoMessageBuilder는 점심 메뉴 사진과 함께 점심 메시지를 생성합니다. 이 클래스는 Menu 객체의 목록을 사용하여 생성됩니다.

사진과 함께 저녁 메시지 빌더: DinnerWithPhotoMessageBuilder

DinnerWithPhotoMessageBuilder는 저녁 메뉴 사진과 함께 저녁 메시지를 생성합니다. 이 클래스는 Menu 객체의 목록을 사용하여 생성됩니다.

내일 메뉴 메시지 빌더: TomorrowMenuMessageBuilder

TomorrowMenuMessageBuilder는 내일 메뉴를 생성합니다. 이 클래스는 DailyMenu 객체를 사용하여 생성됩니다.

금요일 오후 메시지 빌더: FridayAfternoonMessageBuilder

FridayAfternoonMessageBuilder는 금요일 오후에 다음 주 월요일 메뉴를 생성합니다. 이 클래스는 DailyMenu 객체를 사용하여 생성됩니다.

텍스트 메시지 빌더: TextMessageBuilder

TextMessageBuilder는 간단한 텍스트 메시지를 생성합니다. 이 클래스는 문자열 메시지를 사용하여 생성됩니다.