feat(tactical): integrate cross-country terrain slope, basalt rocks, and off-road mobility analysis into Isochrone engine
This commit is contained in:
@@ -3300,10 +3300,71 @@ ${terrainResult.tacticalRecommendations.map((r, i) => `${i + 1}. ${r}`).join('\n
|
||||
<div style={{ fontSize: '0.72rem', color: '#94a3b8', marginBottom: 2 }}>مؤشر الامتثال للساعة الذهبية (Golden Hour Index)</div>
|
||||
<div style={{ fontSize: '1.6rem', fontWeight: 900, color: '#4ade80' }}>96.4%</div>
|
||||
<div style={{ fontSize: '0.72rem', color: '#cbd5e1' }}>
|
||||
تغطية سريعة ضمن المحاور المرورية الرئيسية في الأردن
|
||||
تغطية سريعة هجينة (شبكة الطرق + عبور تكتيكي خارج الطرق)
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Terrain & Cross-Country Mobility Analysis Card */}
|
||||
{isochroneData.terrainPassability && (
|
||||
<div style={{
|
||||
background: 'rgba(255, 255, 255, 0.03)',
|
||||
border: '1px solid rgba(255, 255, 255, 0.1)',
|
||||
borderRadius: 8,
|
||||
padding: '10px',
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
gap: 6
|
||||
}}>
|
||||
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
||||
<span style={{ fontSize: '0.75rem', fontWeight: 800, color: '#38bdf8', display: 'flex', alignItems: 'center', gap: 4 }}>
|
||||
<span>⛰️</span> دراسة عبور الأرض والانحدار والبازلت
|
||||
</span>
|
||||
<span style={{
|
||||
fontSize: '0.68rem',
|
||||
fontWeight: 800,
|
||||
padding: '2px 6px',
|
||||
borderRadius: 4,
|
||||
background: isochroneData.terrainPassability.passabilityScore > 70 ? 'rgba(34,197,94,0.2)' : 'rgba(234,179,8,0.2)',
|
||||
color: isochroneData.terrainPassability.passabilityScore > 70 ? '#4ade80' : '#facc15',
|
||||
border: `1px solid ${isochroneData.terrainPassability.passabilityScore > 70 ? '#22c55e' : '#eab308'}`
|
||||
}}>
|
||||
جاهزية العبور: {isochroneData.terrainPassability.passabilityScore}%
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 6, marginTop: 2 }}>
|
||||
<div style={{ background: 'rgba(0,0,0,0.25)', padding: '6px 8px', borderRadius: 6 }}>
|
||||
<div style={{ fontSize: '0.62rem', color: '#94a3b8' }}>متوسط ميل الأرض</div>
|
||||
<div style={{ fontSize: '0.85rem', fontWeight: 800, color: '#f8fafc' }}>
|
||||
{isochroneData.terrainPassability.avgSlopeDeg}°
|
||||
</div>
|
||||
</div>
|
||||
<div style={{ background: 'rgba(0,0,0,0.25)', padding: '6px 8px', borderRadius: 6 }}>
|
||||
<div style={{ fontSize: '0.62rem', color: '#94a3b8' }}>تغطية الطرق المعبدة</div>
|
||||
<div style={{ fontSize: '0.85rem', fontWeight: 800, color: '#38bdf8' }}>
|
||||
{isochroneData.terrainPassability.roadCoveragePct}%
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{isochroneData.terrainPassability.basaltZoneDetected && (
|
||||
<div style={{ fontSize: '0.65rem', color: '#f59e0b', background: 'rgba(245, 158, 11, 0.12)', padding: '4px 8px', borderRadius: 4, border: '1px solid rgba(245, 158, 11, 0.3)' }}>
|
||||
⚠️ تم رصد حقول صخور بازلتية - تم تطبيق معامل إبطاء لحماية الإطارات
|
||||
</div>
|
||||
)}
|
||||
|
||||
{isochroneData.terrainPassability.cliffBarriersCount > 0 && (
|
||||
<div style={{ fontSize: '0.65rem', color: '#ef4444', background: 'rgba(239, 68, 68, 0.12)', padding: '4px 8px', borderRadius: 4, border: '1px solid rgba(239, 68, 68, 0.3)' }}>
|
||||
⛔ تم رصد {isochroneData.terrainPassability.cliffBarriersCount} قواطع وجروف صخرية حادة (انحدار شديد يعيق المركبات)
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div style={{ fontSize: '0.68rem', color: '#94a3b8', borderTop: '1px solid rgba(255,255,255,0.06)', paddingTop: 5 }}>
|
||||
{isochroneData.terrainPassability.mobilityConditionAr}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Tiers Breakdown Cards */}
|
||||
<div style={{ display: 'flex', flexDirection: 'column', gap: 6 }}>
|
||||
{isochroneData.tiers.map((tier: any, idx: number) => (
|
||||
|
||||
Reference in New Issue
Block a user