feat: Add AI report generation with DIFY integration
- Add Users table for display name resolution from AD authentication - Integrate DIFY AI service for report content generation - Create docx assembly service with image embedding from MinIO - Add REST API endpoints for report generation and download - Add WebSocket notifications for generation progress - Add frontend UI with progress modal and download functionality - Add integration tests for report generation flow Report sections (Traditional Chinese): - 事件摘要 (Summary) - 時間軸 (Timeline) - 參與人員 (Participants) - 處理過程 (Resolution Process) - 目前狀態 (Current Status) - 最終處置結果 (Final Resolution) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -31,6 +31,9 @@ class ADAuthService:
|
||||
Dict containing:
|
||||
- token: AD authentication token
|
||||
- username: Display name from AD
|
||||
- email: User email address
|
||||
- office_location: Office location (optional)
|
||||
- job_title: Job title (optional)
|
||||
- expires_at: Estimated token expiry datetime
|
||||
|
||||
Raises:
|
||||
@@ -58,6 +61,9 @@ class ADAuthService:
|
||||
ad_token = token_data.get("access_token")
|
||||
user_info = token_data.get("userInfo", {})
|
||||
display_name = user_info.get("name") or username
|
||||
email = user_info.get("email") or username
|
||||
office_location = user_info.get("officeLocation")
|
||||
job_title = user_info.get("jobTitle")
|
||||
|
||||
if not ad_token:
|
||||
raise ValueError("No token received from AD API")
|
||||
@@ -74,7 +80,14 @@ class ADAuthService:
|
||||
# Fallback: assume 1 hour if not provided
|
||||
expires_at = datetime.utcnow() + timedelta(hours=1)
|
||||
|
||||
return {"token": ad_token, "username": display_name, "expires_at": expires_at}
|
||||
return {
|
||||
"token": ad_token,
|
||||
"username": display_name,
|
||||
"email": email,
|
||||
"office_location": office_location,
|
||||
"job_title": job_title,
|
||||
"expires_at": expires_at,
|
||||
}
|
||||
|
||||
except httpx.HTTPStatusError as e:
|
||||
# Authentication failed (401) or other HTTP errors
|
||||
|
||||
Reference in New Issue
Block a user