레퍼런스 - 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는 간단한 텍스트 메시지를 생성합니다. 이 클래스는 문자열 메시지를 사용하여 생성됩니다.