Platform default model (deepseek-v4-pro) only supports text input. Now tries vision first, falls back to filename-based description.
Merged into file-hub to share the same environment (platform resource quota limits to one web_function). Routes: /api/photos/upload, /api/photos, /api/photos/:id/url, /api/photos/:id/ai-caption.
- web_function on WeHub Cloud (PG + object_storage + model_router) - File upload via presigned PUT URLs, download, share links, delete - AI streaming Q&A via SSE from model_router (OpenAI-compatible) - Drag-and-drop file upload UI, markdown-rendered chat responses