gbrabbit commited on
Commit
b4bf4f7
ยท
1 Parent(s): 7ab8293

Auto commit at 25-2025-08 23:59:36

Browse files
lily_llm_api/api/routers/document_router.py CHANGED
@@ -12,7 +12,7 @@ from ...models.schemas import (
12
  DocumentUploadResponse, RAGQueryRequest, RAGQueryResponse,
13
  DocumentProcessResponse, MultimodalRAGResponse
14
  )
15
- from ...services.session_registry import set_user_for_room, set_flag_for_room
16
 
17
  logger = logging.getLogger(__name__)
18
  router = APIRouter()
@@ -59,6 +59,11 @@ async def upload_document(
59
  set_flag_for_room(room_id, "use_rag_images_once", True)
60
  except Exception:
61
  pass
 
 
 
 
 
62
  return DocumentUploadResponse(
63
  success=True,
64
  document_id=result.get("document_id", document_id),
 
12
  DocumentUploadResponse, RAGQueryRequest, RAGQueryResponse,
13
  DocumentProcessResponse, MultimodalRAGResponse
14
  )
15
+ from ...services.session_registry import set_user_for_room, set_flag_for_room, set_last_document_for_room
16
 
17
  logger = logging.getLogger(__name__)
18
  router = APIRouter()
 
59
  set_flag_for_room(room_id, "use_rag_images_once", True)
60
  except Exception:
61
  pass
62
+ # ๋ฐฉ๋ณ„ ๋งˆ์ง€๋ง‰ ๋ฌธ์„œID ๊ธฐ๋ก (ํ›„์† ์š”์ฒญ์—์„œ ๊ธฐ๋ณธ ๋ฌธ์„œ ์„ ํƒ)
63
+ try:
64
+ set_last_document_for_room(room_id, result.get("document_id", document_id))
65
+ except Exception:
66
+ pass
67
  return DocumentUploadResponse(
68
  success=True,
69
  document_id=result.get("document_id", document_id),
lily_llm_api/api/routers/generation_router.py CHANGED
@@ -161,10 +161,24 @@ async def generate(request: Request,
161
  from lily_llm_core.memory_store import memory_store
162
  # ๊ฐ„๋‹จํžˆ ์ตœ๊ทผ ์š”์•ฝ ์ปจํ…์ŠคํŠธ๋ฅผ ์ €์žฅํ•˜๊ณ  ํ‚คํ† ํ”ฝ์€ ๋น„์›€(ํ›„์† ํ™•์žฅ ์ง€์ )
163
  summary_text = ""
 
164
  if hasattr(context_manager, 'get_summary_context'):
165
  summary_text = context_manager.get_summary_context(session_id)
 
 
 
 
 
 
 
 
166
  last_ts = time.time()
167
- memory_store.upsert_room_memory(room_id, summary_text, "", last_ts)
 
 
 
 
 
168
  except Exception as _ms:
169
  print(f"โš ๏ธ [DEBUG] ๋ฃธ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ ์‹คํŒจ: {_ms}")
170
  except Exception as _e:
 
161
  from lily_llm_core.memory_store import memory_store
162
  # ๊ฐ„๋‹จํžˆ ์ตœ๊ทผ ์š”์•ฝ ์ปจํ…์ŠคํŠธ๋ฅผ ์ €์žฅํ•˜๊ณ  ํ‚คํ† ํ”ฝ์€ ๋น„์›€(ํ›„์† ํ™•์žฅ ์ง€์ )
163
  summary_text = ""
164
+ key_topics_csv = ""
165
  if hasattr(context_manager, 'get_summary_context'):
166
  summary_text = context_manager.get_summary_context(session_id)
167
+ # ํ‚คํ† ํ”ฝ ์ถ”์ถœ์ด ๊ฐ€๋Šฅํ•˜๋ฉด ํ•จ๊ป˜ ์ €์žฅ
168
+ try:
169
+ if hasattr(context_manager, 'get_key_topics'):
170
+ topics = context_manager.get_key_topics(session_id)
171
+ if topics:
172
+ key_topics_csv = ",".join(topics)
173
+ except Exception:
174
+ key_topics_csv = ""
175
  last_ts = time.time()
176
+ memory_store.upsert_room_memory(room_id, summary_text, key_topics_csv, last_ts)
177
+ # ์‚ฌ์šฉ์ž ์žฅ๊ธฐ ๋ฉ”๋ชจ ํ–‰์ด ์—†์œผ๋ฉด ์ƒ์„ฑ (๋นˆ ๋…ธํŠธ)
178
+ try:
179
+ memory_store.upsert_user_memory(user_id, notes="")
180
+ except Exception:
181
+ pass
182
  except Exception as _ms:
183
  print(f"โš ๏ธ [DEBUG] ๋ฃธ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ ์‹คํŒจ: {_ms}")
184
  except Exception as _e:
lily_llm_api/api/routers/user_memory_router.py CHANGED
@@ -49,15 +49,22 @@ async def upsert_room_summary(
49
  try:
50
  from lily_llm_core.memory_store import memory_store
51
  import time
52
- # summary๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด ํ˜„์žฌ ์„ธ์…˜ ์ปจํ…์ŠคํŠธ ์š”์•ฝ์„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
53
  if not summary:
54
  try:
55
  from lily_llm_core.context_manager import context_manager
56
- session_id = f"room_{room_id}_group" # ๊ธฐ๋ณธ ์„ธ์…˜ ํ‚ค ๊ฐ€์ •
57
- summary = context_manager.get_summary_context(session_id)
58
- topics = context_manager.get_key_topics(session_id)
59
- if topics and not key_topics:
60
- key_topics = ",".join(topics)
 
 
 
 
 
 
 
61
  except Exception:
62
  pass
63
  memory_store.upsert_room_memory(room_id, summary, key_topics, time.time())
 
49
  try:
50
  from lily_llm_core.memory_store import memory_store
51
  import time
52
+ # summary๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด ํ•ด๋‹น ๋ฃธ์˜ ์„ธ์…˜๋“ค ์ค‘ ์ตœ๊ทผ ์„ธ์…˜์„ ์ฐพ์•„ ์š”์•ฝ/ํ‚คํ† ํ”ฝ์„ ์ถ”์ถœ
53
  if not summary:
54
  try:
55
  from lily_llm_core.context_manager import context_manager
56
+ # room_{room_id}_* ํŒจํ„ด ๊ฒ€์ƒ‰
57
+ candidate_sessions = [sid for sid in getattr(context_manager, 'session_conversations', {}).keys() if str(sid).startswith(f"room_{room_id}_")]
58
+ # ๊ฐ€์žฅ ์ตœ๊ทผ ํ„ด์ด ๋งŽ์€ ์„ธ์…˜์„ ์šฐ์„  ์‚ฌ์šฉ
59
+ if candidate_sessions:
60
+ best_sid = max(candidate_sessions, key=lambda sid: len(context_manager.session_conversations.get(sid, [])))
61
+ summary = context_manager.get_summary_context(best_sid)
62
+ try:
63
+ topics = context_manager.get_key_topics(best_sid)
64
+ if topics and not key_topics:
65
+ key_topics = ",".join(topics)
66
+ except Exception:
67
+ pass
68
  except Exception:
69
  pass
70
  memory_store.upsert_room_memory(room_id, summary, key_topics, time.time())
lily_llm_api/services/session_registry.py CHANGED
@@ -12,6 +12,7 @@ _session_to_user: Dict[str, str] = {}
12
  _last_user: Optional[str] = None
13
  _last_updated_at: float = 0.0
14
  _room_flags: Dict[str, Dict[str, Dict[str, Any]]] = {}
 
15
 
16
  def set_user_for_room(room_id: Optional[str], user_id: Optional[str]) -> None:
17
  if not room_id or not user_id:
@@ -51,6 +52,8 @@ def clear() -> None:
51
  global _last_user, _last_updated_at
52
  _last_user = None
53
  _last_updated_at = 0.0
 
 
54
 
55
  # ---- room-scoped one-shot flags ----
56
  def set_flag_for_room(room_id: Optional[str], key: str, value: bool = True, ttl_seconds: Optional[float] = None) -> None:
@@ -115,4 +118,15 @@ def pop_flag_for_room(room_id: Optional[str], key: str) -> Optional[bool]:
115
  return None
116
  return bool(removed.get("value"))
117
 
 
 
 
 
 
 
 
 
 
 
 
118
 
 
12
  _last_user: Optional[str] = None
13
  _last_updated_at: float = 0.0
14
  _room_flags: Dict[str, Dict[str, Dict[str, Any]]] = {}
15
+ _room_last_document: Dict[str, str] = {}
16
 
17
  def set_user_for_room(room_id: Optional[str], user_id: Optional[str]) -> None:
18
  if not room_id or not user_id:
 
52
  global _last_user, _last_updated_at
53
  _last_user = None
54
  _last_updated_at = 0.0
55
+ _room_flags.clear()
56
+ _room_last_document.clear()
57
 
58
  # ---- room-scoped one-shot flags ----
59
  def set_flag_for_room(room_id: Optional[str], key: str, value: bool = True, ttl_seconds: Optional[float] = None) -> None:
 
118
  return None
119
  return bool(removed.get("value"))
120
 
121
+ # ---- room-scoped last document id ----
122
+ def set_last_document_for_room(room_id: Optional[str], document_id: Optional[str]) -> None:
123
+ if not room_id or not document_id:
124
+ return
125
+ _room_last_document[str(room_id)] = str(document_id)
126
+
127
+ def get_last_document_for_room(room_id: Optional[str]) -> Optional[str]:
128
+ if not room_id:
129
+ return None
130
+ return _room_last_document.get(str(room_id))
131
+
132