DWFX Review — דוקומנטציה
מערכת AI לבקרת תכן אוטומטית · מהוד הנדסה + מכון בקרת הבנייה
מה זה?
מערכת AI לבקרת תכן אוטומטית. שני לקוחות: מהוד הנדסה (כבישים ומחלפים — תכנון פיזי וגאומטריה) ומכון בקרת הבנייה (בניינים — בטיחות אש, מיגון, יציבות, סניטרי, נגישות, חניונים). בודקת שרטוטים (DWF/DWFX/PDF/DWG) מול תקנות ותקנים ישראליים ומפיקה דוח בקרה מקצועי.
ניתוח אוטומטי
OCR + חילוץ שכבות, מידות וטקסט משרטוטים
AI Council
GPT-4.1 + Gemini + Claude — שלושה מודלים בודקים כל כלל
דוחות מקצועיים
HTML, DOCX, PDF — בפורמט מכון בקרה
דשבורד ניהולי
סטטיסטיקות, גרפים, סינון, ספרייה, פרויקטים
ארכיטקטורה
רכיבים עיקריים
| רכיב | טכנולוגיה | תיאור |
|---|---|---|
| Server | Node.js 20, Express | API + Static serving |
| Frontend | Vanilla JS SPA | ~2,200 שורות, dashboard.js |
| OCR | Azure Document Intelligence | חילוץ טקסט מ-PDF/תמונות |
| Parsers | Custom Node.js | DWFX, DWF, W2D, DXF |
| AI Council | GPT-4.1 + Gemini + Claude CLI | שלושה מודלים בודקים כל כלל — הצבעה + authority |
| Reports | Custom CJS generators | HTML + DOCX (via docx npm) + PDF (via Gotenberg) |
| Process Manager | PM2 | dwfx-review v7.2.0 |
| Reverse Proxy | nginx + Let's Encrypt | SSL, no-auth |
תהליך עבודה
- העלאת שרטוטים — DWFX, DWF, DXF, PDF →
data/projects/{name}/uploads/ - פענוח פורמט — Parsers מחלצים שכבות, טקסטים ומידות
- DWFX = XPS format (לא PDF!)
- W2D = בינארי Autodesk, מיפוי מקלדת עברית (
a=ש, s=ד)
- OCR — Azure Document Intelligence סורק דפים →
reviews/{id}/cache/ - סיווג — זיהוי סוג דרך, מהירות תכן, דיסציפלינות (Phase 0.5)
- ציטוטים — Azure DI OCR על ספריית הנחיות →
citations_index.json(Phase 6) - AI Council — GPT-4.1 + Gemini + Claude בודקים כל כלל. הצבעה + authority + cross-validation
- Verdicts: PASS FAIL HASHLAMA
- הפקת דוחות — HTML + DOCX + PDF אוטומטית
Stack & קבצים חשובים
מבנה תיקיות
package.json מוגדר כ-"type": "module" — סקריפטים מותאמים חייבים להיות .cjsAPI Endpoints
| Endpoint | Method | תיאור |
|---|---|---|
/api/projects | GET/POST | רשימת פרויקטים / יצירה |
/api/projects/:id/review | POST | הפעלת סריקה |
/api/projects/:id/reviews/:rev | GET | תוצאות סריקה |
/api/library | GET | עץ ספרייה |
/api/disciplines | GET | רשימת דיסציפלינות |
/api/analytics | GET | סטטיסטיקות |
/api/health | GET | בדיקת בריאות |
/data/projects/... | GET | הגשת קבצים סטטיים |
מאגר הנחיות
שני מאגרים נפרדים — כל PDF עובר Azure OCR → אינדוקס → citations_index.json
| לקוח | תיקיות | דוגמאות |
|---|---|---|
| מהוד הנדסה | 14 | נת"י כרכים 1-3, מעקות, מהירויות, סימון ותמרור |
| מכון בקרה | 22 | הוראות נציב, ת"י 1220, נגישות, מיגון |
Parsers & OCR
פורמטים נתמכים
| פורמט | Parser | הערות |
|---|---|---|
| DWFX | XPS unzip + page extraction | XPS format — לא PDF! mutool/pymupdf לא עובדים |
| DWF (W2D) | w2d_text_extractor.cjs | בינארי, מיפוי מקלדת עברית |
| Azure Document Intelligence | OCR + טקסט נקי | |
| DXF | Custom parser | שכבות + entities |
jank → חשמל, ,fbh, → תכנית. ה-extractor מבצע דה-קוד אוטומטי.הפקת דוחות
שלושה פורמטים
- HTML —
institute_html.cjs(template) +generate_report.cjs→ אינטראקטיבי, קישורים למקורות - DOCX —
institute_docx.cjs(template) → ספרייתdocxnpm + post-processing RTL - PDF — DOCX → Gotenberg (Docker, port 3001) → PDF
bidiVisual. חייבים post-processing עם fix_docx_xml.py — unzip, inject XML, rezip.4 סוגי ממצאים
- לא תקין (FAIL) — ליקוי שזוהה עם ציטוט לתקנה
- תקין (PASS) — עומד בדרישות
- השלמת נתונים — לא ניתן לוודא, נדרש מידע נוסף
- הערה נוהלית — בקרת איכות פנימית
פרויקטים
חפץ חיים — מחלף כביש 40
סוג
כביש ראשי, מחלף
דיסציפלינה
תכנון פיזי וגאומטריה
לקוח
מהוד הנדסה
סטטוס
scan 011 — נשלח
120 כללים → 79 תקין 3 לא תקין 38 השלמת נתונים
מסריק 20 — בניין מגורים בת ים
סוג
בניין מגורים
דיסציפלינה
בטיחות אש
לקוח
מכון בקרת הבנייה
סטטוס
ממתין לסריקה חדשה
101 כללים — calibration deployed, ממתין לסריקה חדשה
ספריית הנחיות ותקנים
כל PDF עובר Azure OCR → אינדוקס → ציטוטים מדויקים בדוח.
מהוד הנדסה — 14 תיקיות
| קטגוריה | תוכן |
|---|---|
| גאומטריה כרך 1-3 | הנחיות לתכנון גאומטרי של דרכים בין-עירוניות |
| מהירויות | טבלאות מהירות תכן, NTI parameters |
| מעקות ומאחזי יד | ת"י, הנחיות נת"ע |
| סימון ותמרור | תקנות והנחיות 2024 |
מכון בקרה — 22 תיקיות
| קטגוריה | תוכן |
|---|---|
| כיבוי אש | הוראות נציב, ת"י 1220 חלקים 1-6 |
| מיגון | הנחיות פיקוד העורף |
| נגישות | ת"י 1918, תקנות נגישות |
| חניונים | ת"י 2279, הנחיות |
Deploy & תשתית
| שירות | כתובת |
|---|---|
| שרת | 46.101.119.52 (DigitalOcean, 16GB RAM, Ubuntu 24) |
| TEST | port 3810, PM2: dwfx-test, /opt/dwfx-review-test/ |
| PROD | port 3800, PM2: dwfx-review, /opt/dwfx-review/ |
| Gotenberg | localhost:3001 (PDF export) |
| RAGFlow | כבוי (שוחרר 4.3GB RAM) |
פקודות שימושיות
מלכודות נפוצות
- DWFX ≠ PDF — פורמט XPS. mutool/pymupdf לא יעבדו
- W2D Hebrew — מיפוי מקלדת, לא Unicode. חייבים decoder
- DOCX RTL —
bidiVisualנדרש post-processing XML injection - AI payload > 200KB — Gemini חותך JSON. batch size 3-4 מקסימום
- Excel Hebrew — רק
python3.11 openpyxl, לא LibreOffice CSV - cairosvg — נתקע על קבצים גדולים, חייבים kill+timeout
- סריקות — לא להריץ סריקות על דעת עצמך, רק ארתור מהדשבורד
כללי עבודה
- סקריפטים חדשים → סיומת
.cjs(בגלל ESM) - Hebrew RTL בכל הדוחות והדשבורד
- שינויים בדשבורד → ישירות ב-
dashboard.js - לא לחשוף API keys בצד לקוח
- DOCX:
columnWidthsברמת Table, עמודה ראשונה RTL = ימנית - נושאי ממצאים: קצרים ומדויקים ("פיר גז", "מאגר מים")
- PDF: דרך Playwright (Gotenberg fallback)
- גיבוי לפני שינויים הרסניים
- Deploy: cp -r test → prod, fix .env PORT, fix URLs, npm install, restart
- חובה לאמת deploy — קוד חייב להיות confirmed כ-deployed
- סימולציה לא מספיקה — רק סריקה חיה מאשרת
- RAM = 16GB (RAGFlow כבוי)