我接的是一個別人交付不了的案子
新唐人 NTDVideo 是一家做優質原創影音的媒體。他們要的東西很清楚:一個自己的私有化 OTT 平台——不再把觀眾和數據寄放在別人的公有平台上。
問題是,我接到這個案子的時候,它已經卡住了。
前一手的廠商做不完、交付不了。一個影音平台牽涉會員、金流、權限、高併發流量——做到一半卡住,是最難的狀態:你不只要往前做,還要先搞懂前面留下來的東西哪裡不能用。
很多人不接救火案,因為風險高、又不討喜。我接了。

我們做的事:先救活,再做好
我帶團隊接手,把這個平台重新做扎實——一個 ASP.NET Core 8.0 multi-project 解決方案,5 個專案串成完整 OTT 系統:
| 專案 | 角色 |
|---|---|
| NTDVideoTw.Web | 會員前台(Razor Pages,17 個前台頁) |
| NTDVideoTw.Staff | 後台管理(Telerik Kendo UI,9+ 模組) |
| NTDVideoTw.Api | API 服務(會員 / 通知 / 影片 / 訂閱 端點) |
| NTDVideoTw.FipSvc | 金流服務(NewebPay 藍新整合,獨立部署) |
| NTDVideoTw.Shared | 共用模型 / Services / Utils |
DB 用 RavenDB(NoSQL):影片 metadata、會員、訂閱、通知都走文件導向,避開傳統關聯式 DB 在「會員 × 影片 × 觀看進度 × 收藏 × 通知」這種多對多場景的 schema 地獄。雲端原生架構部署到 AWS EC2,撐得起高併發。

解了一個很實際的 Docker 部署痛點
OTT 後台的編譯很重——光 NTDVideoTw.Staff 一個 project(含 Telerik Kendo + 後端邏輯)容器內編譯就 OOM。
我們做的解法:pre-build 策略 — 把 compilation 從 main docker-compose.yml 拆出去到 docker-compose.build.yml,先在主機編譯好 image 再 deploy。docker-compose up 拿的是現成的 ntdvideo-web:latest / ntdvideo-staff:latest,部署時不會炸記憶體。
這種「部署細節」是市面教科書不會寫但會打死你的東西。我們把這套 SOP 沉澱下來,後續類似量級的 .NET 客戶可直接 transfer。

7 大核心功能 100% 上線
這案有明確的 7 大核心功能交付清單,2026 上半年全數上線:
- 影片上架會員通知(站內通知系統,自動推送含縮圖)
- 會員通知中心(即時已讀/未讀、稍後觀看、收藏功能分離)
- 影片發布日期(前台時間軸呈現)
- OAuth 4 家整合(Google / Facebook / LINE / Apple)
- Staff 後台(影片管理 / 會員管理 / 訂閱 / 報表)
- 金流服務 FipSvc(NewebPay 訂閱週期扣款,獨立部署降風險)
- API 服務(給未來 App / WebView 用)
整體完成度 93%,剩餘缺口在「手機 App」與「固定 IP 金流」(已規劃但客戶當期未啟)。

重複扣款事件 — 我們怎麼處理
2026-03 客戶反映:部分會員被 NewebPay 重複扣款。我們做的事:
- 當天:拉出所有重複交易紀錄(NewebPay Period Detail CSV)
- 隔天:定位根因(webhook idempotency 漏 + 客戶 client-side race condition)
- 第三天:修復+資料清理(誤扣款全數退款給會員)
- 第四天:寫成
2026-03-01-訂閱重複扣款修復與資料清理.md內部 SOP
金流 bug 對訂閱型生意是致命的——我們不是事後解釋,是當天止血、隔天修、第三天還錢。客戶的會員沒少一個。

然後,他們把 App 也交給我們
救火案做完,發生的事跟我每一個好案子一樣:客戶回來,把下一個、更重要的案子也交給川輝——WebView App 開發(iOS + Android 同步上架),含會員推薦碼系統 + 折扣優惠碼系統,8 週時程。
真正的交付不是「做完一個案子」。是客戶在看過你怎麼收尾之後,願意把更大的東西放到你手上。

這個案子真正的價值:從流量思維到資產思維
技術只是表層。新唐人這個案子,底層是一個媒體經營觀念的轉變。
在公有平台上,你有流量,但觀眾不是你的、數據不是你的。平台政策一變,你的觀眾就可能消失。私有化平台的意義,是把「流量」變回「資產」——觀眾變成你自己的會員,行為變成你自己的數據,營收變成你自己的訂閱現金流。
這對任何靠內容吃飯的人都成立:你要的不是更多流量,是真正屬於你的用戶。

川輝交付了什麼
| 項目 | 內容 |
|---|---|
| 平台狀態 | 從「前一手交付不了」→ 完整上線、正常營運 |
| 技術 stack | ASP.NET Core 8.0 multi-project(5 個專案)/ RavenDB / AWS EC2 |
| Staff 後台 | Telerik Kendo UI / 9+ 後台模組 |
| 金流 | NewebPay 藍新(訂閱週期扣款,FipSvc 獨立部署) |
| 7 大核心功能 | 100% 完成 |
| 整體完成度 | 93% |
| 通知系統 | 站內 + 即時已讀 + 稍後觀看 + 收藏分離 |
| OAuth | Google / Facebook / LINE / Apple 四家 |
| 部署 | Docker pre-build(解 OOM)+ 維護模式部署不中斷 |
| 後續 | 客戶延伸委託:WebView App + 推薦碼系統 + 折扣優惠碼系統(8 週) |
新唐人 NTDVideo 怎麼說
「案子卡關的時候找上川輝,他們不只把前面的問題收乾淨,還把整個平台做扎實。後來訂閱扣款出狀況那次,他們當天止血、隔天修、第三天還錢——這種收尾品質,是我們把 App 也直接交給他們的原因。」 — 新唐人 NTDVideo(川輝代擬,已授權公開)
熊董的話
很多廠商不接救火案,因為你要替別人留下的問題負責。但我願意接——因為一個案子怎麼收尾,比怎麼開場更能看出一家公司。
新唐人後來把 App 也給我們,不是因為我簡報講得好,是因為他們親眼看過我們怎麼把一個爛攤子收乾淨、看過我們怎麼處理金流意外。B2B 信任不是簡報贏的,是收尾換來的。

