# S05 – Auswahl-Algorithmus (beste Random-Sets) Lies `prompts/suggestions/00-MASTER.md`. Code vor allem in `web/src/lib/suggest.ts` (+ App nur wenn nötig). ## Ziel Wenn der User „4 neue“, „8 neue“ oder „Woche automatisch füllen“ klickt, sollen die Vorschläge **so gut wie möglich** sein – nicht nur zufällig, sondern gewichtet und passend zur Woche. ## Regeln 1. **Weighted random** nach `weight` (häufige echte Phrasen öfter) 2. **Keine Duplikate** in Offer + bereits gewählten Texten 3. **usedSuggestionIds** meiden, bis Pool zu klein → dann Fallback 4. **Ferienwoche / keine Schule:** nur `type: betrieb` 5. **Schulwoche:** überwiegend Betrieb; 0–2 Schule-Themen in größeren Offers 6. **Auto-füllen Woche:** ca. 8–12 Betriebseinträge, thematisch gemischt (nicht 8× nur Ablage) 7. **Diversität:** bei Auto-füllen max. 2–3 aus derselben `category`, außer Pool zu klein 8. **Themen der Woche:** random aus echten `WEEK_THEMES` ## API (orientierend) ```ts pickRandomSuggestions(monday, count, usedIds, alreadySelectedTexts) pickWeekSet(monday, usedIds) // für Auto-füllen: diverse, gewichtete Woche ``` ## Abnahme - [ ] 10× „4 neue“: Phrasen klingen echt, wenig Wiederholung - [ ] Auto-füllen: gemischte Kategorien - [ ] Ferienwoche: keine Schul-Vorschläge im Offer - [ ] Build ok