Open Net Worth
Open Net Worth is an open-source personal AI wealth assistant you run yourself: one ledger for your whole financial life, worked by an AI agent you control.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
יישום דפדפן פרטי לניתוח דוחות בנק וכרטיסי אשראי, מעקב אחר תקציב, תחזית תזרים והמלצות פעולה. הקבצים נקראים מקומית בדפדפן ואינם נשלחים לשרת.Read the full README ↗
יישום דפדפן פרטי לניתוח דוחות בנק וכרטיסי אשראי, מעקב אחר תקציב, תחזית תזרים והמלצות פעולה. הקבצים נקראים מקומית בדפדפן ואינם נשלחים לשרת.
כל הסוכנים מחושבים מחדש מהמידע המקומי ואינם שולחים תנועות לשירות חיצוני. התוצאות הן אינדיקציות לבדיקה ולא קביעות חשבונאיות.
האלגוריתמים הטהורים והטיפוסים שלהם נמצאים ב־fe/src/financial-agents.ts. כל מנוע מממש FinancialAgentStrategy, והמחלקה FinancialAgentsOrchestrator מקבלת את האסטרטגיות ב־dependency injection ומחזירה תוצאה טיפוסית אחת; runFinancialAgents הוא Facade תואם לשכבת התצוגה. RuleBasedTransactionCategorizer מרכז את סדר הקדימויות: שיוך ידני, כלל מאושר, זיהוי הכנסה ולבסוף „אחר”. העברות בין חשבונות ומשיכה לחשבון מסווגות כ״חיסכון והעברות״, ומזונות היוצאים מסווגים בקטגוריה משלהם; מזונות שנכנסים הם הכנסה; תיאור לא מספק אינו מסווג בניחוש. שכבת התצוגה והאישור נמצאת ב־fe/src/app.ts. כלל שנלמד נשמר במערך rules; תקרת תקציב שאושרה נשמרת ב־budgets. הממצאים והזדמנויות החיסכון נגזרים מחדש ואינם נשמרים כמצב נוסף.
נדרשים Node.js, npm ו־Python 3.12.
npm install
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements-dev.txt
npm run build # כולל strict typecheck לגבולות החדשים
npm run typecheck:strict # בדיקת strict עצמאית
להרצת האתר דרך שרת מקומי:
ruby -run -ehttpd . -p 8765
לאחר מכן פותחים את http://127.0.0.1:8765/mazan-habait.html.
npm run debug
הפקודה מריצה את המהדר במצב --watch עם source maps ומעלה שרת סטטי על פורט 8765 (אם כבר רץ שרת על הפורט — למשל זה שנשאר מבדיקות הדפדפן — היא משתמשת בו במקום לנסות להאזין שוב). אפשר לשנות פורט באמצעות APP_PORT.
ה־source maps הם העיקר: בלעדיהם הדפדפן מציג את ה־JavaScript המהודר שב־dist/, ואי אפשר לשים breakpoint בקוד ה־TypeScript שנכתב בפועל. מכיוון שהשרת מגיש את שורש הפרויקט, dist/app.js.map מפנה אל fe/src/app.ts והדפדפן טוען את המקור המקורי — ב־DevTools → Sources → 127.0.0.1:8765 → fe/src/. שמירה של קובץ מהדרת מחדש; מספיק לרענן את הדף.
נקודות עצירה שימושיות לייבוא דוחות: handleFiles ב־fe/src/app.ts לבדיקת הקובץ שנבחר, readWorkbook ב־fe/src/spreadsheet-reader.ts כדי לראות לאיזה פורמט הקובץ נותב, ו־headerMap ב־fe/src/credit-card-importer.ts כדי לראות אילו עמודות זוהו.
קובצי ה־.map נשארים ב־dist/ בלבד, ש־gitignore מתעלם ממנו, ו־prepare-vercel-output מסנן אותם בעת ההעתקה ל־public/ כדי שקוד המקור לא ייארז לפריסה. הסינון מתבצע בהעתקה ולא במחיקה מ־dist/, כדי ש־npm run build לא ישבור סשן ניפוי שגיאות שרץ במקביל. עם זאת npm run build מהדר בלי source maps ולכן מסיר את הפניות ה־sourceMappingURL; כדי לחזור לנפות שגיאות מריצים שוב npm run debug.
לשני הצדדים אותו פורמט רשומה — שורת JSON אחת לכל אירוע — כדי שאפשר יהיה לקרוא לוג של דפדפן ולוג של שרת יחד, למיין לפי ts ולהבחין ביניהם לפי source:
{"ts":"2026-08-28T09:15:00.000Z","level":"info","source":"web","event":"report.read","context":{"format":"xlsx","sheets":1,"rows":42}}
בדפדפן אין מערכת קבצים, ולכן הלוג הוא חוצץ טבעתי בזיכרון בגודל קבוע (500 רשומות; הישנות נדחקות החוצה) שגם נכתב ל־console. הוא זמין כ־window.__log, ומייצאים אותו מה־DevTools:
copy(__log.toText()) // כל הרשומות כ־JSON Lines, מוכן להדבקה בדוח תקלה
__log.setLevel('debug')
This is the beginning of the README. Read the rest at the original. Read the full README ↗