diff --git a/wwwroot/api/cockpit_chat.dspy b/wwwroot/api/cockpit_chat.dspy index 07ccbf0..96db287 100644 --- a/wwwroot/api/cockpit_chat.dspy +++ b/wwwroot/api/cockpit_chat.dspy @@ -447,12 +447,16 @@ async def _find_project(sor, name, org_id): {"name": name, "oid": org_id}) if recs: return recs[0] - # Fuzzy match: name contains keyword - # Use f-string for LIKE to avoid aiomysql % escaping issues - kw = name.replace("'", "''") - sql = f"SELECT id, name FROM sd_projects WHERE name LIKE '%{kw}%' AND org_id='{org_id}' LIMIT 1" - recs = await sor.sqlExe(sql, {}) - return recs[0] if recs else None + # Fuzzy: load all projects for this org and match in Python + all_recs = await sor.sqlExe( + "SELECT id, name FROM sd_projects WHERE org_id=${oid}$", + {"oid": org_id}) + kw = name.lower() + for rec in (all_recs or []): + rname = (getattr(rec, 'name', '') or '').lower() + if kw in rname: + return rec + return None # ==================== 问题路由 ====================