Map
-Nearby flower shops will appear here in the next step.
-Current job: {jobId || 'none'}
+diff --git a/.env.example b/.env.example index 3a8214c..1654657 100644 --- a/.env.example +++ b/.env.example @@ -6,10 +6,16 @@ GEMINI_TEXT_MODEL=gemini-2.5-flash-lite # IMAGE_PROVIDER: openai | gemini | mock # mock = instant placeholder images, zero API calls (develop without burning quota) IMAGE_PROVIDER=openai -OPENAI_API_KEY= -OPENAI_IMAGE_MODEL=gpt-image-1 +OPENAI_API_KEY=your_openai_api_key_here OPENAI_IMAGE_SIZE=1024x1024 GEMINI_IMAGE_MODEL=gemini-3.1-flash-image -# Kakao REST API (used later for /map) +# Kakao REST API (shop search for /map) KAKAO_REST_API_KEY= + +# Kakao Maps JavaScript key (map display on /map — public, client-side) +PUBLIC_KAKAO_MAP_KEY= + +# Dev seed button: shown only when `npm run dev` (production build hides it). +# To mute during local dev, set DEV_SEED_MUTED = true in DevSeedButton.svelte. +# Replace static/dev/bouquet-{s,m,l}.jpg with real photos for richer UI previews. diff --git a/src/app.d.ts b/src/app.d.ts new file mode 100644 index 0000000..ecf2c13 --- /dev/null +++ b/src/app.d.ts @@ -0,0 +1,34 @@ +export {}; + +declare global { + interface Window { + kakao: { + maps: { + load: (callback: () => void) => void; + LatLng: new (lat: number, lng: number) => unknown; + LatLngBounds: new () => { extend: (latlng: unknown) => void }; + event: { + addListener: (target: unknown, type: string, handler: () => void) => void; + }; + Map: new ( + container: HTMLElement, + options: { center: unknown; level: number } + ) => { + setBounds: (bounds: unknown) => void; + panTo: (latlng: unknown) => void; + relayout: () => void; + getCenter: () => { getLat: () => number; getLng: () => number }; + }; + Marker: new (options: { position: unknown; map: unknown }) => { + setMap: (map: unknown) => void; + setZIndex: (z: number) => void; + }; + InfoWindow: new (options?: { removable?: boolean }) => { + open: (map: unknown, marker: unknown) => void; + close: () => void; + setContent: (content: string) => void; + }; + }; + }; + } +} diff --git a/src/lib/components/dev/DevSeedButton.svelte b/src/lib/components/dev/DevSeedButton.svelte new file mode 100644 index 0000000..7aad45a --- /dev/null +++ b/src/lib/components/dev/DevSeedButton.svelte @@ -0,0 +1,47 @@ + + +{#if dev && !DEV_SEED_MUTED} +
+ {message} +
+ {/if} ++ {#each segments as segment, index (index)} + {#if segment.highlight} + {'{'}{segment.text}{'}'} + {:else} + {segment.text} + {/if} + {/each} +
+ {:else} +Complete the flow to generate your order message.
+ {/if} + + +Move the map, then refresh to search this area.
+ {#if mock} +Showing sample shops (no Kakao API key).
+ {/if} + +{error}
+ {/if} + +Searching for flower shops...
+ {:else} +No flower shops found nearby.
+ {/each} +Loading options...
+Nearby flower shops will appear here in the next step.
-Current job: {jobId || 'none'}
+