feat: guided light meditation + Edge TTS neural voice audio

- Add continuous guided light-body-scan meditation (16 segments, 97% coverage)
- Edge TTS API endpoint with Xiaoxiao neural voice at -40% rate
- Pre-generated chime WAVs and guidance MP3s in public/audio/
- Mute toggle in practice page, sequenced non-overlapping audio
- Fix middleware to serve /audio and /api/audio/tts without auth
- All LLM output localized to Chinese; fix blank home/settings pages
- DeepSeek API compat: json_object, increased max_tokens
- Analytics, cron reminders, onboarding flow fixes

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
jackyu66git
2026-06-17 20:08:29 +08:00
co-authored by Claude Opus 4.7
parent 00db3f6c96
commit 6530b20172
38 changed files with 1371 additions and 182 deletions
+14
View File
@@ -57,6 +57,8 @@ model UserState {
streakDays Int @default(0) @map("streak_days")
totalSessionsCompleted Int @default(0) @map("total_sessions_completed")
onboardingCompleted Boolean @default(false) @map("onboarding_completed")
onboardingVariant String? @map("onboarding_variant")
timezone String @default("Asia/Shanghai")
lastSessionDate DateTime? @map("last_session_date")
updatedAt DateTime @updatedAt @map("updated_at")
@@ -65,6 +67,18 @@ model UserState {
@@map("user_states")
}
model AnalyticsEvent {
id String @id @default(uuid())
userId String @map("user_id")
event String
metadata String @default("{}")
createdAt DateTime @default(now()) @map("created_at")
@@index([userId, createdAt])
@@index([event, createdAt])
@@map("analytics_events")
}
model Session {
id String @id @default(uuid())
userId String @map("user_id")