From 551ebc3ef48e9afd2b879ccbf8cafded796b7d53 Mon Sep 17 00:00:00 2001 From: OpenSquared Date: Mon, 29 Jun 2026 19:50:18 +0200 Subject: [PATCH] feat: desk ia --- backend/services/database.py | 8 +++++--- backend/services/instrument_service.py | 9 +++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/backend/services/database.py b/backend/services/database.py index cdc69d9..ad509af 100644 --- a/backend/services/database.py +++ b/backend/services/database.py @@ -1146,11 +1146,13 @@ def init_db(): ] for _desk in _AI_DESK_DEFAULTS: try: + # Guard by type, not name — so renaming a desk doesn't trigger a re-seed c.execute( - "INSERT OR IGNORE INTO ai_desks (name, type, active, system_prompt, instruments, config) " - "VALUES (?,?,?,?,?,?)", + "INSERT INTO ai_desks (name, type, active, system_prompt, instruments, config) " + "SELECT ?,?,?,?,?,? WHERE NOT EXISTS (SELECT 1 FROM ai_desks WHERE type = ?)", (_desk["name"], _desk["type"], _desk["active"], - _desk["system_prompt"], _desk["instruments"], _desk["config"]) + _desk["system_prompt"], _desk["instruments"], _desk["config"], + _desk["type"]) ) except Exception: pass diff --git a/backend/services/instrument_service.py b/backend/services/instrument_service.py index e45c334..cbb35c6 100644 --- a/backend/services/instrument_service.py +++ b/backend/services/instrument_service.py @@ -544,13 +544,18 @@ def _get_relevant_events( (SELECT GROUP_CONCAT(DISTINCT a.instrument) FROM causal_event_analyses a WHERE a.market_event_id = e.id) AS analyzed_instruments, - (SELECT a.template_id FROM causal_event_analyses a WHERE a.market_event_id = e.id ORDER BY a.id DESC LIMIT 1) AS template_id, + (SELECT a.template_id FROM causal_event_analyses a WHERE a.market_event_id = e.id ORDER BY a.id DESC LIMIT 1) AS cea_template_id, (SELECT a.id FROM causal_event_analyses a WHERE a.market_event_id = e.id ORDER BY a.id DESC LIMIT 1) AS analysis_id FROM market_events e ORDER BY e.start_date DESC """).fetchall() conn.close() - all_events = [dict(r) for r in rows] + # Use cea_template_id (from causal_event_analyses) explicitly to avoid + # any collision with an e.* column named template_id + all_events = [ + {**dict(r), "template_id": r["cea_template_id"]} + for r in rows + ] except Exception as e: logger.warning(f"[instrument_service] Could not load market events: {e}") return []