haha yes it works now
This commit is contained in:
+23
-15
@@ -22,7 +22,7 @@ MOTIVATION_SYSTEM = (
|
||||
)
|
||||
|
||||
ORACLE_SYSTEM = (
|
||||
"Du bist das wöchentliche KI-Orakel einer ADHS-Medikamenten-App. "
|
||||
"Du bist das tägliche KI-Orakel einer ADHS-Medikamenten-App. "
|
||||
"Passiv-aggressiv, trocken, max 4 Sätze auf Deutsch. Keine medizinischen Ratschläge."
|
||||
)
|
||||
|
||||
@@ -93,8 +93,16 @@ def _motivation_key(day: str) -> str:
|
||||
return f"motivation:v2:{day}"
|
||||
|
||||
|
||||
def _oracle_key(week: str) -> str:
|
||||
return f"oracle:v2:{week}"
|
||||
def _oracle_key(day: str) -> str:
|
||||
return f"oracle:v3:{day}"
|
||||
|
||||
|
||||
async def _cached_oracle(db: aiosqlite.Connection, day: str) -> str | None:
|
||||
cached = await _get_cache(db, _oracle_key(day))
|
||||
if cached:
|
||||
return cached
|
||||
week = datetime.strptime(day, "%Y-%m-%d").strftime("%Y-W%W")
|
||||
return await _get_cache(db, f"oracle:v2:{week}")
|
||||
|
||||
|
||||
async def _cached_motivation(db: aiosqlite.Connection, day: str) -> str | None:
|
||||
@@ -151,16 +159,16 @@ async def get_roast_of_the_day(db: aiosqlite.Connection, tz: ZoneInfo) -> dict[s
|
||||
async def generate_oracle(
|
||||
db: aiosqlite.Connection,
|
||||
tz: ZoneInfo,
|
||||
week: str | None = None,
|
||||
day: str | None = None,
|
||||
*,
|
||||
force: bool = False,
|
||||
) -> dict[str, Any]:
|
||||
week = week or datetime.now(tz).strftime("%Y-W%W")
|
||||
key = _oracle_key(week)
|
||||
day = day or datetime.now(tz).strftime("%Y-%m-%d")
|
||||
key = _oracle_key(day)
|
||||
if not force:
|
||||
cached = await _get_cache(db, key)
|
||||
cached = await _cached_oracle(db, day)
|
||||
if cached:
|
||||
return {"text": cached, "source": "cache", "week": week}
|
||||
return {"text": cached, "source": "cache", "day": day}
|
||||
|
||||
stats = await compute_stats(db)
|
||||
days_active = stats["days_active"]
|
||||
@@ -178,7 +186,7 @@ async def generate_oracle(
|
||||
else ""
|
||||
)
|
||||
prompt = (
|
||||
f"Wöchentlicher Orakel-Report. {context}{caveat}"
|
||||
f"Täglicher Orakel-Report für heute. {context}{caveat}"
|
||||
f"Streak: {stats['streak']} Tage. "
|
||||
f"Compliance über {window} Tag(e): {stats['compliance_percent']}%. "
|
||||
f"Genommen gesamt: {stats['total_taken']}."
|
||||
@@ -197,17 +205,17 @@ async def generate_oracle(
|
||||
else:
|
||||
source = "ai"
|
||||
await _set_cache(db, key, text)
|
||||
logger.info("Generated oracle for %s (%s)", week, source)
|
||||
return {"text": text, "source": source, "week": week}
|
||||
logger.info("Generated daily oracle for %s (%s)", day, source)
|
||||
return {"text": text, "source": source, "day": day}
|
||||
|
||||
|
||||
async def get_oracle(db: aiosqlite.Connection, tz: ZoneInfo) -> dict[str, Any]:
|
||||
week = datetime.now(tz).strftime("%Y-W%W")
|
||||
cached = await _get_cache(db, _oracle_key(week))
|
||||
day = datetime.now(tz).strftime("%Y-%m-%d")
|
||||
cached = await _cached_oracle(db, day)
|
||||
if cached:
|
||||
return {"text": cached, "source": "cache", "week": week}
|
||||
return {"text": cached, "source": "cache", "day": day}
|
||||
return {
|
||||
"text": "Das Orakel bereitet sich vor. Schau später nochmal rein.",
|
||||
"source": "pending",
|
||||
"week": week,
|
||||
"day": day,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user