ארכיטקטורה
סקירת המערכת, מודל הנתונים, התמיכה בריבוי מטבעות ומודל האימות.
סקירת המערכת
ממשק בדפדפן --> אפליקציית Next.js --------------------> Postgres (RLS)
לקוחות תוכנה --> API Gateway (REST) --> SQL Lambda -------^
לקוחות MCP --> API Gateway (HTTP) --> MCP Lambda -------^
שירות אימות (OTP + OAuth) --------------------------------^
תהליך רקע (איסוף שערי חליפין) ----------------------------^
שישה רכיבים, מסד נתונים אחד:
- web — אפליקציית Next.js שמספקת את לוחות הבקרה בממשק המשתמש ואת נתיבי ה-API
- auth — כניסה עם קוד חד-פעמי בדוא"ל ואתחול סוכנים בדומיין האימות
- sql-api — פונקציית AWS Lambda שמאחורי API Gateway עבור לקוחות תוכנה
- mcp — פונקציית AWS Lambda ו-HTTP API ייעודיים ב-API Gateway עבור נקודת הקצה המתארחת של MCP
- worker — מושך מדי יום שערי חליפין מ-ECB, CBR ו-NBS
- Postgres — מקור האמת היחיד, עם אבטחה ברמת שורה
מודל הנתונים
- ledger_entries — רשומה אחת לכל תנועה בחשבון (הכנסה, הוצאה, העברה)
- budget_lines — תאי תקציב במבנה של הוספה בלבד, שבו הרשומה האחרונה שנכתבה היא הקובעת
- budget_comments — הערות במבנה של הוספה בלבד, שמקושרות לתאי תקציב
- workspace_settings — מטבע הדיווח והגדרות ברמת סביבת העבודה
- account_metadata — מטא-נתונים לכל חשבון, כגון סיווג נזילות
- exchange_rates — שערי חליפין יומיים שמשמשים להמרה בזמן השאילתה
- workspaces / workspace_members — בידוד בין סביבות עבודה מרובות
- accounts — תצוגה שמחושבת מתוך רשומות
ledger_entries
עבודה עם מטבעות מרובים
כל הסכומים נשמרים במטבע המקורי שלהם. ההמרה למטבע הדיווח מתבצעת בזמן הקריאה באמצעות צירופי SQL מול exchange_rates. אין המרה מוקדמת שגורמת לאובדן מידע.
אימות
שני מצבים דרך משתנה הסביבה AUTH_MODE:
none— ללא אימות, עם סביבת עבודה מקומית יחידהcognito— אימות בדוא"ל עם קוד חד-פעמי, ללא סיסמה, דרך AWS Cognito ועם הרשמה פתוחה
עבור לקוחות תוכנה, נקודת הגילוי הציבורית היא GET /v1/. תהליך ההצטרפות של סוכנים משתמש בקוד חד-פעמי שנשלח בדוא"ל דרך דומיין האימות, מחזיר ApiKey ארוך-טווח, ולאחר מכן מריץ SQL דרך ממשק ה-API ללקוחות תוכנה שמאחורי API Gateway.
לקוחות MCP מתחברים בנפרד אל https://mcp.expense-budget-tracker.com/mcp. HTTP API ייעודי ב-API Gateway ופונקציית MCP Lambda מטפלים במסלול הזה, ואילו ההרשאה האינטראקטיבית מתבצעת באמצעות OAuth בדפדפן בדומיין האימות.
כל משתמש מקבל סביבת עבודה מבודדת. מדיניות RLS בודקת חברות בכל שאילתה, כולל בקשות SQL שמגיעות דרך ממשק ה-API ללקוחות תוכנה.