fix: 이메일 멀티 폴더 조회 + Synology 무응답 방지
- email_tool: INBOX/Gmail/Technicalkorea 3개 폴더 순회 - 폴더별 try/except isolation (하나 실패해도 나머지 조회) - UID → folder:uid 형식 (폴더간 충돌 방지) - 날짜 parsedate_to_datetime 정렬 - 폴더 라벨 표시 (개인/Gmail/회사) - worker: response_sent 플래그 + finally 무응답 방지 - 어떤 에러 경로에서든 Synology에 최소 1회 응답 보장 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -88,11 +88,12 @@ def _parse_classification(raw: str) -> dict:
|
||||
|
||||
|
||||
async def _send_callback(job: Job, text: str) -> None:
|
||||
"""Synology callback이면 전송."""
|
||||
"""Synology callback이면 전송 + response_sent 플래그."""
|
||||
if job.callback == "synology":
|
||||
if len(text) > SYNOLOGY_MAX_LEN:
|
||||
text = text[:SYNOLOGY_MAX_LEN] + "\n\n...(생략됨)"
|
||||
await send_to_synology(text)
|
||||
job.response_sent = True
|
||||
|
||||
|
||||
def _pre_route(message: str) -> dict | None:
|
||||
@@ -387,6 +388,7 @@ async def run(job: Job) -> None:
|
||||
if job.callback == "synology":
|
||||
try:
|
||||
await send_to_synology("⚠️ 처리 중 오류가 발생했습니다. 다시 시도해주세요.", raw=True)
|
||||
job.response_sent = True
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
@@ -395,3 +397,9 @@ async def run(job: Job) -> None:
|
||||
pass
|
||||
finally:
|
||||
await state_stream.push_done(job.id)
|
||||
# Synology 무응답 방지: 응답이 한 번도 안 갔으면 에러 메시지
|
||||
if job.callback == "synology" and not job.response_sent:
|
||||
try:
|
||||
await send_to_synology("⚠️ 요청을 처리하지 못했습니다. 다시 시도해주세요.", raw=True)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user