a620906209 ab24f210a6 feat: 即時預約聊天室(realtime booking chat)
## 新增功能
- 會員與教練在 confirmed 預約期間可互傳文字與圖片訊息
- Presence Channel 顯示對方在線狀態(即時加入/離線)
- 已讀回執:對方讀取訊息後即時更新
- 預約完成(completed)後訊息封存唯讀
- 圖片上傳使用 intervention/image 處理(移除 EXIF、限制尺寸、強制重新編碼)

## 通知系統
- 收到新訊息時 Bell Icon 即時更新(NotificationCreated via private channel)
- 預約列表卡片顯示未讀角標(GET /api/bookings/messages/unread-counts 批次查詢)
- 瀏覽器分頁在背景時推送 Web Notification

## 基礎建設
- 引入 Laravel Reverb 作為自架 WebSocket 伺服器
- docker-compose 新增 reverb service(連接 proxy_net,供 NPM 代理)
- 前端安裝 laravel-echo + pusher-js,初始化 Echo plugin
- Dockerfile 補 GD JPEG/WebP/FreeType 支援

## 清理
- 移除 test_broadcast.php 與 resources/js/echo.js(Blade 殘留)
- 移除 /ping、/testpost 測試路由
- channels.php 改用 class-based 授權語法,移除 debug log
- BookingChat.vue otherType 提取為 computed 消除重複
- docker-entrypoint.sh 健康檢查改用 env var 取代硬編碼密碼

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 03:59:14 +08:00
2025-05-12 01:22:09 +08:00
2025-05-11 03:45:17 +08:00
2025-05-11 03:45:17 +08:00
2025-05-11 03:45:17 +08:00
2025-05-11 03:45:17 +08:00
2025-05-11 03:45:17 +08:00
2025-05-11 03:45:17 +08:00
2025-05-11 03:45:17 +08:00

CFDive Platform

潛水課程媒合平台 — 連結潛水教練與學員,提供課程瀏覽、線上預約、評價與通知等完整服務。


功能概覽

會員(Member

  • 註冊 / 登入(Email + Google OAuth
  • 瀏覽、搜尋、篩選潛水課程
  • 查看課程時段並送出預約
  • 對完成的課程留下評價(支援匿名、有幫助投票)
  • 站內通知(Email + Polling

教練(Provider

  • 課程 CRUD(含封面 + 相簿圖片上傳)
  • 課程時段管理
  • 預約管理(確認 / 拒絕 / 完成 / 取消)

管理員(Admin

  • 平台統計數據(會員數、教練數、課程數)
  • 會員與教練帳號管理(啟用 / 停用 / 審核)
  • 課程、預約、評價管理

技術棧

層級 技術
後端 PHP 8.x / Laravel 11
前端 Vue 3
資料庫 MySQL 8.0
快取 Redispredis
認證 Laravel Sanctum + Google OAuth
容器 Docker / Docker Compose
API 文件 Swagger UIl5-swagger

API 文件

共 73 個端點,涵蓋:

  • 認證(Email + Google OAuth
  • 公開課程查詢
  • 會員預約 / 評價 / 通知
  • 教練課程 / 時段 / 預約管理
  • 管理員後台
S
Description
No description provided
Readme 1.9 MiB
Languages
PHP 71.1%
Vue 17.3%
HTML 4.1%
Blade 4.1%
JavaScript 2.8%
Other 0.6%