빌더 앱에서 미니블로그를 운영하는 데 필요했던 몇 가지를 묶었다. - notify_email: 업장별 승인 메일 수신자를 계정 로그인 이메일과 분리(places.notify_email, migrations/0021, PlaceCRUD·protocol.py·place_service.py 검증, BlogPostsPage.tsx 설정 UI) - 글 삭제(soft delete): 상태 제한 없이 지우고, 이미 게재된 글이면 재발행 잡까지 큐에 넣는다 (post_crud.py, router/v1/site/post.py DELETE, BlogPostsPage.tsx 삭제 버튼) - 지금 발송하기: 아침 9시 스윕을 안 기다리고 바로 발송(post_crud.next_due_for_mail, BlogPostsPage.tsx 버튼) - blog_service.generate_one: 하드코딩된 Gemini 대신 services/llm/provider.py(LLM_PROVIDER, 기본 openai)를 타도록 전환, 업종별 분기 구조(현재 숙소만 구현) 추가 - site_payload.publish_url(place, site): 발행 주소 조합을 한 곳에 모은 헬퍼 - 프론트: orval 로 재생성한 API 클라이언트(notify_email·삭제·즉시발송·social 엔드포인트 반영) 관련 스위트는 별도 커밋(쓰레드 연동 작업)에서 이미 PASS 확인함
42 lines
1.7 KiB
TypeScript
42 lines
1.7 KiB
TypeScript
/**
|
|
* Generated by orval v7.21.0 🍺
|
|
* Do not edit manually.
|
|
* Web4Ai API
|
|
* OpenAPI spec version: 0.1.0
|
|
*/
|
|
import type { PlaceCategory } from "./placeCategory";
|
|
import type { PlaceStatus } from "./placeStatus";
|
|
import type { PlaceDataOwnerUserId } from "./placeDataOwnerUserId";
|
|
import type { PlaceDataExternalSource } from "./placeDataExternalSource";
|
|
import type { PlaceDataExternalPlaceId } from "./placeDataExternalPlaceId";
|
|
import type { PlaceDataRoadAddress } from "./placeDataRoadAddress";
|
|
import type { PlaceDataAddress } from "./placeDataAddress";
|
|
import type { PlaceDataPhone } from "./placeDataPhone";
|
|
import type { PlaceDataLatitude } from "./placeDataLatitude";
|
|
import type { PlaceDataLongitude } from "./placeDataLongitude";
|
|
import type { PlaceDataRegionCode } from "./placeDataRegionCode";
|
|
import type { PlaceDataVerifiedAt } from "./placeDataVerifiedAt";
|
|
import type { PlaceDataContentUpdatedAt } from "./placeDataContentUpdatedAt";
|
|
import type { PlaceDataNotifyEmail } from "./placeDataNotifyEmail";
|
|
import type { PlaceDataCreatedAt } from "./placeDataCreatedAt";
|
|
|
|
export interface PlaceData {
|
|
place_id: string;
|
|
name: string;
|
|
category: PlaceCategory;
|
|
status: PlaceStatus;
|
|
owner_user_id?: PlaceDataOwnerUserId;
|
|
external_source?: PlaceDataExternalSource;
|
|
external_place_id?: PlaceDataExternalPlaceId;
|
|
road_address?: PlaceDataRoadAddress;
|
|
address?: PlaceDataAddress;
|
|
phone?: PlaceDataPhone;
|
|
latitude?: PlaceDataLatitude;
|
|
longitude?: PlaceDataLongitude;
|
|
region_code?: PlaceDataRegionCode;
|
|
verified_at?: PlaceDataVerifiedAt;
|
|
content_updated_at?: PlaceDataContentUpdatedAt;
|
|
notify_email?: PlaceDataNotifyEmail;
|
|
created_at?: PlaceDataCreatedAt;
|
|
}
|