refactor(routines): streamline suggest prompt — merge inventory context, add leaving_home SPF hint
- Remove _build_inventory_context; fold pao_months into DOSTĘPNE PRODUKTY entries - Remove "Otwarte równolegle" duplicate section from prompt - Rename OSTATNIE RUTYNY (7 dni) → OSTATNIE RUTYNY - Add _build_day_context and SuggestRoutineRequest.leaving_home (optional bool) - System prompt: replace unconditional PAO rule with conditional; add SPF factor selection logic based on KONTEKST DNIA leaving_home value - Frontend: leaving_home checkbox (AM only) + i18n keys pl/en Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
258b8c4330
commit
c85ca355df
6 changed files with 43 additions and 86 deletions
|
|
@ -132,6 +132,8 @@
|
|||
"suggest_contextLabel": "Additional context for AI",
|
||||
"suggest_contextOptional": "(optional)",
|
||||
"suggest_contextPlaceholder": "e.g. party night, focusing on hydration...",
|
||||
"suggest_leavingHomeLabel": "Going outside today",
|
||||
"suggest_leavingHomeHint": "Affects SPF selection — checked: SPF50+, unchecked: SPF30.",
|
||||
"suggest_minoxidilToggleLabel": "Prioritize beard/mustache density (minoxidil)",
|
||||
"suggest_minoxidilToggleHint": "When enabled, AI will explicitly consider minoxidil for beard/mustache areas if available.",
|
||||
"suggest_generateBtn": "Generate suggestion",
|
||||
|
|
|
|||
|
|
@ -132,6 +132,8 @@
|
|||
"suggest_contextLabel": "Dodatkowy kontekst dla AI",
|
||||
"suggest_contextOptional": "(opcjonalny)",
|
||||
"suggest_contextPlaceholder": "np. wieczór imprezowy, skupiam się na nawilżeniu...",
|
||||
"suggest_leavingHomeLabel": "Wychodzę dziś z domu",
|
||||
"suggest_leavingHomeHint": "Wpływa na wybór SPF — zaznaczone: SPF50+, odznaczone: SPF30.",
|
||||
"suggest_minoxidilToggleLabel": "Priorytet: gęstość brody/wąsów (minoksydyl)",
|
||||
"suggest_minoxidilToggleHint": "Po włączeniu AI jawnie uwzględni minoksydyl dla obszaru brody/wąsów, jeśli jest dostępny.",
|
||||
"suggest_generateBtn": "Generuj propozycję",
|
||||
|
|
|
|||
|
|
@ -142,6 +142,7 @@ export const suggestRoutine = (body: {
|
|||
part_of_day: PartOfDay;
|
||||
notes?: string;
|
||||
include_minoxidil_beard?: boolean;
|
||||
leaving_home?: boolean;
|
||||
}): Promise<RoutineSuggestion> => api.post('/routines/suggest', body);
|
||||
|
||||
export const suggestBatch = (body: {
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ export const actions: Actions = {
|
|||
const part_of_day = form.get('part_of_day') as 'am' | 'pm';
|
||||
const notes = (form.get('notes') as string) || undefined;
|
||||
const include_minoxidil_beard = form.get('include_minoxidil_beard') === 'on';
|
||||
const leaving_home =
|
||||
part_of_day === 'am' ? form.get('leaving_home') === 'on' : undefined;
|
||||
|
||||
if (!routine_date || !part_of_day) {
|
||||
return fail(400, { error: 'Data i pora dnia są wymagane.' });
|
||||
|
|
@ -25,7 +27,8 @@ export const actions: Actions = {
|
|||
routine_date,
|
||||
part_of_day,
|
||||
notes,
|
||||
include_minoxidil_beard
|
||||
include_minoxidil_beard,
|
||||
leaving_home
|
||||
});
|
||||
return { suggestion, routine_date, part_of_day };
|
||||
} catch (e) {
|
||||
|
|
|
|||
|
|
@ -153,6 +153,20 @@
|
|||
class="w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring resize-none"
|
||||
></textarea>
|
||||
</div>
|
||||
{#if partOfDay === 'am'}
|
||||
<div class="flex items-start gap-3 rounded-md border border-border px-3 py-2">
|
||||
<input
|
||||
id="single_leaving_home"
|
||||
name="leaving_home"
|
||||
type="checkbox"
|
||||
class="mt-0.5 h-4 w-4 rounded border-input"
|
||||
/>
|
||||
<div class="space-y-0.5">
|
||||
<Label for="single_leaving_home" class="font-medium">{m["suggest_leavingHomeLabel"]()}</Label>
|
||||
<p class="text-xs text-muted-foreground">{m["suggest_leavingHomeHint"]()}</p>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="flex items-start gap-3 rounded-md border border-border px-3 py-2">
|
||||
<input
|
||||
id="single_include_minoxidil_beard"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue