Skip to content

Commit 67dbfd8

Browse files
committed
Milestone 11 : Non blocking gating
1 parent ffcb54d commit 67dbfd8

1 file changed

Lines changed: 50 additions & 39 deletions

File tree

  • src/server/core/acontext_core/service/controller

src/server/core/acontext_core/service/controller/message.py

Lines changed: 50 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -197,42 +197,49 @@ async def process_session_pending_message(
197197
)
198198
for m in messages
199199
]
200-
r = await SD.should_generate_session_display_title(session, session_id)
201-
should_generate_title, eil = r.unpack()
202-
if eil:
203-
return r
204-
if not should_generate_title:
205-
first_user_message_text = None
206-
LOG.debug(
207-
f"Session {session_id} already has display_title, "
208-
"skip title-input extraction"
209-
)
210-
else:
211-
first_user_message_text = extract_first_user_message_text(messages_data)
212-
is_quality_ok, quality_reason = check_title_input_quality(
213-
first_user_message_text
214-
)
215-
if not is_quality_ok:
216-
first_user_message_text = None
200+
first_user_message_text = None
201+
try:
202+
r = await SD.should_generate_session_display_title(session, session_id)
203+
should_generate_title, eil = r.unpack()
204+
if eil:
205+
raise ValueError(eil.errmsg)
206+
if not should_generate_title:
217207
LOG.debug(
218-
f"Skip title-input generation for session {session_id}: "
219-
f"{quality_reason}"
208+
f"Session {session_id} already has display_title, "
209+
"skip title-input extraction"
220210
)
221211
else:
222-
LOG.debug(
223-
f"Extracted first user text from pending session {session_id}, "
224-
f"length={len(first_user_message_text)}"
212+
first_user_message_text = extract_first_user_message_text(
213+
messages_data
225214
)
226-
227-
if first_user_message_text is not None:
228-
title_candidate = None
229-
r = await generate_session_title_candidate(first_user_message_text)
230-
title_candidate_raw, eil = r.unpack()
231-
if eil:
215+
is_quality_ok, quality_reason = check_title_input_quality(
216+
first_user_message_text
217+
)
218+
if not is_quality_ok:
219+
first_user_message_text = None
220+
LOG.debug(
221+
f"Skip title-input generation for session {session_id}: "
222+
f"{quality_reason}"
223+
)
224+
else:
225+
LOG.debug(
226+
f"Extracted first user text from pending session {session_id}, "
227+
f"length={len(first_user_message_text)}"
228+
)
229+
except Exception as title_gate_err:
230+
first_user_message_text = None
232231
LOG.warning(
233-
f"Title generation failed for session {session_id}: {eil.errmsg}"
232+
f"Skip title extraction for session {session_id}: {title_gate_err}"
234233
)
235-
else:
234+
235+
if first_user_message_text is not None:
236+
try:
237+
title_candidate = None
238+
r = await generate_session_title_candidate(first_user_message_text)
239+
title_candidate_raw, eil = r.unpack()
240+
if eil:
241+
raise ValueError(eil.errmsg)
242+
236243
title_candidate = sanitize_generated_title(
237244
title_candidate_raw, first_user_message_text
238245
)
@@ -246,15 +253,19 @@ async def process_session_pending_message(
246253
f"{title_candidate[:80]}"
247254
)
248255

249-
if title_candidate is not None:
250-
async with DB_CLIENT.get_session_context() as session:
251-
r = await SD.update_session_display_title(
252-
session, session_id, title_candidate
253-
)
254-
_, eil = r.unpack()
255-
if eil:
256-
return r
257-
LOG.debug(f"Persisted display_title for session {session_id}")
256+
if title_candidate is not None:
257+
async with DB_CLIENT.get_session_context() as session:
258+
r = await SD.update_session_display_title(
259+
session, session_id, title_candidate
260+
)
261+
_, eil = r.unpack()
262+
if eil:
263+
raise ValueError(eil.errmsg)
264+
LOG.debug(f"Persisted display_title for session {session_id}")
265+
except Exception as title_err:
266+
LOG.warning(
267+
f"Skip title generation/persist for session {session_id}: {title_err}"
268+
)
258269

259270
ls_session = None
260271
async with DB_CLIENT.get_session_context() as session:

0 commit comments

Comments
 (0)