a620906209
|
0af6d2a089
|
Merge pull request 'fix(ci): 補上 php84-simplexml,修正 aws-sdk-php composer install 失敗' (#56) from feat/cloud-ready-s3-storage into master
Deploy Production / deploy (push) Successful in 16s
Run Tests / test (push) Successful in 40s
Reviewed-on: #56
|
2026-08-02 19:47:25 +00:00 |
|
a620906209
|
3b73be4051
|
fix(ci): 補上 php84-simplexml,修正 aws-sdk-php composer install 失敗
Run Tests / test (pull_request) Successful in 39s
aws/aws-sdk-php(因 league/flysystem-aws-s3-v3 新增)要求 ext-simplexml,
CI 的 Alpine runner 用 apk 逐一裝擴充套件,之前沒裝這個 package 導致
composer install 失敗。正式環境的 Dockerfile 是 Debian 版 php:8.2-fpm,
simplexml 內建就有,不受影響,只有 CI 這邊要補。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011LpcY9b7y9x4fusHBTXciQ
|
2026-08-03 03:46:10 +08:00 |
|
a620906209
|
15318d5734
|
Merge pull request 'feat(storage): S3 相容物件儲存支援(cloud-ready-s3-storage)' (#55) from feat/cloud-ready-s3-storage into master
Deploy Production / deploy (push) Successful in 23s
Run Tests / test (push) Failing after 15s
Reviewed-on: #55
|
2026-08-02 19:44:03 +00:00 |
|
a620906209
|
a0fa339d6d
|
docs: 標註 S3 相容儲存尚未啟用(缺 R2 帳號)
Run Tests / test (pull_request) Failing after 11s
在 .env.example 的 AWS_* 區塊與 MigrateStorageToS3 command 加上
TODO(2026-08-03) 註解,說明目前功能已實作但因缺帳號未啟用,直接在
code 裡就看得到狀態,不用另外翻 openspec 文件。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011LpcY9b7y9x4fusHBTXciQ
|
2026-08-03 03:40:47 +08:00 |
|
a620906209
|
1c81b5fc10
|
docs(openspec): 標記 cloud-ready-s3-storage R2/VPS 階段暫緩
Hank 目前沒有 S3 相容服務帳號,tasks 4-6(R2 建置、VPS 遷移、切換驗證)
暫緩,等申請帳號後再繼續。程式碼部分(1-3 組)已完成,不受影響。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011LpcY9b7y9x4fusHBTXciQ
|
2026-08-03 03:38:20 +08:00 |
|
a620906209
|
54178f6d70
|
feat(storage): S3 相容物件儲存支援 + 一次性遷移指令
實作 cloud-ready-s3-storage 的程式碼部分(tasks 1-3):
- config/filesystems.php:public disk 的 driver 改吃 FILESYSTEM_DISK env,
切換為 s3 時不需改動既有 6 個 Storage::disk('public') 呼叫點
- .env.example:FILESYSTEM_DISK 維持 local 預設(本機無 S3 服務),補齊
AWS_ENDPOINT/AWS_URL/AWS_USE_PATH_STYLE_ENDPOINT 供 R2 等服務使用
- 新增 storage:migrate-to-s3 指令:一次性把 storage/app/public 既有檔案
上傳到 S3,來源固定讀本機磁碟(不受 FILESYSTEM_DISK 影響),支援
--dry-run,失敗不中斷且不刪除本機檔案
- 新增測試:遷移指令(上傳/dry-run/部分失敗)+ public disk 在 local
driver 下零 AWS credentials 也能正常運作
239 tests passed / 578 assertions,容器內驗證無回歸。
R2 環境準備、VPS 部署與實際切換(tasks 4-6)待 Hank 自行處理。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011LpcY9b7y9x4fusHBTXciQ
|
2026-08-03 03:35:24 +08:00 |
|
a620906209
|
e794fddfb1
|
chore(openspec): 新增 cloud-ready-s3-storage change 規劃
延續 P1 雲原生改造方向,規劃將上傳檔案(課程圖片、教練證照、聊天室圖片)
改存 S3 相容物件儲存,實現 container 無狀態化。核心設計:public disk
driver 直接吃 FILESYSTEM_DISK env 切換,既有 6 個呼叫點零改動,本機開發
環境維持 local 預設不受影響。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011LpcY9b7y9x4fusHBTXciQ
|
2026-08-03 03:23:38 +08:00 |
|
a620906209
|
d1fe3d4138
|
Merge pull request 'docs(readme): 服務 URL 表格補上生產環境對應網址' (#54) from feat/swagger-coverage-gaps into master
Deploy Production / deploy (push) Successful in 13s
Run Tests / test (push) Successful in 29s
Reviewed-on: #54
|
2026-06-23 08:05:36 +00:00 |
|
a620906209
|
0bffa909e2
|
docs(readme): 服務 URL 表格補上生產環境對應網址
Run Tests / test (pull_request) Successful in 32s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-23 16:03:11 +08:00 |
|
a620906209
|
9222bf17fc
|
Merge pull request 'fix(swagger): 修正 VPS 無法顯示 Swagger UI 的問題' (#53) from feat/swagger-coverage-gaps into master
Deploy Production / deploy (push) Successful in 17s
Run Tests / test (push) Successful in 33s
Reviewed-on: #53
|
2026-06-23 07:27:32 +00:00 |
|
a620906209
|
b218fa0964
|
fix(swagger): 修正 VPS 無法顯示 Swagger UI 的問題
Run Tests / test (pull_request) Successful in 33s
問題根因:
1. deploy.yml 未執行 l5-swagger:generate,VPS 上不存在 api-docs.json
2. @OA\Server 使用相對路徑 "/api",Swagger UI Try it out 無法正確打到 VPS API
修正:
- @OA\Server 改用 L5_SWAGGER_CONST_HOST 常數,透過 .env 各環境設定
- deploy.yml 在 config:cache 後補上 l5-swagger:generate 步驟
- .env.example 補上 L5_SWAGGER_CONST_HOST 與 L5_SWAGGER_GENERATE_ALWAYS 說明
VPS .env 需手動加入:
L5_SWAGGER_CONST_HOST=https://api.hank-space.com/api
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-23 15:23:18 +08:00 |
|
a620906209
|
a7e8468613
|
Merge pull request 'docs(swagger): 補全缺漏端點標註 + 更新 README 文件 URL' (#52) from feat/swagger-coverage-gaps into master
Deploy Production / deploy (push) Successful in 15s
Run Tests / test (push) Successful in 31s
Reviewed-on: #52
|
2026-06-23 07:09:07 +00:00 |
|
a620906209
|
60ff56a571
|
docs(swagger): 補全缺漏端點標註 + 更新 README 文件 URL
Run Tests / test (pull_request) Successful in 32s
新增 11 個先前缺漏的 @OA 標註:
- Token Refresh(Member / Provider / Admin)
- Provider 資格驗證申請(show / upload / delete cert / submit)
- 即時訊息聊天室(unread-counts / list / send / mark-read)
其他:
- l5-swagger.php 標題改為 CFDive Platform API
- README 補充 Swagger UI URL 與 JSON 端點位置
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-23 15:08:15 +08:00 |
|
a620906209
|
4afe7b5fd5
|
Merge pull request 'chore(openspec): archive cloud-ready-p1 + sync main specs' (#51) from chore/openspec-archive-cloud-ready-p1 into master
Deploy Production / deploy (push) Successful in 14s
Run Tests / test (push) Successful in 32s
Reviewed-on: #51
|
2026-06-17 19:11:04 +00:00 |
|
a620906209
|
c3572682ad
|
chore(openspec): 歸檔 cloud-ready-p1 + 同步主規格
Run Tests / test (pull_request) Successful in 30s
- 所有 task 驗證完成(7.1 stderr log / 7.2 無新增日誌檔 / 7.3 session 走 Redis)
- 同步 env-cloud-annotations 主 spec(LOG_CHANNEL 取代 LOG_STACK + 新增 scenario)
- 新增 scheduler-container 主 spec(獨立 container 取代 cron daemon)
- 移至 archive/2026-06-18-cloud-ready-p1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-18 03:05:57 +08:00 |
|
a620906209
|
13b6b4145c
|
Merge pull request 'feat(infra): 雲端就緒 P1 — Session/Log/Scheduler 改造' (#50) from feat/cloud-ready-p1 into master
Deploy Production / deploy (push) Successful in 12s
Run Tests / test (push) Successful in 31s
Reviewed-on: #50
|
2026-06-17 18:34:47 +00:00 |
|
a620906209
|
d423cf5079
|
feat(infra): 雲端就緒 P1 — Session/Log/Scheduler 改造
Run Tests / test (pull_request) Successful in 29s
- Dockerfile:移除 cron 安裝與 scheduler crontab 設定
- docker-entrypoint.sh:移除 service cron start
- docker-compose.yml:新增 scheduler service(php artisan schedule:work)
- .env.example:SESSION_DRIVER=redis、LOG_CHANNEL=stderr、移除 LOG_STACK/LOG_DAILY_DAYS
- docs/STARTUP.md:新增 Log 查看、VPS 維護窗口操作與 Rollback 說明
VPS 部署需手動更新 .env 並執行 docker compose up -d --build(詳見 STARTUP.md §11)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-18 02:34:01 +08:00 |
|
a620906209
|
55b2bff1b8
|
Merge pull request 'chore(openspec): 歸檔 cloud-ready-zero-impact + 同步主規格' (#49) from feat/cloud-ready-zero-impact into master
Deploy Production / deploy (push) Successful in 12s
Run Tests / test (push) Successful in 29s
Reviewed-on: #49
|
2026-06-17 18:02:18 +00:00 |
|
a620906209
|
e08c6652a5
|
chore(openspec): 歸檔 cloud-ready-zero-impact + 同步主規格
Run Tests / test (pull_request) Successful in 29s
- openspec/changes/archive/2026-06-18-cloud-ready-zero-impact/:change 歸檔
- openspec/specs/compose-cloud-baseline/:新增主規格(healthcheck + override 隔離)
- openspec/specs/env-cloud-annotations/:新增主規格(.env.example 雲端標示)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-18 02:01:12 +08:00 |
|
a620906209
|
2d14c058d1
|
Merge pull request 'feat(infra): 雲端就緒零影響改動 (compose overlay + healthcheck + env)' (#48) from feat/cloud-ready-zero-impact into master
Deploy Production / deploy (push) Successful in 14s
Run Tests / test (push) Successful in 32s
Reviewed-on: #48
|
2026-06-17 17:49:29 +00:00 |
|
a620906209
|
be629feef9
|
feat(infra): 雲端就緒零影響改動 (compose overlay + healthcheck + env)
Run Tests / test (pull_request) Successful in 30s
- docker-compose.yml:app healthcheck 改用 nc -z 127.0.0.1 9000 驗證 PHP-FPM port
- docker-compose.yml:移除 phpmyadmin、mailpit(開發工具不屬於正式服務)
- compose.override.yml:新增,含 phpmyadmin(8081)、mailpit(8025)port mapping
- .env.example:QUEUE_CONNECTION 預設改 redis;補充 FILESYSTEM_DISK、LOG_STACK、SESSION_DRIVER 雲端注意事項
- docs/STARTUP.md:新增「部署模式」章節,明確區分 VPS 與雲端 -f 指令
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-18 01:48:24 +08:00 |
|
a620906209
|
998f34139a
|
Merge pull request 'fix(ci): 修正 Alpine 3.23 PHP 套件名稱為 php84' (#47) from fix/vps-stability into master
Deploy Production / deploy (push) Successful in 16s
Run Tests / test (push) Successful in 38s
Reviewed-on: #47
|
2026-06-17 16:38:17 +00:00 |
|
a620906209
|
0080e2da84
|
fix(ci): 修正 Alpine 3.23 PHP 套件名稱為 php84
Run Tests / test (pull_request) Successful in 37s
Alpine 3.23 已無 php82 套件,改用 php84。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-18 00:37:46 +08:00 |
|
a620906209
|
4720dc53f9
|
Merge pull request 'fix(ci): 替換 setup-php 為 Alpine apk 直接安裝 PHP 8.2' (#46) from fix/vps-stability into master
Deploy Production / deploy (push) Successful in 17s
Run Tests / test (push) Failing after 12s
Reviewed-on: #46
|
2026-06-17 16:34:07 +00:00 |
|
a620906209
|
95a93b2d72
|
fix(ci): 替換 setup-php 為 Alpine apk 直接安裝 PHP 8.2
Run Tests / test (pull_request) Failing after 7s
shivammathur/setup-php 在 Alpine runner 上需要 sudo 且編譯耗時。
改用 apk add php82 系列套件,速度更快且相容 Alpine 環境。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-18 00:32:44 +08:00 |
|
a620906209
|
c0616b17df
|
Merge pull request 'ci: 觸發 test workflow 驗證 Node.js 環境' (#45) from fix/vps-stability into master
Deploy Production / deploy (push) Successful in 18s
Run Tests / test (push) Failing after 5s
Reviewed-on: #45
|
2026-06-17 16:04:57 +00:00 |
|
a620906209
|
6a74f766db
|
ci: 觸發 test workflow 驗證 Node.js 環境
Run Tests / test (pull_request) Has been cancelled
|
2026-06-18 00:04:28 +08:00 |
|
a620906209
|
d8340de322
|
Merge pull request 'fix(ci): test.yml 改用 self-hosted runner 避免 Docker-in-Docker 衝突' (#44) from fix/vps-stability into master
Deploy Production / deploy (push) Successful in 19s
Run Tests / test (push) Failing after 4s
Reviewed-on: #44
|
2026-06-17 15:49:27 +00:00 |
|
a620906209
|
aebce80152
|
fix(ci): test.yml 改用 self-hosted runner 避免 Docker-in-Docker 衝突
Run Tests / test (pull_request) Failing after 42s
ubuntu-latest 觸發 container 模式,導致 mkdirat var/run: file exists 錯誤。
改成 self-hosted 與 deploy.yml 一致,直接跑在 host 模式。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-17 23:48:27 +08:00 |
|
a620906209
|
5fdd5b3329
|
Merge pull request 'fix(vps): 加 TrustProxies、Redis 持久化 Volume、Log 改 daily' (#43) from fix/vps-stability into master
Deploy Production / deploy (push) Successful in 21s
Run Tests / test (push) Failing after 8s
Reviewed-on: #43
|
2026-06-17 15:44:47 +00:00 |
|
a620906209
|
daf72711e8
|
Merge pull request 'chore: 加入 Windsurf 規則與啟動文件' (#42) from chore/windsurf-startup-docs into master
Deploy Production / deploy (push) Successful in 25s
Run Tests / test (push) Successful in 2m14s
Reviewed-on: #42
|
2026-06-17 15:41:25 +00:00 |
|
a620906209
|
2fbcd0c50d
|
fix(vps): 加 TrustProxies、Redis 持久化 Volume、Log 改 daily
Run Tests / test (pull_request) Successful in 2m15s
- bootstrap/app.php: trustProxies(at: ['*']) 讓 NPM 反向代理的 X-Forwarded-* header 被信任
- docker-compose.yml: Redis 加 redis-data volume,重啟後 session/queue/cache 不再清空
- .env.example: LOG_STACK 改 daily + LOG_DAILY_DAYS=14,避免 VPS 磁碟被單一 log 吃滿
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-17 23:33:36 +08:00 |
|
a620906209
|
979ea4df75
|
chore: 加入 Windsurf 規則與啟動文件
Run Tests / test (pull_request) Failing after 2s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-17 23:31:52 +08:00 |
|
a620906209
|
6b1e31c4af
|
Merge pull request 'docs: 補充測試帳號與功能概覽,修正 .env.example REVERB 區塊' (#41) from docs/interview-guest-accounts into master
Deploy Production / deploy (push) Successful in 16s
Run Tests / test (push) Successful in 2m3s
Reviewed-on: #41
|
2026-06-16 22:07:34 +00:00 |
|
a620906209
|
64874e1c12
|
docs: 補充測試帳號與功能概覽,修正 .env.example REVERB 區塊
Run Tests / test (pull_request) Successful in 2m0s
- README:更新功能概覽(Token 刷新、圖片壓縮、教練審核流程、測試欄)
新增測試帳號表格與教練頁入口說明(/coach/login)
- .env.example:刪除誤植的 README 殘留行,補上完整 REVERB_* 與 VITE_REVERB_* 區塊
- .gitignore:忽略 .windsurf/rules
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-17 05:59:01 +08:00 |
|
a620906209
|
19705fc8d7
|
Merge pull request 'chore(openspec): 歸檔 feature-test-coverage、provider-verification-workflow 變更' (#40) from chore/archive-changes-jun16 into master
Deploy Production / deploy (push) Successful in 16s
Run Tests / test (push) Successful in 1m50s
Reviewed-on: #40
|
2026-06-16 11:22:36 +00:00 |
|
a620906209
|
80f5cf179f
|
chore(openspec): 歸檔 feature-test-coverage、provider-verification-workflow 變更
Run Tests / test (pull_request) Failing after 1m53s
兩個 change 全任務完成(feature-test-coverage 40/40、provider-verification-workflow 48/48)。
同步規格:
- feature-test-coverage/spec.md 補齊 ## Requirements 區塊標頭(結構修正)
- Admin 教練審核 scenario 改為 approve 端點(toggle-verified 已由 #36 移除)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-16 19:19:52 +08:00 |
|
a620906209
|
d99ffb0fd6
|
Merge pull request 'fix(tests): 同步 Feature test 與 provider-verification-workflow 架構變更' (#39) from fix/feature-test-sync into master
Deploy Production / deploy (push) Successful in 14s
Run Tests / test (push) Successful in 1m56s
Reviewed-on: #39
|
2026-06-16 11:18:04 +00:00 |
|
a620906209
|
afdca18c67
|
fix(tests): 同步 Feature test 與 provider-verification-workflow 架構變更
Run Tests / test (pull_request) Failing after 2s
provider-verification-workflow (#36) 在 feature-test-coverage (#38) merge 前
已將 is_verified 欄位替換為 verification_status 狀態機,並移除 toggle-verified 路由。
- 五個 Feature test 的 makeProvider helper 改用 verification_status='approved'
(原 is_verified 已從 provider_profiles 欄位移除,靜默忽略導致 422/404)
- AdminUserManagementTest: toggle-verified 案例改為測試新的 approve 端點
(PUT /admin/verifications/{userId}/approve,需 pending 狀態才可核准)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-16 19:14:25 +08:00 |
|
a620906209
|
4383239bab
|
Merge pull request 'test(feature): 補齊五個核心業務流程 Feature test——Offer/Schedule CRUD、Admin 管理、通知觸發、預約列表' (#38) from feat/feature-test-coverage into master
Deploy Production / deploy (push) Successful in 19s
Run Tests / test (push) Failing after 1m50s
Reviewed-on: #38
|
2026-06-16 10:24:17 +00:00 |
|
a620906209
|
49a4b89655
|
test(feature): 補齊五個核心業務流程 Feature test——Offer/Schedule CRUD、Admin 管理、通知觸發、預約列表
Run Tests / test (pull_request) Successful in 1m51s
ProviderOfferCrudTest(7 案例):store/update/destroy 正常流程 + 所有權邊界(403)+ 未認證(401)
ProviderScheduleCrudTest(7 案例):store/update/destroy + 容量不變式(422)+ destroy 同步取消 active bookings
AdminUserManagementTest(5 案例):列表角色過濾 + toggle-active/toggle-verified DB 副作用 + 非 admin 403
NotificationTriggerTest(5 案例):5 條直接觸發路徑,收件者各不同(BookingCreated/CancelledByMember → provider;其餘 → member)
BookingListTest(4 案例):三角色資料隔離邊界 + 未認證 401
全套件 215 passed / 529 assertions,零 regression。
同步新增 openspec/changes/feature-test-coverage/ 與 openspec/specs/feature-test-coverage/spec.md。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-16 18:23:11 +08:00 |
|
a620906209
|
66ff30f863
|
Merge pull request 'test(unit): 補齊三個純邏輯 Unit test——狀態機、Enum 完整性、Email 正規化' (#37) from feat/unit-test-planning into master
Run Tests / test (push) Successful in 1m53s
Deploy Production / deploy (push) Successful in 11s
Reviewed-on: #37
|
2026-06-16 09:35:25 +00:00 |
|
a620906209
|
d6cc1cbca9
|
test(unit): 補齊三個純邏輯 Unit test——狀態機、Enum 完整性、Email 正規化
Run Tests / test (pull_request) Failing after 1m8s
BookingTransitionTest:驗證 canTransitionTo() 所有合法/非法轉換與終態不可逃脫(18 案例)
BookingStatusTest:驗證 7 個狀態完整性、from/tryFrom、VALID_TRANSITIONS 覆蓋一致性(10 案例)
NormalizesEmailTest:驗證大小寫與空白正規化邏輯(5 案例)
全部使用 PHPUnit 原生 TestCase,不需要資料庫連線,執行 1.82s。
全套件 187 passed / 464 assertions,零 regression。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-16 17:31:48 +08:00 |
|
a620906209
|
a18f52b2e8
|
Merge pull request 'chore(openspec): 歸檔 course-image-compression 變更' (#35) from chore/archive-cic into master
Deploy Production / deploy (push) Successful in 12s
Run Tests / test (push) Successful in 6m11s
Reviewed-on: #35
|
2026-06-11 19:41:00 +00:00 |
|
a620906209
|
e40507bd60
|
Merge pull request 'feat: 教練審核流程完整版——四狀態機、證照送審、Admin 裁決、通知(含測試清空 DB 重大修復)' (#36) from feat/provider-verification-workflow into master
Deploy Production / deploy (push) Successful in 33s
Run Tests / test (push) Successful in 1m54s
Reviewed-on: #36
|
2026-06-11 19:40:52 +00:00 |
|
a620906209
|
43720482c4
|
feat(verification): 教練審核流程完整版——狀態機/證照送審/Admin 裁決/通知
Run Tests / test (pull_request) Successful in 2m3s
實作 openspec change provider-verification-workflow(25/25 tasks):
- is_verified 升級為 verification_status 四狀態機(unsubmitted/pending/
approved/rejected),migration 自動轉換既有資料,API 以 accessor 保留
is_verified 相容輸出
- 教練端:證照上傳(≤3 張、複用 CompressesImages)、送審、駁回原因
顯示與重送(/coach/verification 新頁面)
- Admin 端:審核佇列、通過/駁回(原因必填)、撤銷 approved;移除
toggle-verified 端點(防繞過狀態機);裁決後 flush 課程快取
- 通知:審核通過/駁回(站內+Email,駁回含原因)
- 可見性與預約入口改判 approved(行為等價)
- 測試 +18(ProviderVerificationTest 10、AdminVerificationTest 8),
既有 4 個測試檔 helper 遷移;Swagger 同步
- 規格同步:provider-verification 全面改寫、admin-user-management
toggle 段落改為移除聲明
容器內全套件 173 passed / 439 assertions。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-12 00:26:12 +08:00 |
|
a620906209
|
37140554d3
|
fix(test): 防止容器內測試清空開發用 MySQL——bootstrap 強制覆蓋 $_SERVER
根因:docker compose 將 DB_CONNECTION=mysql 注入為真實環境變數,
PHPUnit 的 <env force> 只覆蓋 $_ENV/putenv,但 Laravel env() 優先讀
$_SERVER,導致 RefreshDatabase 一直在清空開發 DB(今日實際發生三次,
也是先前『DB 神秘清空』的元凶)。
- 新增 tests/bootstrap.php 於載入前同步覆蓋 $_SERVER/$_ENV/putenv
- phpunit.xml bootstrap 指向新檔,DB env 加 force 屬性
- 驗證:容器內全套件後 MySQL 資料存活(users=13)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-12 00:25:54 +08:00 |
|
a620906209
|
a7d5f81890
|
chore(openspec): 歸檔 course-image-compression 變更
Run Tests / test (pull_request) Successful in 1m58s
實作已 merge(PR #34),規格增量已於實作時同步至主規格。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-11 23:53:15 +08:00 |
|
a620906209
|
c53e9657b3
|
Merge pull request 'feat(images): 課程圖片伺服器端壓縮(O3.1)——scaleDown 2048 + JPEG 85、上限放寬至 10MB' (#34) from feat/course-image-compression into master
Deploy Production / deploy (push) Successful in 1m4s
Run Tests / test (push) Successful in 2m27s
Reviewed-on: #34
|
2026-06-11 15:47:34 +00:00 |
|
a620906209
|
6414222a18
|
feat(images): 課程圖片伺服器端壓縮——scaleDown 2048 + JPEG 85,上限放寬至 10MB
Run Tests / test (pull_request) Successful in 2m0s
實作 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>
|
2026-06-11 23:43:24 +08:00 |
|