gpt
This commit is contained in:
parent
08c8f85889
commit
7794fa26e0
|
|
@ -779,7 +779,49 @@ def insert_usefulinfo_record(parsed):
|
||||||
|
|
||||||
# Events
|
# Events
|
||||||
if summary_id and isinstance(events, list):
|
if summary_id and isinstance(events, list):
|
||||||
for e in events:
|
for idx, e in enumerate(events, start=1):
|
||||||
|
# Diagnostics: validate dt and length
|
||||||
|
raw_dt = (e or {}).get('dt')
|
||||||
|
raw_len = (e or {}).get('length')
|
||||||
|
raw_title = (e or {}).get('title')
|
||||||
|
raw_desc = (e or {}).get('description')
|
||||||
|
|
||||||
|
dt_str = str(raw_dt) if raw_dt is not None else ''
|
||||||
|
parsed_ok = False
|
||||||
|
parsed_iso = ''
|
||||||
|
all_day = False
|
||||||
|
try:
|
||||||
|
if dt_str:
|
||||||
|
# all-day if no explicit time markers
|
||||||
|
all_day = not (re.search(r"\d\d?:\d\d", dt_str) or re.search(r"\b(am|pm)\b", dt_str, re.I))
|
||||||
|
p = parse(dt_str)
|
||||||
|
parsed_ok = True
|
||||||
|
parsed_iso = p.isoformat()
|
||||||
|
except Exception as ex_dt:
|
||||||
|
print("[usefulinfo][event-parse] bad dt:", dt_str, "error:", str(ex_dt))
|
||||||
|
|
||||||
|
def _mins(s):
|
||||||
|
if not s:
|
||||||
|
return 60
|
||||||
|
try:
|
||||||
|
n = int(s)
|
||||||
|
if n <= 12:
|
||||||
|
return n * 60
|
||||||
|
return n
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
m = re.findall(r"(\d+(?:\.\d+)?)\s*([hm])", str(s), flags=re.I)
|
||||||
|
total = 0
|
||||||
|
for num, unit in m:
|
||||||
|
try:
|
||||||
|
val = float(num)
|
||||||
|
total += int(val * 60) if unit.lower() == 'h' else int(val)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
return total or 60
|
||||||
|
|
||||||
|
computed_minutes = _mins(raw_len)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
CUR.execute(
|
CUR.execute(
|
||||||
"""
|
"""
|
||||||
|
|
@ -787,12 +829,7 @@ def insert_usefulinfo_record(parsed):
|
||||||
VALUES (%s, %s, %s, %s)
|
VALUES (%s, %s, %s, %s)
|
||||||
RETURNING id
|
RETURNING id
|
||||||
""",
|
""",
|
||||||
(
|
(raw_dt, raw_len, raw_title, raw_desc)
|
||||||
(e or {}).get('dt'),
|
|
||||||
(e or {}).get('length'),
|
|
||||||
(e or {}).get('title'),
|
|
||||||
(e or {}).get('description'),
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
evrow = CUR.fetchone()
|
evrow = CUR.fetchone()
|
||||||
if evrow and evrow[0]:
|
if evrow and evrow[0]:
|
||||||
|
|
@ -800,8 +837,18 @@ def insert_usefulinfo_record(parsed):
|
||||||
"INSERT INTO useful_info_summary_event (summary_id, event_id) VALUES (%s, %s) ON CONFLICT DO NOTHING",
|
"INSERT INTO useful_info_summary_event (summary_id, event_id) VALUES (%s, %s) ON CONFLICT DO NOTHING",
|
||||||
(summary_id, evrow[0])
|
(summary_id, evrow[0])
|
||||||
)
|
)
|
||||||
except Exception:
|
print(f"[usefulinfo] inserted event id={evrow[0]} (summary_id={summary_id}) dt='{dt_str}' parsed={parsed_ok} iso='{parsed_iso}' all_day={all_day} minutes={computed_minutes} title='{raw_title}'")
|
||||||
pass
|
else:
|
||||||
|
print(f"[usefulinfo][warn] no event id returned for dt='{dt_str}' title='{raw_title}'")
|
||||||
|
except Exception as ex_ins:
|
||||||
|
print("[usefulinfo][event-insert-failed] summary_id=", summary_id,
|
||||||
|
" event=", e,
|
||||||
|
" dt_str=", dt_str,
|
||||||
|
" parsed_ok=", parsed_ok,
|
||||||
|
" parsed_iso=", parsed_iso,
|
||||||
|
" all_day=", all_day,
|
||||||
|
" computed_minutes=", computed_minutes,
|
||||||
|
" error=", str(ex_ins))
|
||||||
|
|
||||||
CON.commit()
|
CON.commit()
|
||||||
finally:
|
finally:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue