helion: stabilize doc context, remove legacy webhook path, add stack smoke canary

This commit is contained in:
Apple
2026-02-18 09:36:16 -08:00
parent 760022d7f5
commit d42bb09912
4 changed files with 111 additions and 387 deletions

View File

@@ -86,7 +86,8 @@ class DocumentService:
doc_id: str,
doc_url: Optional[str] = None,
file_name: Optional[str] = None,
dao_id: Optional[str] = None
dao_id: Optional[str] = None,
user_id: Optional[str] = None,
) -> bool:
"""
Save document context for a session.
@@ -104,10 +105,10 @@ class DocumentService:
True if saved successfully
"""
try:
# Extract user_id from session_id if possible
# Extract fallback user_id from session_id if not provided.
# Format: "channel:identifier" or "channel:user_id"
parts = session_id.split(":", 1)
user_id = parts[1] if len(parts) > 1 else session_id
fact_user_id = user_id or (parts[1] if len(parts) > 1 else session_id)
# Save as fact in Memory Service
fact_key = f"doc_context:{session_id}"
@@ -116,14 +117,17 @@ class DocumentService:
"doc_url": doc_url,
"file_name": file_name,
"dao_id": dao_id,
"user_id": user_id,
"saved_at": datetime.utcnow().isoformat()
}
result = await self.memory_client.upsert_fact(
user_id=user_id,
user_id=fact_user_id,
fact_key=fact_key,
fact_value_json=fact_value_json,
team_id=dao_id
# Keep doc context globally addressable for follow-up calls
# that may not include dao_id/team_id in retrieval.
team_id=None,
)
logger.info(f"Saved doc context for session {session_id}: doc_id={doc_id}")
@@ -260,7 +264,8 @@ class DocumentService:
doc_id=doc_id,
doc_url=doc_url,
file_name=file_name,
dao_id=dao_id
dao_id=dao_id,
user_id=user_id,
)
# Convert text to markdown format
@@ -312,7 +317,8 @@ class DocumentService:
doc_id=doc_id,
doc_url=doc_url,
file_name=file_name,
dao_id=dao_id
dao_id=dao_id,
user_id=user_id,
)
return ParsedResult(
@@ -599,7 +605,8 @@ async def save_doc_context(
doc_id: str,
doc_url: Optional[str] = None,
file_name: Optional[str] = None,
dao_id: Optional[str] = None
dao_id: Optional[str] = None,
user_id: Optional[str] = None,
) -> bool:
"""Save document context for a session"""
return await doc_service.save_doc_context(
@@ -607,11 +614,11 @@ async def save_doc_context(
doc_id=doc_id,
doc_url=doc_url,
file_name=file_name,
dao_id=dao_id
dao_id=dao_id,
user_id=user_id,
)
async def get_doc_context(session_id: str) -> Optional[DocContext]:
"""Get document context for a session"""
return await doc_service.get_doc_context(session_id)