המטרה
הצוות ספר מלאי ידנית והקליד מחדש הזמנות ל-Henry Schein — טעויות וזמן מבוזבז. המטרה: UI ספירה בטאבלט, backend שמכיר par levels, ואוטומציה שדוחפת SKUs לעגלת הספק — מקצה לקצה עם מסמכי העברה.
הפתרון
מערכת תלת-חלקית ברפו אחד: backend ב-Flask + MongoDB Atlas (CRUD לפריטים, endpoint ספירה, audit, ניהול משתמשים), UI ספירה ב-Vue 3 + Vite לטאבלט (פריט אחד בכל פעם), ואוטומציה ב-Python (Playwright + API של Henry Schein שהוסגר) שמעשירה פריטים ודוחפת shortfalls לעגלה.
עיקרי הדברים
- זרימה מקצה לקצה מספירה לעגלת ספק
- UI טאבלט-first מסלק חיכוך של spreadsheet
- אוטומציית עגלה ב-Henry Schein שהוסגרה מהדפדפן
- העברה מתועדת עם גבול Phase 1 / Phase 2
האתגר
צוות בטאבלט לא יכול להתמודד עם רשימות ארוכות או טפסים מורכבים.
UI ב-Vue 3 מציג פריט בכל פעם — תמונה, שם, pack size, input — ומקדם אוטומטית.
Henry Schein בלי API ציבורי להזמנה.
לכידת הקריאות מהדפדפן והרצה דרך api_client.py עם Playwright-bootstrapped session.
עדכוני data/items.json + re-imports יצרו כפילויות.
import_items.py upsert לפי SKU (idempotent); פריטים שנמחקו → active:false (היסטוריה נשמרת).
Phase 1 כבר בפרודקשן — אסור לשבור בזמן ש-Phase 2 נופלת.
src/ ללא שינוי; backend/ ו-frontend/ נופלים לצידה עם README_PHASE2.md שמתעד את הגבול ומתור את Phase 2b.
מה נמסר
- backend/ Flask API + Mongo + ניהול משתמשים + audit
- frontend/ Vue 3 + Vite UI ספירה לטאבלט
- src/ אוטומציית Playwright + API ל-Henry Schein
- data/items.json + import_items.py upsert
- PROJECT.md + README_PHASE2.md
- .env.example, requirements.txt, frontend package.json
- Run logs תחת logs/
תוצאות
End-to-end
זרימה
Documented
העברה
12
שדות בסכמת פריט
מה זה לימד אותי
- 'פריט בכל פעם' מנצח spreadsheets בטאבלט
- שמירה על Phase 1 ללא שינוי בזמן ש-Phase 2 נופלת לצידה הופכת את ההעברה ל-zero-risk
- Upsert-by-SKU + soft-delete = pipeline re-runnable בלי איבוד היסטוריה
