Spaces:
Paused
Paused
Update main.py
Browse files
main.py
CHANGED
|
@@ -3,7 +3,7 @@ from contextlib import contextmanager
|
|
| 3 |
from datetime import date
|
| 4 |
from flask import Flask, request, jsonify
|
| 5 |
from flask_cors import CORS
|
| 6 |
-
|
| 7 |
# ---- Optional Google GenAI (Gemini) ----
|
| 8 |
from google import genai
|
| 9 |
from google.genai import types
|
|
@@ -127,6 +127,19 @@ def embed_text_to_vec1536(text: str):
|
|
| 127 |
)[0].tolist()
|
| 128 |
return _pad(vec, VEC_DIM)
|
| 129 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 130 |
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 131 |
# GEMINI (explanations / descriptions)
|
| 132 |
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
@@ -202,7 +215,7 @@ def build_graph_from_events(obj_row, events):
|
|
| 202 |
actor = ev.get("actor")
|
| 203 |
place = ev.get("place")
|
| 204 |
etype = ev.get("event_type") or "UNKNOWN"
|
| 205 |
-
d_iso = (ev.get("date_from")
|
| 206 |
|
| 207 |
actor_id = add_node("actor", actor) if actor else None
|
| 208 |
place_id = add_node("place", place) if place else None
|
|
@@ -238,8 +251,8 @@ def build_timeline_from_events_and_sentences(events, sentences):
|
|
| 238 |
items = []
|
| 239 |
s_by_seq = {s["seq"]: s["sentence"] for s in sentences}
|
| 240 |
for ev in events:
|
| 241 |
-
start = ev.get("date_from")
|
| 242 |
-
end = ev.get("date_to")
|
| 243 |
title = ev.get("event_type") or "Event"
|
| 244 |
txt = None
|
| 245 |
# Try to pull the nearest sentence by seq if present
|
|
|
|
| 3 |
from datetime import date
|
| 4 |
from flask import Flask, request, jsonify
|
| 5 |
from flask_cors import CORS
|
| 6 |
+
from datetime import date, datetime
|
| 7 |
# ---- Optional Google GenAI (Gemini) ----
|
| 8 |
from google import genai
|
| 9 |
from google.genai import types
|
|
|
|
| 127 |
)[0].tolist()
|
| 128 |
return _pad(vec, VEC_DIM)
|
| 129 |
|
| 130 |
+
def to_iso(d):
|
| 131 |
+
"""Return YYYY-MM-DD for date/datetime/str; None for empty."""
|
| 132 |
+
if d is None:
|
| 133 |
+
return None
|
| 134 |
+
if isinstance(d, (date, datetime)):
|
| 135 |
+
return d.isoformat()[:10]
|
| 136 |
+
if isinstance(d, str):
|
| 137 |
+
return d[:10] if d else None
|
| 138 |
+
# fallback
|
| 139 |
+
try:
|
| 140 |
+
return str(d)[:10]
|
| 141 |
+
except Exception:
|
| 142 |
+
return None
|
| 143 |
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 144 |
# GEMINI (explanations / descriptions)
|
| 145 |
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
|
|
| 215 |
actor = ev.get("actor")
|
| 216 |
place = ev.get("place")
|
| 217 |
etype = ev.get("event_type") or "UNKNOWN"
|
| 218 |
+
d_iso = to_iso(ev.get("date_from"))
|
| 219 |
|
| 220 |
actor_id = add_node("actor", actor) if actor else None
|
| 221 |
place_id = add_node("place", place) if place else None
|
|
|
|
| 251 |
items = []
|
| 252 |
s_by_seq = {s["seq"]: s["sentence"] for s in sentences}
|
| 253 |
for ev in events:
|
| 254 |
+
start = to_iso(ev.get("date_from"))
|
| 255 |
+
end = to_iso(ev.get("date_to"))
|
| 256 |
title = ev.get("event_type") or "Event"
|
| 257 |
txt = None
|
| 258 |
# Try to pull the nearest sentence by seq if present
|