generated from ttipo/project-base
feat(backend): 축제·행사 범위를 대구 근교(경북)까지 넓힘
관광공사에 등록된 앞으로 90일 행사가 대구 1건·경북 7건뿐이라(조회 조건 문제 아님) 홈 '이번 주말 축제·행사'가 대부분 비게 된다. 근교 행사를 거리와 함께 보여 준다. - place:sync -- event 가 기본으로 대구(27)·경북(47)을 받는다(--regions= 로 변경, 시·도마다 실행 기록을 따로 남긴다) - GET /api/events 반경 상한 50km → 150km(포항 약 85km·청송 약 100km). 기본 5km 는 그대로 - 설계 문서에 화면 규칙: 홈은 동네 좌표 120km 거리순(대구 먼저), 이번 주말이 비면 같은 반경 30일로 '다가오는 축제·행사'. 장소 상세 '근처'는 5km, 없으면 칸 숨김 2026-11-03 실측: 이번 주말 대구 도심 120km 안 5건(수성국제비엔날레 5km 가 맨 앞). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -25,7 +25,8 @@ export const EVENT_MAX_SPAN_DAYS = 60;
|
||||
/** 근처 행사 반경(m) */
|
||||
export const EVENT_RADIUS_DEFAULT_M = 5_000;
|
||||
export const EVENT_RADIUS_MIN_M = 100;
|
||||
export const EVENT_RADIUS_MAX_M = 50_000;
|
||||
/** 대구 근교(경북) 행사까지 거리순으로 보려면 100km 이상이 필요하다(포항 약 85km · 청송 약 100km) */
|
||||
export const EVENT_RADIUS_MAX_M = 150_000;
|
||||
|
||||
const DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
|
||||
|
||||
|
||||
@@ -16,6 +16,12 @@ import { isSuspiciousRemoval } from './removal-guard';
|
||||
import { SyncRunRecorder } from './sync-run.recorder';
|
||||
import type { TourApi, TourItem } from './tour-api.client';
|
||||
|
||||
/**
|
||||
* 행사를 받을 시·도 — 대구(27)만으로는 90일에 1건뿐이라(2026-11-03 실측: 대구 1 · 경북 7) 근교 경북(47)까지 받는다.
|
||||
* 화면은 동네 좌표에서 거리순으로 보여 주므로 대구 행사가 먼저 나온다.
|
||||
*/
|
||||
export const DEFAULT_EVENT_REGIONS = ['27', '47'];
|
||||
|
||||
/** 오늘부터 며칠 안에 열리는 행사를 받을지 */
|
||||
export const DEFAULT_EVENT_LOOKAHEAD_DAYS = 90;
|
||||
/** 관광공사 축제·공연·행사 관광타입 */
|
||||
@@ -85,6 +91,18 @@ export class FestivalSync {
|
||||
private readonly apiFactory: PublicDataApiFactory,
|
||||
) {}
|
||||
|
||||
/** 여러 시·도를 차례로 받는다(시·도마다 실행 기록을 따로 남긴다) */
|
||||
async runRegions(options: {
|
||||
regionCodes: string[];
|
||||
days?: number;
|
||||
}): Promise<FestivalSyncResult[]> {
|
||||
const results: FestivalSyncResult[] = [];
|
||||
for (const regionCode of options.regionCodes) {
|
||||
results.push(await this.run({ regionCode, days: options.days }));
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
async run(options: {
|
||||
regionCode: string;
|
||||
days?: number;
|
||||
|
||||
Reference in New Issue
Block a user