diff --git a/docs/TEMPLATES.md b/docs/TEMPLATES.md index 2bb8f8e..ef4629e 100644 --- a/docs/TEMPLATES.md +++ b/docs/TEMPLATES.md @@ -66,7 +66,12 @@ HTML 안에 있고 보이는 묶음만 바뀐다. 검색엔진은 네 묶음을 거의 없는 집을 위한 것이라, 첫 화면과 객실 카드를 그림으로 채운다. 업종마다 쓸 수 있는 템플릿과 기본 템플릿은 같은 파일의 `industries`에 적는다. 숙박은 레트로가 -기본이고, 병원은 심플과 매거진만 쓸 수 있다. +기본이다. 새 템플릿 8종(라운드 ~ 솔숲)은 네 업종 모두 쓸 수 있다. 병원은 그 밖에 심플과 +매거진만 쓴다(고택·레트로는 숙박·음식점 느낌이 강해 뺐다). + +★ 새 템플릿은 숙박 기준으로 만들었다. 숙박이 아니면 객실 자리가 메뉴·시술로 바뀌고 +(`kit/unitWord.ts`, `UNIT_SPEC`), 객실별 '예약 요청' 버튼은 숨긴다 — 예약 시트가 숙박에만 +있어서 누르면 아무 일도 안 일어났다. ### 뼈대(레이아웃)는 필요한 것만 바꾼다 diff --git a/solution/backend/services/activity_feed.py b/solution/backend/services/activity_feed.py new file mode 100644 index 0000000..460d185 --- /dev/null +++ b/solution/backend/services/activity_feed.py @@ -0,0 +1,39 @@ +"""크롤링 · 사진 분석 · 빌드 진행 이벤트를 Teams 로 보낸다.""" +from common.enums import LinkChannel, PlaceCategory +from services import alert_service + +KIND = "activity" + +_CHANNEL_NAMES = { + LinkChannel.YANOLJA.value: "야놀자", + LinkChannel.GOODCHOICE.value: "여기어때", + LinkChannel.NAVER_PLACE.value: "네이버 플레이스", + LinkChannel.INSTAGRAM.value: "인스타그램", + LinkChannel.OFFICIAL_SITE.value: "홈페이지", + LinkChannel.BLOG.value: "블로그", + LinkChannel.NAVER_BOOKING.value: "네이버 예약", + LinkChannel.ETC.value: "기타", +} + +_CATEGORY_NAMES = { + PlaceCategory.LODGING.value: "숙박", + PlaceCategory.CAFE.value: "카페", + PlaceCategory.RESTAURANT.value: "음식점", + PlaceCategory.CLINIC.value: "피부과·성형외과", +} + + +def channel_name(code) -> str: + return _CHANNEL_NAMES.get(code, f"채널{code}") + + +def category_name(code) -> str: + return _CATEGORY_NAMES.get(code, f"업종{code}") + + +def place_label(place) -> str: + return f"{place.name}({category_name(place.category)})" + + +async def post(title: str, lines: list[str]) -> None: + await alert_service.send_alert(KIND, title, "\n\n".join(line for line in lines if line)) diff --git a/solution/site/src/layouts/kit/unitWord.ts b/solution/site/src/layouts/kit/unitWord.ts new file mode 100644 index 0000000..a212a15 --- /dev/null +++ b/solution/site/src/layouts/kit/unitWord.ts @@ -0,0 +1,12 @@ +import {PlaceCategory} from '@o2o/shared'; + +const WORD: Record = { + [PlaceCategory.LODGING]: 'Room', + [PlaceCategory.CAFE]: 'Menu', + [PlaceCategory.RESTAURANT]: 'Menu', + [PlaceCategory.CLINIC]: 'Program', +}; + +export function unitWord(category: number): string { + return WORD[category] ?? 'Menu'; +}