jcalbornoz commited on
Commit
6bd2ca3
·
verified ·
1 Parent(s): c3e86ef

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +36 -29
index.html CHANGED
@@ -3,7 +3,7 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>InmoGuard V47: Fixed</title>
7
  <style>
8
  :root { --p: #0f172a; --a: #3b82f6; --s: #10b981; --d: #ef4444; --w: #f59e0b; --bg: #f8fafc; }
9
  body { font-family: 'Segoe UI', sans-serif; background: var(--bg); padding: 20px; color: #334155; }
@@ -23,11 +23,9 @@
23
  .card { background: white; padding: 20px; border-radius: 8px; border-top: 5px solid #94a3b8; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1); }
24
  .card h3 { margin-top: 0; color: var(--p); border-bottom: 1px solid #e2e8f0; padding-bottom: 10px; font-size: 1.15rem; }
25
 
26
- /* SCORE */
27
  .score-circle { width: 90px; height: 90px; border-radius: 50%; border: 8px solid #e2e8f0; display: flex; align-items: center; justify-content: center; margin: 0 auto; font-size: 1.8rem; font-weight: bold; color: var(--p); }
28
  .score-good { border-color: var(--s); color: var(--s); } .score-mid { border-color: var(--w); color: var(--w); } .score-bad { border-color: var(--d); color: var(--d); }
29
 
30
- /* SECCIONES */
31
  .c-sae { border-top-color: var(--d); background: #fff5f5; }
32
  .c-inv { border-top-color: var(--s); background: #f0fdf4; }
33
  .c-vis { border-top-color: #8b5cf6; background: #f5f3ff; }
@@ -62,7 +60,6 @@
62
  #status { text-align: center; margin-top: 15px; font-weight: bold; color: #64748b; }
63
  #err-box { background: #fee2e2; color: #b91c1c; padding: 15px; border-radius: 8px; margin-top: 20px; display: none; text-align: center; border: 1px solid #fecaca; }
64
 
65
- /* STREET VIEW */
66
  .sv-btn { display: inline-block; background: #fbbf24; color: #78350f; padding: 8px 16px; border-radius: 6px; font-size: 0.9rem; font-weight: bold; text-decoration: none; margin-top: 10px; cursor: pointer; border: 1px solid #f59e0b; transition: 0.2s; }
67
  .sv-btn:hover { background: #f59e0b; color: white; transform: translateY(-1px); }
68
  .audio-btn { background: var(--p); color: white; border: none; padding: 5px 10px; border-radius: 20px; cursor: pointer; font-size: 0.9rem; margin-left: 10px; }
@@ -78,8 +75,8 @@
78
 
79
  <div class="container">
80
  <div class="header">
81
- <h1>🛡️ InmoGuard <span>AI V47</span></h1>
82
- <p style="color:#64748b">Análisis Integral: StreetView Fix, Forense & Legal</p>
83
  </div>
84
 
85
  <div class="dropzone" onclick="document.getElementById('files').click()">
@@ -100,6 +97,29 @@
100
  <div id="err-box"></div>
101
 
102
  <div id="dash" class="grid">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  <div class="card">
104
  <h3>🏆 InmoScore</h3>
105
  <div id="score-circle" class="score-circle">--</div>
@@ -111,7 +131,6 @@
111
  <span class="lbl">Venta Estimada:</span><h2 id="fin-venta" style="color:#166534; margin:2px 0;"></h2>
112
  <span class="lbl">Renta Estimada:</span><span class="val" id="fin-renta"></span>
113
  <span class="lbl">Cap Rate:</span><span class="val" id="fin-cap"></span>
114
- <span class="lbl" style="margin-top:10px;">Perfil Zona:</span><span class="val" id="entorno-perfil"></span>
115
  </div>
116
 
117
  <div class="card c-vis">
@@ -120,13 +139,6 @@
120
  <span class="lbl">Observaciones:</span><p class="val" id="vis-obs" style="font-style:italic"></p>
121
  </div>
122
 
123
- <div class="card" style="border-top-color: #3b82f6;">
124
- <h3>🏠 Identificación Legal</h3>
125
- <span class="lbl">FMI Detectados:</span> <span class="val" id="fmi" style="color:var(--a); font-weight:bold; display:block;"></span>
126
- <span class="lbl">Cédula:</span> <span class="val" id="cedula"></span>
127
- <span class="lbl">Dirección:</span> <span class="val" id="dir"></span>
128
- </div>
129
-
130
  <div class="card c-sae">
131
  <h3>⚖️ SAE / Ley 1708</h3>
132
  <span class="lbl">Estado:</span> <span class="val" id="sae-st"></span>
@@ -150,13 +162,6 @@
150
  <span class="lbl" style="color:#c2410c; margin-top:10px;">Falsa Tradición:</span> <span class="val" id="falsa"></span>
151
  </div>
152
 
153
- <div class="card">
154
- <h3>📍 Ubicación Detectada</h3>
155
- <div id="loc-name" style="font-size:0.8em; color:#999; margin-bottom:5px"></div>
156
- <div id="map-box"></div>
157
- <div id="sv-container" style="text-align:center;"></div>
158
- </div>
159
-
160
  <div class="card c-res" style="grid-column: 1 / -1; background:#e2e8f0; border-top-color:var(--p)">
161
  <h3>🏁 Dictamen Final <button class="audio-btn" onclick="speak()">🔈</button></h3>
162
  <h2 id="res-t" style="text-align:center;"></h2>
@@ -180,7 +185,7 @@
180
  let f = document.getElementById('files').files;
181
  if(!f.length) return alert("Sube archivos");
182
 
183
- document.getElementById('status').innerText = "⏳ Analizando Todo (Vision, Finanzas, Legal)...";
184
  document.getElementById('btnGo').disabled = true;
185
  document.getElementById('err-box').style.display = 'none';
186
 
@@ -216,7 +221,12 @@
216
  const m=d.meta||{}, sae=d.analisis_sae_ley||{}, hist=d.historial_propiedad||[], fin=d.rentabilidad||{}, vis=d.inspeccion_visual||{};
217
  const v=d.vur||{}, end=d.dic||{}, sem=d.semaforo_riesgos||{}, forense=d.forense_digital||[], cruce=d.cruce_documentos||{}, score=d.inmoscore||{}, ent=d.entorno_urbano||{};
218
 
219
- // Score
 
 
 
 
 
220
  let sc = score.puntaje || 0;
221
  let scDiv = document.getElementById('score-circle');
222
  scDiv.innerText = sc;
@@ -226,7 +236,6 @@
226
  safeSet('fin-venta', get(fin, 'valor_venta'));
227
  safeSet('fin-renta', get(fin, 'valor_renta'));
228
  safeSet('fin-cap', get(fin, 'cap_rate'));
229
- safeSet('entorno-perfil', get(ent, 'perfil_zona'));
230
 
231
  safeSet('vis-est', get(vis, 'estado_fisico'));
232
  safeSet('vis-obs', get(vis, 'observaciones'));
@@ -271,17 +280,15 @@
271
 
272
  safeSet('loc-name', d.ubicacion_detectada);
273
 
274
- // MAPA Y STREET VIEW (LINK FIX)
275
  if(d.mapa) {
276
  let fr = document.createElement('iframe'); fr.srcdoc = d.mapa;
277
  document.getElementById('map-box').innerHTML = ''; document.getElementById('map-box').appendChild(fr);
278
 
279
  if(d.coords && d.coords.lat) {
280
- // LINK OFICIAL GOOGLE MAPS STREET VIEW
281
- let svUrl = `https://www.google.com/maps?layer=c&cbll=${d.coords.lat},${d.coords.lon}`;
282
- document.getElementById('sv-container').innerHTML = `<a href="${svUrl}" target="_blank" class="sv-btn">👁️ Ver en Street View</a>`;
283
  } else {
284
- document.getElementById('sv-container').innerHTML = "<small>Vista 360° no disponible</small>";
285
  }
286
  }
287
 
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>InmoGuard V49: Precision</title>
7
  <style>
8
  :root { --p: #0f172a; --a: #3b82f6; --s: #10b981; --d: #ef4444; --w: #f59e0b; --bg: #f8fafc; }
9
  body { font-family: 'Segoe UI', sans-serif; background: var(--bg); padding: 20px; color: #334155; }
 
23
  .card { background: white; padding: 20px; border-radius: 8px; border-top: 5px solid #94a3b8; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1); }
24
  .card h3 { margin-top: 0; color: var(--p); border-bottom: 1px solid #e2e8f0; padding-bottom: 10px; font-size: 1.15rem; }
25
 
 
26
  .score-circle { width: 90px; height: 90px; border-radius: 50%; border: 8px solid #e2e8f0; display: flex; align-items: center; justify-content: center; margin: 0 auto; font-size: 1.8rem; font-weight: bold; color: var(--p); }
27
  .score-good { border-color: var(--s); color: var(--s); } .score-mid { border-color: var(--w); color: var(--w); } .score-bad { border-color: var(--d); color: var(--d); }
28
 
 
29
  .c-sae { border-top-color: var(--d); background: #fff5f5; }
30
  .c-inv { border-top-color: var(--s); background: #f0fdf4; }
31
  .c-vis { border-top-color: #8b5cf6; background: #f5f3ff; }
 
60
  #status { text-align: center; margin-top: 15px; font-weight: bold; color: #64748b; }
61
  #err-box { background: #fee2e2; color: #b91c1c; padding: 15px; border-radius: 8px; margin-top: 20px; display: none; text-align: center; border: 1px solid #fecaca; }
62
 
 
63
  .sv-btn { display: inline-block; background: #fbbf24; color: #78350f; padding: 8px 16px; border-radius: 6px; font-size: 0.9rem; font-weight: bold; text-decoration: none; margin-top: 10px; cursor: pointer; border: 1px solid #f59e0b; transition: 0.2s; }
64
  .sv-btn:hover { background: #f59e0b; color: white; transform: translateY(-1px); }
65
  .audio-btn { background: var(--p); color: white; border: none; padding: 5px 10px; border-radius: 20px; cursor: pointer; font-size: 0.9rem; margin-left: 10px; }
 
75
 
76
  <div class="container">
77
  <div class="header">
78
+ <h1>🛡️ InmoGuard <span>AI V49</span></h1>
79
+ <p style="color:#64748b">Análisis Catastral Preciso & Localización</p>
80
  </div>
81
 
82
  <div class="dropzone" onclick="document.getElementById('files').click()">
 
97
  <div id="err-box"></div>
98
 
99
  <div id="dash" class="grid">
100
+
101
+ <div class="card" style="border-top-color: #3b82f6;">
102
+ <h3>🏠 Identificación Legal</h3>
103
+ <span class="lbl">FMI Detectados:</span> <span class="val" id="fmi" style="color:var(--a); font-weight:bold; display:block;"></span>
104
+ <span class="lbl">Municipio / Depto:</span> <span class="val" id="muni"></span>
105
+ <span class="lbl">Vereda / Barrio:</span> <span class="val" id="vereda"></span>
106
+
107
+ <div style="margin-top:10px; padding:8px; background:#f8fafc; border-radius:6px; border:1px solid #e2e8f0;">
108
+ <span class="lbl" style="margin-top:0">Ref. Catastral Anterior:</span> <span class="val" id="ref_ant" style="font-size:0.9em; word-break:break-all;"></span>
109
+ <span class="lbl">NUPRE:</span> <span class="val" id="nupre" style="font-weight:bold;"></span>
110
+ <span class="lbl">Cédula Catastral:</span> <span class="val" id="cedula"></span>
111
+ </div>
112
+
113
+ <span class="lbl">Dirección:</span> <span class="val" id="dir"></span>
114
+ </div>
115
+
116
+ <div class="card">
117
+ <h3>📍 Ubicación Detectada</h3>
118
+ <div id="loc-name" style="font-size:0.8em; color:#999; margin-bottom:5px"></div>
119
+ <div id="map-box"></div>
120
+ <div id="sv-container" style="text-align:center;"></div>
121
+ </div>
122
+
123
  <div class="card">
124
  <h3>🏆 InmoScore</h3>
125
  <div id="score-circle" class="score-circle">--</div>
 
131
  <span class="lbl">Venta Estimada:</span><h2 id="fin-venta" style="color:#166534; margin:2px 0;"></h2>
132
  <span class="lbl">Renta Estimada:</span><span class="val" id="fin-renta"></span>
133
  <span class="lbl">Cap Rate:</span><span class="val" id="fin-cap"></span>
 
134
  </div>
135
 
136
  <div class="card c-vis">
 
139
  <span class="lbl">Observaciones:</span><p class="val" id="vis-obs" style="font-style:italic"></p>
140
  </div>
141
 
 
 
 
 
 
 
 
142
  <div class="card c-sae">
143
  <h3>⚖️ SAE / Ley 1708</h3>
144
  <span class="lbl">Estado:</span> <span class="val" id="sae-st"></span>
 
162
  <span class="lbl" style="color:#c2410c; margin-top:10px;">Falsa Tradición:</span> <span class="val" id="falsa"></span>
163
  </div>
164
 
 
 
 
 
 
 
 
165
  <div class="card c-res" style="grid-column: 1 / -1; background:#e2e8f0; border-top-color:var(--p)">
166
  <h3>🏁 Dictamen Final <button class="audio-btn" onclick="speak()">🔈</button></h3>
167
  <h2 id="res-t" style="text-align:center;"></h2>
 
185
  let f = document.getElementById('files').files;
186
  if(!f.length) return alert("Sube archivos");
187
 
188
+ document.getElementById('status').innerText = "⏳ Extrayendo Catastro y Geolocalizando...";
189
  document.getElementById('btnGo').disabled = true;
190
  document.getElementById('err-box').style.display = 'none';
191
 
 
221
  const m=d.meta||{}, sae=d.analisis_sae_ley||{}, hist=d.historial_propiedad||[], fin=d.rentabilidad||{}, vis=d.inspeccion_visual||{};
222
  const v=d.vur||{}, end=d.dic||{}, sem=d.semaforo_riesgos||{}, forense=d.forense_digital||[], cruce=d.cruce_documentos||{}, score=d.inmoscore||{}, ent=d.entorno_urbano||{};
223
 
224
+ // NEW FIELDS V49
225
+ safeSet('muni', `${get(m,'municipio')} / ${get(m,'departamento')}`);
226
+ safeSet('vereda', get(m,'vereda'));
227
+ safeSet('nupre', get(m,'nupre'));
228
+ safeSet('ref_ant', get(m,'ref_catastral_ant'));
229
+
230
  let sc = score.puntaje || 0;
231
  let scDiv = document.getElementById('score-circle');
232
  scDiv.innerText = sc;
 
236
  safeSet('fin-venta', get(fin, 'valor_venta'));
237
  safeSet('fin-renta', get(fin, 'valor_renta'));
238
  safeSet('fin-cap', get(fin, 'cap_rate'));
 
239
 
240
  safeSet('vis-est', get(vis, 'estado_fisico'));
241
  safeSet('vis-obs', get(vis, 'observaciones'));
 
280
 
281
  safeSet('loc-name', d.ubicacion_detectada);
282
 
 
283
  if(d.mapa) {
284
  let fr = document.createElement('iframe'); fr.srcdoc = d.mapa;
285
  document.getElementById('map-box').innerHTML = ''; document.getElementById('map-box').appendChild(fr);
286
 
287
  if(d.coords && d.coords.lat) {
288
+ let svUrl = `http://googleusercontent.com/maps.google.com/layer=c&cbll=${d.coords.lat},${d.coords.lon}`;
289
+ document.getElementById('sv-container').innerHTML = `<a href="http://googleusercontent.com/maps.google.com/?q=${d.coords.lat},${d.coords.lon}" target="_blank" class="sv-btn">👁️ Ver en Street View</a>`;
 
290
  } else {
291
+ document.getElementById('sv-container').innerHTML = "";
292
  }
293
  }
294