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