סשן 0028 — VitClip v0.4 → v0.5

קטגוריות · חיפוש · פוש לאקוסיסטם · צ׳אט ג׳מיני
25.5.2026 · backend rev 00010 · APK release 2001
סטטוס פריסה
Backend Cloud Run
vitclip-backend-00010-p7b · europe-west1
Vertex AI
gemini-2.5-flash @ us-central1
APK
app-arm64-v8a-release.apk · 17.7MB · Firebase App Distribution
משתמש בודק
elyash7@gmail.com
v0.4 — הבסיס שהוטמע
🏷️
קטלוג קטגוריות + תתי-קטגוריות
8 קטגוריות-על מובנות: מתכונים · כלי AI · אדריכלות · טכנולוגיה · בריאות וכושר · פיננסים · מוטיבציה · אקוסיסטם Vitruvius. פיננסים כולל מניות / פנסיה / קופ״ג והשתלמות / טיפים. סך הכל ~35 תתי-קטגוריות.
שיוך אוטומטי + ידני
Gemini מחזיר categoryId בתשובת הסיכום ע״פ הרשימה. ה-chip בראש מסך הסיכום פתוח לשינוי ידני. אייקון auto_awesome מציין שהשיוך מ-AI ולא ננעל.
🔍
חיפוש + פילטר קטגוריה
שורת חיפוש case-insensitive על title / summary / bullets / transcript / URL. רצועת chips אופקית לסינון לפי קטגוריית-על.
📐
מסך ניהול קטגוריות
אייקון category ב-AppBar → CRUD לקטגוריות מותאמות (יצירה / עריכה / מחיקה עם אזהרת usage). מובנות נעולות עם lock_outline. בורר אייקון + צבע מתוך allowlist.
💡
פוש + באנר לטיפים לאקוסיסטם
כש-Gemini מזהה תוכן ניתן-להטמעה ב-Vitruvius RTL / VitPMIS / VitVital / VitSiteReport / VitClip — מודלק push בעברית "זיהינו טיפ ל-X". במסך הסיכום באנר עם prompt מנוסח + כפתור "העתק ל-Claude Code".
🎵
Spotify URL detection
מזוהה ב-allowlist. עקב DRM, yt-dlp לא מסוגל להוריד. החזרה: הודעה ספציפית לפי סוג (track / playlist / album / episode) בעברית.
v0.5 — מה הוסיף הסשן הזה
🏷️
שיוך מרובה לקטגוריות
Summary.categoryIdSummary.categoryIds: List<String>?. ה-picker עבר ל-checkbox-style. הסיכום מציג +N ליד הקטגוריה הראשית. ה-filter בעמוד הראשי הוא "any of" — סיכום מופיע אם אחת מהקטגוריות שלו תואמת.
Migration: fromJson קורא גם את ה-categoryId הישן וממיר ל-1-element list. אין שבירה של data v0.4.
🤖
צ׳אט ג׳מיני בכל מסך סיכום
בתחתית כל סיכום: שורת קלט קבועה + בועות שיחה. ChatClient.askAboutSummary() שולח את הסיכום המלא (title + summary + bullets + transcript) + ההיסטוריה. ההודעות נשמרות ב-Summary.chatHistory ועוברות persistence ב-HistoryStore.
צ׳אט גלובלי על כל הסיכומים
אייקון auto_awesome ב-AppBar הראשי → מסך נפרד. שולח עד 150 הסיכומים האחרונים (ללא transcripts לחיסכון בטוקנים). היסטוריית הצ׳אט שמורה ב-GlobalChatStore (SharedPreferences). 4 שאלות מוצעות במסך הריק.
📺
מרכוז מסך הטעינה
עטיפת ה-Column של _LoadingState ב-Center + mainAxisSize.min. עכשיו ה-spinner + הטקסטים ממורכזים אנכית ואופקית באמת.
🚫
הודעת Instagram תוקנה
classifyYtdlpError מקבל עכשיו url. אם המקור Instagram וה-stderr מזכיר "sign in" / "login_required" → ההודעה היא: "Instagram חוסם הורדה אוטומטית מהענן. נסה לשתף מ-Facebook/TikTok/YouTube." במקום הסתום "הסרטון פרטי".
קבצים שנוספו / עודכנו

קבצים חדשים:

  • lib/models/category.dart — טקסונומיה + אייקון/צבע allowlist v0.4
  • lib/services/category_store.dart — CRUD לקטגוריות מותאמות v0.4
  • lib/services/ecosystem_notifier.dart — local notifications wrapper v0.4
  • lib/services/chat_client.dart — לקוח /chat עם שני מצבים v0.5
  • lib/services/global_chat_store.dart — היסטוריית צ׳אט גלובלי v0.5
  • lib/widgets/chat_panel.dartChatMessageList + ChatInputBar v0.5
  • lib/screens/categories_screen.dart — ניהול קטגוריות v0.4
  • lib/screens/global_chat_screen.dart — צ׳אט על כל הסיכומים v0.5

קבצים מעודכנים:

  • backend/index.js — Gemini prompt עם categoryId/ecosystemProject/ecosystemTipForClaude + endpoint /chat + Spotify handling + Instagram error
  • lib/models/summary.dartcategoryIds + ChatMessage + ecosystemTipForClaude + migration
  • lib/screens/home_screen.dart — חיפוש + filter chips + multi-category match + צ׳אט גלובלי
  • lib/screens/summary_screen.dart — באנר + multi-picker + צ׳אט מוטמע + מרכוז loading
  • android/app/build.gradle.kts — core library desugaring (חובה ל-flutter_local_notifications)
  • AndroidManifest.xmlPOST_NOTIFICATIONS
מגבלות ידועות
  • Instagram / YouTube מענןIP של Cloud Run נחסם מדי פעם. הפתרון האמיתי דורש --cookies עם session של חשבון אישי. לא קריטי ל-MVP — פייסבוק/TikTok יציבים.
  • Spotify — DRM. yt-dlp לא תומך נטיב. עתידי: yt-dlp-spotify plugin + Spotify Developer credentials.
  • צ׳אט גלובלי — מוגבל ל-150 סיכומים אחרונים, ללא transcripts. אם יידרש חיפוש בתוך הרבה תמלולים — RAG/embedding.
  • חתימת APK — עדיין debug keystore. מתאים לאישי, לא לפתיחה לאחרים.
לבדיקה ידנית במכשיר
  1. שתף Reel מפייסבוק → ה-chip קטגוריה נוצר אוטומטית. לחץ עליו → multi-picker עם checkboxes. בחר 2-3 → שמור → תראה +N בכרטיס בעמוד הראשי.
  2. בתחתית מסך הסיכום: שאל את ג׳מיני "תן לי רשימת קניות" או "איך לפשט את זה?". ההיסטוריה נשמרת — חזור למסך, פתח שוב, היא שם.
  3. AppBar ראשי → auto_awesome → צ׳אט גלובלי. לחץ על שאלה מוצעת.
  4. שתף וידאו מ-Instagram → אם נכשל, ההודעה החדשה אמורה להופיע: "Instagram חוסם הורדה אוטומטית מהענן..."
  5. בעת שיתוף — בדוק שה-spinner וטקסט הטעינה ממורכזים אנכית.