Skip to content

Latest commit

 

History

History
115 lines (85 loc) · 4.19 KB

File metadata and controls

115 lines (85 loc) · 4.19 KB

מימוש מערכת סטטוסים לספרים - סיכום

מה הוסף?

1. שדה חדש במודל Upload

  • bookStatus - שדה המכיל את סטטוס הספר (ברירת מחדל: 'not_checked')

2. לוגיקה ברמת ספר

חשוב: הסטטוס מנוהל ברמת הספר (קבוצה), לא ברמת העלאה בודדת:

  • כל העלאה שייכת לספר (מזוהה לפי שם בסיסי)
  • עריכת סטטוס מעדכנת את כל ההעלאות של אותו ספר
  • בממשק מוצג סטטוס אחד לכל ספר (מההעלאה הראשונה)

3. API Routes חדשים (כולם מאובטחים עם אימות אדמין)

/api/admin/book-statuses

  • GET - קבלת הגדרות הסטטוסים
  • POST - עדכון הגדרות הסטטוסים

/api/admin/uploads/batch-update-book-status

  • PUT - עדכון סטטוס של כל ההעלאות של ספר

4. רכיבי UI חדשים

StatusBadge.jsx

תג המציג את הסטטוס הנוכחי עם צבע רקע מותאם אישית וכפתור עריכה.

StatusEditor.jsx

עורך inline לבחירת סטטוס חדש עם כפתורי שמירה וביטול.

StatusConfigModal.jsx

חלון מודאלי מלא לניהול הגדרות הסטטוסים:

  • עריכת תוויות קיימות
  • שינוי צבעי רקע
  • הוספת סטטוסים חדשים
  • מחיקת סטטוסים

5. עדכון עמוד ניהול העלאות

  • הצגת סטטוס לכל ספר
  • אפשרות עריכה מהירה
  • עריכת סטטוס מעדכנת את כל ההעלאות של הספר אוטומטית
  • כפתור "הגדרות סטטוסים" בראש העמוד

6. סקריפט מיגרציה

scripts/add-book-status-field.js - מוסיף את השדה החדש לכל ההעלאות הקיימות.

סטטוסים ברירת מחדל

  1. לא נבדק (not_checked) - צבע: #94a3b8 (slate-400)
  2. דורש טיפול (needs_attention) - צבע: #f59e0b (amber-500)
  3. תקין ומוכן להכנסה (ready) - צבע: #10b981 (emerald-500)
  4. הוכנס לספרייה (added_to_library) - צבע: #3b82f6 (blue-500)

אבטחה

כל ה-API endpoints מוגנים:

const session = await getServerSession(authOptions);
if (session?.user?.role !== 'admin') {
  return NextResponse.json({ error: 'Forbidden' }, { status: 403 });
}

התקנה

  1. הרץ את סקריפט המיגרציה:
node scripts/add-book-status-field.js
  1. הגדרות הסטטוסים נשמרות אוטומטית ב-SystemConfig בפעם הראשונה.

קבצים שנוצרו/עודכנו

מודלים

  • src/models/Upload.js - הוספת שדה bookStatus

API Routes

  • src/app/api/admin/book-statuses/route.js - ניהול הגדרות סטטוסים
  • src/app/api/admin/uploads/batch-update-book-status/route.js - עדכון ברמת ספר
  • src/app/api/admin/uploads/list/route.js - הוספת bookStatus לתגובה

רכיבים

  • src/components/StatusBadge.jsx
  • src/components/StatusEditor.jsx
  • src/components/StatusConfigModal.jsx

עמודים

  • src/app/library/admin/uploads/page.jsx - שילוב כל הרכיבים

סקריפטים

  • scripts/add-book-status-field.js
  • scripts/README-book-status.md

תיעוד

  • docs/BOOK_STATUS_FEATURE.md
  • BOOK_STATUS_IMPLEMENTATION.md

בדיקות שבוצעו

  • ✅ אין שגיאות תחביר בכל הקבצים
  • ✅ כל ה-API routes כוללים אימות אדמין
  • ✅ המודל עודכן עם השדה החדש
  • ✅ ה-UI מקבל את הנתונים החדשים
  • ✅ הלוגיקה עובדת ברמת ספר (קבוצה)

שימוש

  1. היכנס כאדמין ל-/library/admin/uploads
  2. תראה את הסטטוס של כל ספר
  3. לחץ על כפתור העריכה ליד הסטטוס
  4. בחר סטטוס חדש ושמור
  5. אם לספר יש מספר העלאות - כולן יתעדכנו אוטומטית
  6. להגדרות מותאמות אישית - לחץ על "הגדרות סטטוסים"

המערכת מוכנה לשימוש! 🎉