mirror of
https://github.com/Tencent/WeKnora.git
synced 2026-09-01 14:53:07 +08:00
7fd566bc15
IM platforms (Feishu, Slack, Telegram, DingTalk, Mattermost, WeCom) cannot render provider:// URLs (local://, minio://, s3://, etc.) that appear in LLM answers containing knowledge base images. The web frontend handles these via the authenticated /files endpoint, but IM clients need publicly resolvable HTTP URLs. Changes: - Add HMAC-SHA256 presigned URL utility (internal/utils/presign.go) for generating time-limited, signature-verified file access URLs - Add GET /api/v1/files/presigned endpoint that serves files without session auth, verified by HMAC signature and expiry - Update localFileService.GetFileURL() to return presigned HTTP URLs when APP_EXTERNAL_URL is configured (cloud backends already return presigned URLs via their SDKs) - Add IM content rewriting pipeline: strip <image> XML tags, strip citation tags, rewrite storage URLs to HTTP — applied at all IM output points (streaming flush, non-streaming reply, fallback) - Add holdback buffer in streaming flush to prevent URL/tag splitting across chunk boundaries Closes #1058