From a269c2494d93fbee36ffc6faeb1b718d64c4b8aa Mon Sep 17 00:00:00 2001 From: Rafhan Mazaya Fathurrahman Date: Thu, 2 Jul 2026 15:43:51 +0700 Subject: [PATCH] feat: copy Excel report to public folder for direct browser download --- .../pfm-web-app/public/test_images_report.xlsx | Bin 0 -> 12046 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 backend/pfm-web-app/public/test_images_report.xlsx diff --git a/backend/pfm-web-app/public/test_images_report.xlsx b/backend/pfm-web-app/public/test_images_report.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..425e5af3d02b6a2c14bb0662d520e8d50ae60c95 GIT binary patch literal 12046 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