feat(images): 課程圖片伺服器端壓縮(O3.1)——scaleDown 2048 + JPEG 85、上限放寬至 10MB #34

Merged
a620906209 merged 1 commits from feat/course-image-compression into master 2026-06-11 15:47:35 +00:00
Owner

摘要

實作 openspec change course-image-compression(效能優化計畫 O3.1),8/8 tasks 完成。

課程封面/相簿原本原檔直存且上限 2MB(手機原圖傳不上來);聊天圖片卻早有壓縮管線。本 PR 統一行為。

變更

  • 新增共用 trait CompressesImages(app/Traits/):長邊 >2048px 等比縮小 + JPEG quality 85 + uuid 檔名,與聊天管線參數一致
  • CourseImageController 封面/相簿套用壓縮;上傳上限 2MB → 10MB(入庫前會壓縮,510MB 手機照通常壓到 300600KB)
  • 前端 CourseCard 與詳情頁相簿縮圖加 loading=lazy(詳情頁首屏封面刻意不加——首屏圖 lazy 反而變慢)
  • course-image-upload 主規格同步:新增「伺服器端圖片壓縮」requirement、大小上限改 10MB
  • CourseImageTest +4:10MB 邊界、PNG 轉存 .jpg、3000px 縮至 ≤2048、小圖不放大

驗證

容器內全套件 155 passed / 400 assertions

部署注意

  • 前端有改動(lazy loading),VPS 部署需 rebuild frontend image
  • 既有舊圖不回溯處理(自然汰換,見 design.md D3)
  • 聊天端改用 trait 留待後續(該處無測試覆蓋,不在本 change 重構,見 design.md D2)
  • merge 後 openspec change 可歸檔

🤖 Generated with Claude Code

## 摘要 實作 openspec change `course-image-compression`(效能優化計畫 O3.1),8/8 tasks 完成。 課程封面/相簿原本**原檔直存**且上限 2MB(手機原圖傳不上來);聊天圖片卻早有壓縮管線。本 PR 統一行為。 ## 變更 - 新增共用 trait `CompressesImages`(app/Traits/):長邊 >2048px 等比縮小 + JPEG quality 85 + uuid 檔名,與聊天管線參數一致 - `CourseImageController` 封面/相簿套用壓縮;上傳上限 **2MB → 10MB**(入庫前會壓縮,5~10MB 手機照通常壓到 300~600KB) - 前端 `CourseCard` 與詳情頁相簿縮圖加 `loading=lazy`(詳情頁首屏封面刻意不加——首屏圖 lazy 反而變慢) - `course-image-upload` 主規格同步:新增「伺服器端圖片壓縮」requirement、大小上限改 10MB - `CourseImageTest` +4:10MB 邊界、PNG 轉存 .jpg、3000px 縮至 ≤2048、小圖不放大 ## 驗證 容器內全套件 **155 passed / 400 assertions**。 ## 部署注意 - 前端有改動(lazy loading),VPS 部署需 rebuild frontend image - 既有舊圖不回溯處理(自然汰換,見 design.md D3) - 聊天端改用 trait 留待後續(該處無測試覆蓋,不在本 change 重構,見 design.md D2) - merge 後 openspec change 可歸檔 🤖 Generated with [Claude Code](https://claude.com/claude-code)
a620906209 added 1 commit 2026-06-11 15:44:19 +00:00
實作 openspec change course-image-compression(O3.1 體感優化):
- 新增 App\Traits\CompressesImages:與聊天圖片管線參數一致的共用壓縮邏輯
- CourseImageController 封面/相簿套用壓縮,上傳上限 2MB→10MB(容納手機原圖)
- 前端課程卡片與相簿縮圖加 loading=lazy(詳情頁首屏封面刻意不加)
- CourseImageTest +4 案例(10MB 邊界、轉存 .jpg、>2048 縮小、小圖不放大)
- course-image-upload 主規格同步(新增伺服器端壓縮 requirement)

容器內全套件 155 passed / 400 assertions。
聊天端改用 trait 留待後續(該處無測試覆蓋,不在本 change 重構)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
a620906209 merged commit c53e9657b3 into master 2026-06-11 15:47:35 +00:00
a620906209 deleted branch feat/course-image-compression 2026-06-11 15:47:35 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: a620906209/CFDivePlatform#34