4-1、技術亮點

食譜平台後端技術與功能總結

使用技術(後端)

項目
技術/說明

語言與框架

C#、ASP.NET Framework 4.8(Web API 模式)

ORM 工具

Entity Framework

資料庫

SQL Server(透過 SSMS 操作)

驗證機制

JWT 自訂驗證、Google OAuth 登入

API 測試

Postman

第三方整合

Vimeo API(影片上傳與處理狀態查詢)

主機部署

Azure VM(已開放 HTTP/HTTPS)

HTTPS 憑證

Cloudflare + 自訂網域


資料表與功能模組

食譜(Recipe)模組

功能
說明

建立/編輯食譜

含食材、步驟、封面圖、影片連結等

草稿與發布管理

透過 IsPublished / IsDeleted / IsArchived 控制瀏覽權限與狀態

標籤系統

多對多 RecipeTags 關聯表設計

食譜編號

使用類似 R000001 格式做流水號

分頁 API

回傳 hasMore flag 判斷是否還有資料

使用者(User)模組

功能
說明

JWT 驗證

自訂 JwtAuthFilter,用來取得登入身分

Google OAuth 登入

串接 Google 登入後回傳 token 並綁定帳號

使用者資料

顯示 displayId、暱稱、照片、介紹等

限制邏輯

作者不能對自己留言/收藏/評分/追蹤

收藏與留言評分

功能
說明

收藏食譜

判斷是否已收藏並可取消

評分與留言

一次送出留言與評分,分開儲存於 Ratings 和 Comments 表中

隨機資料生成

批次產生假留言與評分(排除作者)

評分上限檢查

最高不得超過 5.0 分

追蹤系統

功能
說明

追蹤/取消追蹤

只能追蹤他人,無法追蹤自己

顯示追蹤狀態

判斷是否已追蹤該作者

Vimeo 影片處理

功能
說明

影片上傳

支援透過 Vimeo API 上傳食譜影片

處理狀態

使用 /video 資訊與 polling 方式檢查是否轉檔完成

草稿瀏覽

即使影片處理中,仍可進入草稿預覽畫面

廣告模組

功能
說明

建立廣告

接收 multipart/form-data,處理圖片與欄位驗證

廣告圖片

儲存多張圖片,限制副檔名 .jpg .png .webp

廣告標籤

多對多關聯 AdTags

點擊與曝光

寫入 AdViewLogs,記錄 session 使用者行為

效果統計

每月寫入 AdMonthlyPerformances 報表資料

權限控管

僅管理員可建立/修改廣告內容


特別處理過的挑戰點

  • Entity Framework 種子資料時避免 IDENTITY_INSERT 錯誤

  • SQL 中防止重複留言、評分(PRIMARY KEY:UserId + RecipeId)

  • 自訂 DisplayId(例如 M000001、R000005)避免亂數 UUID

  • Vimeo 處理延遲導致播放失敗 → 改為狀態輪詢 + 草稿顯示機制

  • Git 推送被拒(rejected)→ 使用 git stashrebase 解決衝突

  • 團隊協作流程:透過 Notion 記錄功能與技術問題追蹤

Last updated