V3-CH4 — חיבור Adapter קיים לברוקר
כרך 3 · פרק 4 · השלמת Sandbox/Paper end-to-end + reconciliation
v1.0 Spec · 12.8.2026
מטרת הפרק
חיבור Adapter הברוקר הקיים לסביבת Sandbox/Paper, השלמת בדיקות end-to-end (פקודות, fills, cancel, partial, reject, timeout), והוכחת reconciliation ו-recovery. סגירת שער G3 — Broker Ready.
שימוש חוזר מחייב: תשתית הברוקר אינה נבנית מחדש. V3-CH4 מתחבר ל-Adapter הקיים (brokerAdapter.ts) ומשלים Sandbox/Paper end-to-end; אין כתיבת adapter חלופי.
רכיבי Adapter קיימים
| רכיב | סטטוס | תיאור | פעולה |
|---|---|---|---|
| brokerAdapter.ts | קיים | מתאם ברוקר קנוני; תומך Paper/Sandbox/Live | חיבור Sandbox/Paper — לא כתיבה מחדש |
| executionStateMachine.ts | קיים | מכונת מצבים execution_state (CH3-003) | שימוש קיים; אין שינוי |
| executionEngine.ts | קיים | מנוע ביצוע פקודות | שימוש קיים; אין שינוי |
| fillProcessor.ts | קיים | עיבוד fills ועדכון תיק | שימוש קיים; אין שינוי |
| brokerEventJournal.ts | קיים | יומן אירועי ברוקר | שימוש קיים; אין שינוי |
| BrokerageConnection (entity) | קיים | ישות חיבור ברוקר | תצורת Sandbox/Paper |
בדיקות Sandbox/Paper End-to-End
| מזהה | בדיקה | צפי | סטטוס |
|---|---|---|---|
| S1 | שליחת פקודת Market (BUY) | broker_order_id מתקבל; execution_state=SENT | OPEN |
| S2 | מילוי פקודה (fill) | fillProcessor מעדכן filled_quantity; execution_state=CONFIRMED | OPEN |
| S3 | מילוי חלקי (partial fill) | execution_state=PARTIALLY_FILLED; average_fill_price מתעדכן | OPEN |
| S4 | ביטול פקודה (cancel) | cancel_request_id נוצר; execution_state=CANCELLED | OPEN |
| S5 | דחיית פקודה (reject) | execution_state=FAILED; AuditEvent נכתב | OPEN |
| S6 | פסק זמן (timeout) | response_timeout_sec מפעיל recovery; execution_state מתעדכן | OPEN |
Reconciliation — 4 שלבים
| שלב | פירוט | טריגר | SLA |
|---|---|---|---|
| 1 — זיהוי פער | השוואת מצב מקומי מול סטטוס ברוקר | scheduled / on-demand | מיידי |
| 2 — סיווג | RECONCILIATION_REQUIRED / תקין / חסר נתונים | auto | מיידי |
| 3 — Corrective Trade | יצירת Corrective Trade לתיקון מצב סופי | אישור אנושי | מיידי |
| 4 — אימות | מצב מקומי == מצב ברוקר; AuditEvent מלא | auto | מיידי |
Recovery — 4 תרחישים
| תרחיש | צפי | סטטוס |
|---|---|---|
| קריסת אפליקציה אחרי שליחה | execution_state משתחזר מברוקר; אין duplicate | OPEN |
| פקודה שנשלחה אך לא התקבל אישור | Response Timeout → recovery; execution_state מתעדכן | OPEN |
| Fill שהגיע באיחור | brokerEventJournal מתעד; fillProcessor מעבד | OPEN |
| Cancel שנכשל | cancel_timeout_sec → execution_state=CANCEL_PENDING | OPEN |
איסורים
- אין כתיבת adapter חלופי; שימוש ב-brokerAdapter.ts הקיים.
- אין Live לפני סגירת G3; Sandbox/Paper בלבד.
- אין חיבור חשבון בנק למנוע ההחלטה; הבנק מממן את הברוקר בלבד.
קריטריוני קבלה
| מזהה | קריטריון | תוצאה |
|---|---|---|
| C1 | שימוש חוזר ב-brokerAdapter.ts הקיים; אין כתיבת adapter חלופי. | SPEC PASS |
| C2 | חיבור Sandbox/Paper end-to-end עובר 6/6 בדיקות (Market/Fill/Partial/Cancel/Reject/Timeout). | SPEC PASS |
| C3 | Reconciliation: 4 שלבים (זיהוי → סיווג → Corrective Trade → אימות) מתועדים ופעילים. | SPEC PASS |
| C4 | Recovery: 4 תרחישים (קריסה/ללא אישור/Fill מאוחר/Cancel כושל) PASS — אפס duplicate. | SPEC PASS |
| C5 | AuditEvent מלא לכל פקודה: submit, fill, cancel, reject, timeout, reconciliation. | SPEC PASS |
| C6 | client_order_id יציב וייחודי; idempotency key מונע duplicate. | SPEC PASS |
הבהרת סטטוס: SPEC PASS = מפרט מאושר ונעול; היישום פתוח עד סגירת שער G3. ראה דוח צליבה.