Replace generated archive download response with FileResponse streaming so ZIP files are not fully loaded into process memory.
Move monthly archive task output to a temporary file and upload that file to storage, and write invoice attachments into ZIP archives in chunks.
Add Celery memory guard settings, a memory-aware base task hook, and periodic /tmp cleanup for prefixed archive files older than one day.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>