fix: address multiple bugs found in code review

- Fix dirty-user flush race: discard IDs individually after successful save
- Escape LIKE wildcards in LLM-generated topic keywords for DB queries
- Anonymize absent-member aliases to prevent LLM de-anonymization
- Pass correct MIME type to vision model based on image file extension
- Use enumerate instead of list.index() in bcs-scan loop
- Allow bot @mentions with non-report intent to fall through to moderation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-01 01:16:38 -05:00
parent eb7eb81621
commit 2ec9b16b99
6 changed files with 35 additions and 22 deletions

View File

@@ -628,7 +628,8 @@ class Database:
return []
# Build OR conditions for each keyword
conditions = " OR ".join(["Topics LIKE ?" for _ in topic_keywords])
params = [limit, user_id] + [f"%{kw}%" for kw in topic_keywords]
escaped = [kw.replace("%", "[%]").replace("_", "[_]") for kw in topic_keywords]
params = [limit, user_id] + [f"%{kw}%" for kw in escaped]
cursor.execute(
f"""SELECT TOP (?) Memory, Topics, Importance, CreatedAt
FROM UserMemory