CH5-001 · מיפוי As-Is, מקורות אמת ו-Data Inventory
גרסה 0.1 · 8.8.2026 · המפרט הראשון של CH5 — ללא שינוי קוד במערכת
✅ Approved for Implementation — Version 0.1
מפרט CH5-001 אושר לביצוע. הוא המפרט הראשון מתוך ששת מפרטי CH5. מטרתו: יצירת תמונת מצב מאושרת של הנתונים והזרימות הקיימות — ללא כל שינוי קוד במערכת. המפרט כולל מיפוי מלא של Entities, מקורות נתונים, נתיבי קריאה/כתיבה, Source of Truth, Retention ו-Gap Analysis מול תנאי הקבלה של פרק 5. לאחר ביצוע והפקת דוח ביצוע, ניתן יהיה לעבור ל-CH5-002 (Asset Master).
עיקרון מחייב: אין שינוי קוד
מפרט זה אינו משנה קוד, Schema, Functions, Workflows או Cron. כל העבודה היא תיעוד ומיפוי בלבד. התוצר הוא Data Inventory מאושר שמפרטי CH5 הבאים (002–006) יישענו עליו.
פרק 5 נעול כ-Version 1.0 ומגדיר דרישות ארכיטקטוניות מחייבות לנתונים, זיכרון וידע. אולם, אין כיום תמונת מצב מאושרת של הנתונים והזרימות הקיימות בפועל. ללא מיפוי As-Is מלא — Entities, שדות, מקורות נתונים, נתיבי קריאה/כתיבה, Source of Truth ו-Retention — אין בסיס בטוח לשינוי Schema, ליצירת Asset Master או לקביעה מהו Source of Truth בפועל לכל תחום. כל שינוי מבני ללא מיפוי זה מסתמך על הנחות ולא על ראיה.
ליצור Data Inventory גרסאי ומאושר הכולל: מפת כל ה-Entities והשדות, מפת מקורות הנתונים הפעילים (ספקים, תדירויות, Cron, Adapters, Fallback), מפת נתיבי קריאה/כתיבה לכל תחום (Candidate, Analysis, Trade, Order, Fill, Position, Message), מטריצת Source of Truth ובעלות, ו-Gap Analysis מול 18 תנאי הקבלה של פרק 5. כל זאת ללא כל שינוי קוד, Schema, Rename או Cron. התוצאה היא נקודת ייחוס מאושרת שכל מפרטי CH5 הבאים יישענו עליה.
מיפוי כל ה-Entities במערכת: שמות, שדות, סוגים, Enums, ברירות מחדל, Required ו-RLS (אם קיים).
מיפוי כל מקורות הנתונים הפעילים: ספקים (Yahoo Finance, LLM, Internal), תדירויות, Cron, Adapters ונתיבי Fallback.
מיפוי כל נתיבי הקריאה והכתיבה עבור: Candidate/Trade, Analysis/AnalysisOutput, Order/Execution, Fill, Position/Portfolio, Message, Alert, AgentConfig, AgentSnapshot, SystemSettings.
זיהוי Source of Truth בפועל לכל תחום נתונים: מחיר נכס, פוזיציה, מזומן זמין, החלטה, הגדרות מערכת, תצורת סוכן, היסטוריית פעילות.
זיהוי כפילויות, חפיפות או בעלות לא ברורה בין ישויות (למשל: Trade vs. Portfolio, AgentConfig vs. AgentProfile vs. AgentSnapshot).
מיפוי Retention פעיל: אילו נתונים נשמרים, לכמה זמן, מה נמחק (למשל: cleanupOldMessages — 30 יום), ומה נשמר ללא הגבלה.
מיפוי הרשאות בפועל: מי יכול לקרוא/כתוב/מחוק כל Entity (RLS והרשאות מובנות).
מיפוי ייצוא, גיבוי ו-Restore: מה ניתן לייצא, איך מגבים, איך משחזרים.
Gap Analysis מול 18 תנאי הקבלה של פרק 5 (5.23): דירוג קריטיות, סיכון, והפניה למפרט CH5 המטפל.
Baseline בדיקות רגרסיה: הפעלת בדיקות קבלה קיימות (CH3, CH4) ותיעוד התוצאות כ-Baseline לפני כל שינוי.
אין שינוי Schema — לא מוסיפים, לא משנים ולא מוחקים שדות ב-Entities קיימים.
אין Rename — לא משנים שמות שדות, Entities או Functions.
אין שינוי Cron — לא משנים תדירויות או תזמונים של Workflows קיימים.
אין להסיק שקוד שאינו מתועד אינו בשימוש; כל נתיב נבדק בראיה מלאה.
אין למחוק שדה או Entity שנראים מיותרים לפני בדיקת צרכנים והיסטוריה.
אין לבצע שינוי עסקי, בחירת ספק חדש או הקמת Asset Master במסגרת מפרט זה.
הנתונים להלן הם Baseline ראשוני המבוסס על המידע הקיים ודורשים אימות מול ייצוא Schema, קוד פעיל וראיות ביצוע. אין לראות בהם Data Inventory מאושר לפני השלמת CH5-001.
| Entity | שדות | כותבים | קוראים | Source of Truth | הערה |
|---|---|---|---|---|---|
| Trade | 42+ | runAgentScan, executeTrade, rejectTrade | Dashboard, Trades, Portfolio, TaxReports | סטטוס עסקה (לא פוזיציה) | גרסאי חלקית ברמת מעברי סטטוס (status_version, CH3-002); טרם אומתה היסטוריה מלאה לכל השדות העסקיים |
| Portfolio | 24 | executeTrade, refreshPortfolioPrices | Dashboard, Portfolio, Trades | פוזיציה נוכחית | דריסת current_price בכל refresh |
| AgentConfig | 18 | captureAgentBaseline, Settings | runAgentScan, refreshPortfolioPrices, Agents | תצורת סוכן | מחזיק תצורה נוכחית ו-Hash; ההיסטוריה נשמרת ב-AgentSnapshot (CH4-001). יש לאמת שאין פער בין השניים |
| AgentSnapshot | 12 | captureAgentBaseline | Ch4Spec001, rollback | תצלום תצורה היסטורי | Append-Only (CH4-001) |
| SystemSettings | 30+ | Settings, initCH4 | Dashboard, runAgentScan, executeTrade | הגדרות מערכת גלובליות | סטטוס יחיד (ללא גרסאות) |
| MarketData | 13 | refreshIndices, runAgentScan | Markets, Dashboard, Charts | מחיר שוק עדכני | לא גרסאי; נדרס בכל update |
| Message | 11 | runAgentScan, executeTrade, cleanupOldMessages | Messages, Dashboard | יומן אירועים | Retention: 30 יום (cleanupOldMessages) |
| Alert | 16 | runAgentScan, refreshPortfolioPrices, Alerts page | Alerts, Dashboard | התרעות פעילות | סטטוס: active/acknowledged/dismissed |
| AnalysisOutput | 22 | runAgentScan | Agents, Dashboard | פלט ניתוח סוכן | גרסאי דרך profile_version |
| AgentLog | 10 | runAgentScan, refreshPortfolioPrices | Agents, Dashboard | יומן פעילות סוכנים | לא גרסאי |
| AgentProfile | 20 | initCH4 | Agents, Ch4Review | פרופיל סוכן (חוזה) | גרסאי דרך agent_version |
| WatchList | 10 | runAgentScan | Markets | רשימת מעקב | לא גרסאי |
| BrokerageConnection | 11 | Settings | Settings, Trades | חיבור ברוקר | סטטוס: connected/disconnected |
| BankConnection | 10 | Settings | Settings, Trades | חיבור בנק | סטטוס: connected/disconnected |
| CommissionSchedule | 9 | Settings | executeTrade, TaxReports | מבנה עמלות | לא גרסאי |
| TaxReport | 12 | TaxReports page | TaxReports | דוח מס שנתי | סטטוס: draft/generated/submitted |
| MarketRegion | 12 | Settings | Markets, runAgentScan | הגדרות אזור מסחר | לא גרסאי |
| InviteToken | 7 | manageInvite, activateTrial | Settings, TrialLock | הזמנות משתמשים | סטטוס: pending/activated/expired/locked |
| מקור | סוג | סטטוס | נתונים | תדירות | Fallback | סיכון |
|---|---|---|---|---|---|---|
| Yahoo Finance (via fetchChartCandles/searchSymbols) | חיצוני — מקור מידע | פעיל | מחירי שוק, נרות, סמלים | On-demand | אין — כשל מוביל לנתונים חסרים | עיכוב בנתוני TASE |
| LLM (InvokeLLM — gemini_3_flash) | שירות עיבוד/מודל — אינו מקור אמת | פעיל | ניתוח שוק, המלצות (פלט מודל; הרשומה המאוחסנת היא AnalysisOutput) | לפי AGENT_INTERVAL_MINUTES | NO_OPINION | תלות בזמינות מודל; אינו Source of Truth |
| Internal (Base44 DB) | פנימי — מקור אמת | פעיל | כל Entities | זמן אמת | — | נקודת כשל יחידה |
| Stripe (via createCheckoutSession) | חיצוני — מקור מידע | פעיל | תשלומים, מנויים | On-demand | אין | תלות בזמינות Stripe |
| תחום | Source of Truth | צרכנים | פער | מפרט CH5 |
|---|---|---|---|---|
| מחיר נכס עדכני | MarketData.price | Dashboard, Charts, runAgentScan | נדרס בכל update; אין Raw/Canonical | CH5-004 |
| מחיר קנייה | Portfolio.avg_price | Portfolio, TaxReports | נדרס בכל buy; אין היסטוריית מחירים | CH5-005 |
| פוזיציה נוכחית | Portfolio.quantity | Dashboard, Trades, refreshPortfolioPrices | נדרס; אין יומן פוזיציה גרסאי | CH5-005 |
| מזומן זמין | SystemSettings.available_cash | Dashboard, executeTrade, runAgentScan | סטטוס יחיד; אין היסטוריית יתרה | CH5-005 |
| סטטוס עסקה | Trade.status + status_version | Trades, executeTrade, rejectTrade | גרסאי חלקית (status_version, CH3-002); טרם אומתה היסטוריה מלאה | — |
| החלטת השקעה | Trade (score, reasoning, agent_name) | Trades, Dashboard | אין ישות Decision נפרדת (CH3-005) | CH5-003 |
| תצורת סוכן | AgentConfig | runAgentScan, refreshPortfolioPrices | מחזיק תצורה נוכחית ו-Hash; ההיסטוריה ב-AgentSnapshot. דורש אימות שאין פער | — |
| תצלום תצורה | AgentSnapshot | rollback, Ch4Spec001 | Append-Only (CH4-001); דורש אימות מול AgentConfig הנוכחי | — |
| הגדרות מערכת | SystemSettings | Dashboard, executeTrade, runAgentScan | סטטוס יחיד; אין גרסאות | CH5-005 |
| יומן אירועים | Message | Messages, Dashboard | Retention 30 יום; אינו Append-Only טהור | CH5-005 |
| התרעות | Alert | Alerts, Dashboard | סטטוס יחיד; אין היסטוריית שינויים | CH5-005 |
| פלט ניתוח | AnalysisOutput | Agents, Dashboard | גרסאי דרך profile_version; חלקי | CH5-003 |
| Entity | מדיניות | מנגנון | הערה |
|---|---|---|---|
| Message | 30 יום | cleanupOldMessages workflow (03:00) | מחיקה פיזית — מאומת |
| Trade | לא זוהתה מדיניות מחיקה; תקופת השמירה אינה מוגדרת ודורשת אימות | — | אין מנגנון מחיקה ידוע |
| Portfolio | לא זוהתה מדיניות מחיקה; תקופת השמירה אינה מוגדרת ודורשת אימות | — | אין מנגנון מחיקה ידוע |
| AgentSnapshot | Append-Only; לא ניתן למחיקה (CH4-001) | Append-Only | תקופת שמירה אינה מוגדרת; דורש אימות |
| Alert | לא זוהתה מדיניות מחיקה; תקופת השמירה אינה מוגדרת ודורשת אימות | — | אין מנגנון מחיקה ידוע |
| AgentLog | לא זוהתה מדיניות מחיקה; תקופת השמירה אינה מוגדרת ודורשת אימות | — | אין מנגנון מחיקה ידוע |
| AnalysisOutput | לא זוהתה מדיניות מחיקה; תקופת השמירה אינה מוגדרת ודורשת אימות | — | אין מנגנון מחיקה ידוע |
| MarketData | נדרס בכל update | עדכון בכל refresh | אין היסטוריית מחירים — מאומת |
| TaxReport | לא זוהתה מדיניות מחיקה; תקופת השמירה אינה מוגדרת ודורשת אימות | — | אין מנגנון מחיקה ידוע |
| Entity | קריאה | כתיבה | מחיקה | RLS |
|---|---|---|---|---|
| Trade | כל משתמש מאומת | runAgentScan, executeTrade, rejectTrade | אדמין | לא מוגדר |
| Portfolio | כל משתמש מאומת | executeTrade, refreshPortfolioPrices | אדמין | לא מוגדר |
| AgentConfig | כל משתמש מאומת | אדמין, captureAgentBaseline | אדמין | לא מוגדר |
| SystemSettings | כל משתמש מאומת | אדמין | אדמין | לא מוגדר |
| Message | כל משתמש מאומת | מערכת (Functions) | כל משתמש מאומת | לא מוגדר |
| Alert | כל משתמש מאומת | מערכת + משתמש | כל משתמש מאומת | לא מוגדר |
ה-Gap Analysis משווה את המצב הקיים (As-Is) מול 18 תנאי הקבלה של פרק 5 (סעיף 5.23). כל פער מקבל: דירוג קריטיות (P0/P1/P2), סיכון פוטנציאלי, והפניה למפרט CH5 המטפל. פערים קריטיים (P0) מונעים מעבר ל-CH5-002 עד לתיעוד ואישור תוכנית טיפול.
| מזהה | עיקרון | סטטוס | חומרה | סיכון | בעלים / רכיב אחראי | מפרט יעד |
|---|---|---|---|---|---|---|
| GAP-01 | נכס קנוני (asset_id) | חסר | P0 | אין זהות נכס יציבה; symbol+market הם המזהה היחיד. שינוי Symbol שובר היסטוריה. | Backend / Data | CH5-002 |
| GAP-02 | Snapshot קפוא להחלטה | חסר | P0 | אין תמונת מצב קפואה; סוכנים צורכים נתונים זמניים שעלולים להשתנות באמצע מחזור. | Backend / Data | CH5-003 |
| GAP-03 | decision_cycle_id | חסר | P0 | אין מזהה מחזור החלטה; לא ניתן לקשר ניתוח→סיכון→אישור→ביצוע למחזור אחד. | Backend / Data | CH5-003 |
| GAP-04 | correlation_id | חסר | P0 | אין מזהה קורלציה חוצה-מערכת; שחזור מסלול מלא דורש חיפוש ידני ב-Log. | Backend / Data | CH5-003 |
| GAP-05 | שכבות נתוני שוק (Raw/Canonical/Adjusted) | חסר | P0 | מחיר מ-runAgentScan ומ-refreshPortfolioPrices אינם מובחנים כ-Raw/Canonical; אין Lineage. | Backend / Data | CH5-004 |
| GAP-06 | Data Quality ברמת שדה | חסר | P1 | אין סימון VALID/STALE/MISSING/CONFLICTED; נתון ישן עלול לשמש לפעולה. | Backend / Data | CH5-004 |
| GAP-07 | Corporate Actions | חסר | P0 | אין טיפול ב-Split/Dividend/Symbol Change; פוזיציה וסטופים אינם מותאמים אוטומטית. | Backend / Data | CH5-004 |
| GAP-08 | גרסאות Policy/Model/Prompt | חלקי | P1 | AgentConfig מתועד חלקית באמצעות Hash ו-AgentSnapshot; Prompt ו-Model אינם ישויות גרסאיות נפרדות; אין קישור מניתוח לגרסת Prompt. | Backend / Agents | CH5-005 |
| GAP-09 | Audit Append-Only מלא | חלקי | P1 | Message משמש כ-Audit אך אינו Append-Only טהור; ניתן למחוק (cleanupOldMessages). | Backend / Audit | CH5-005 |
| GAP-10 | Lineage מקצה לקצה | חסר | P1 | אין קישור מקצה לקצה מ-Source→Snapshot→Decision→Execution. | Backend / Audit | CH5-005 |
| GAP-11 | Tiered Retention | חלקי | P2 | Retention קיים רק ל-Message (30 יום); אין מדיניות ל-Trade, AnalysisOutput, AgentSnapshot. | Backend / Ops | CH5-005 |
| GAP-12 | Tombstone למחיקה | חסר | P2 | מחיקה מורשית מוחקת רשומה ללא שמירת שרשרת ראיות. | Backend / Audit | CH5-005 |
| GAP-13 | Least Privilege מפורט | חלקי | P1 | RLS אינו מוגדר לכל Entity; הרשאות אינן מופרדות לפי תפקיד (Scanner, Agent, Risk Gate, Execution). | Backend / Security | CH5-006 |
| GAP-14 | RPO/RTO מוגדרים | חסר | P1 | אין הגדרת RPO/RTO ברמת האפליקציה; אין תוכנית גיבוי/Restore רשמית. | DevOps / Security | CH5-006 |
| GAP-15 | Reconciliation לפני Retry | חלקי | P1 | CH3-003 מטפל ב-Reconciliation ל-Execution אך לא לנתוני שוק או Snapshot. | Backend / Execution | CH5-006 |
| GAP-16 | אין זיכרון סמוי | חלקי | P1 | AgentConfig.sources ו-strategy אינם מקושרים ל-Snapshot או Audit; קשה לדעת איזה מקור שימש החלטה. | Backend / Agents | CH5-003/005 |
| GAP-17 | אין דריסת היסטוריה | חלקי | P1 | Portfolio.update דורס מחיר קנייה; AgentSnapshot הוא Append-Only אך Trade גרסאי חלקית בלבד (status_version); טרם אומתה היסטוריה מלאה לכל השדות העסקיים. | Backend / Data | CH5-005 |
| GAP-18 | Smoke Test משולב | חסר | P2 | אין בדיקת קבלה משולבת של כל CH5 ב-Paper/Simulation. | QA / Backend | CH5-006 |
כל Entity במערכת מופיע במיפוי עם שדותיו, סוגיו וברירות המחדל שלו.
כל נתיב כתיבה מרכזי (Trade.create, Portfolio.update, Message.create, AgentSnapshot.create וכו') ממופה ל-Function/Workflow המבצע.
לכל תחום נתונים (מחיר, פוזיציה, מזומן, החלטה, תצורה) נקבע Source of Truth בפועל או מסומן פער מפורש.
כל שש רשומות AgentConfig — חמש פעילות ואחת מושהית — והנתיבים הדטרמיניסטיים הרלוונטיים ממופים.
מקורות הנתונים (Yahoo Finance, LLM, Internal) ממופים עם תדירויות, Fallback ו-Cron.
הפערים מול 18 תנאי הקבלה של פרק 5 ממופים לבעלים ול-CH5 יעד.
Baseline הרגרסיה (בדיקות CH3/CH4) עבר ללא שינוי בתוצאות המערכת.
כפילויות וחפיפות בין ישויות מזוהות ומתועדות.
Retention פעיל ממופה לכל Entity רלוונטי.
הרשאות קריאה/כתיבה/מחיקה ממופות לכל Entity.
המפרט אושר לפני תחילת ביצוע.
כל נתיב כתיבה מרכזי ממופה ל-Function/Workflow.
כל תנאי קבלה קיבל בדיקה ותוצאה.
לא נוצרה נסיגה בהגנות, ב-State Machine או ב-Idempotency של CH3.
חוזי הסוכנים וה-CIO Shadow של CH4 נשמרו.
הופק דוח ביצוע הכולל ראיות, חריגות והמלצת סגירה.
רק לאחר אישור דוח הביצוע משתנה סטטוס המפרט ל-Version 1.0 — Closed.
src/pages/Ch5Spec001.jsx — קובץ תיעודי קיים; במסגרת CH5-001 הוא לקריאה בלבד ואינו מיועד לעריכה.
בדיקות רגרסיה: base44/functions/runCh3AcceptanceTests, runCh3AcceptanceTests003, runCh4AcceptanceTests — הפעלה ללא שינוי.
ייצוא סכמות: קריאה ל-base44.entities.*.schema() לכל Entity — ללא שינוי ב-DB.
אין שינוי ב-Entities, Functions, Workflows או קוד עסקי.
1. ייצוא סכמות כל ה-Entities (base44.entities.*.schema()).
2. רישום כל ה-Functions וה-Workflows הפעילים עם נתיבי קריאה/כתיבה.
3. מיפוי מקורות נתונים: Yahoo Finance, LLM, Internal DB, Stripe.
4. בניית מטריצת Source of Truth לכל תחום נתונים.
5. מיפוי Retention פעיל לכל Entity.
6. מיפוי הרשאות (RLS / built-in) לכל Entity.
7. הפעלת בדיקות רגרסיה (CH3, CH4) ותיעוד Baseline.
8. ביצוע Gap Analysis מול 18 תנאי הקבלה של פרק 5.
9. דירוג פערים (P0/P1/P2) והפניה למפרט CH5 מטפל.
10. הפקת דוח ביצוע CH5-001 עם כל הראיות.
11. אישור דוח הביצוע → מעבר ל-CH5-002.
תלות
פרקים 1–5 הנעולים (Version 1.0 — Locked & Approved) ודוחות CH3 (001/002/003/004/005) ו-CH4 (001/Execution Report).
מחוץ לתכולה
שינוי קוד עסקי, בחירת ספק חדש, הקמת Asset Master, שינוי Schema, Rename או שינוי Cron.