今天的事件發生在後台設定
維運工程師回報
客戶的活動獎勵沒有收到
是否系統異常

活動的內容很簡單
只要客戶在指定期間內
(例如合約的前30天內)
上滿一定的課程
就可以獲得獎勵

活動的設定方式
是用後台的複製功能
改改參數後產生一份新的
照理說應該不會有錯

首先查看發放獎勵的Table
的確都沒有該活動的紀錄
所以排除是個人帳號問題
而是活動設定有誤

打開後台比對新舊活動
除了建立人員和獎勵內容以外
其餘設定全部一樣
真的是奇哉怪也

因為活動的獎勵條件是上課
所以打API去看了一下客戶上課次數
竟然是零次
一堂課都沒有上

原本以為是客戶在鬧我
但剛剛確認過資料
這個活動的確沒有人領到獎勵
所以再仔細看了一下API的回傳

這下才注意到
活動的起日和迄日一樣
區間為零
當然上課的次數也為零
這時我才想到
應該去查活動設定檔的Table

一查真的是發現新大陸
活動設定畫面一模一樣
DB的資料竟然不一樣
新的活動條件是-1
舊活動的條件是3
難道我剛剛中了幻術?

duplicate-bug-event-0.png

再回後台查看畫面
兩個活動的選項都是”Option”
也就是對應到資料庫的-1
但舊活動的設定明明是3
怎麼會這樣呢

打開專案看到Code
這下才恍然大悟
原因是專案內的cshtml
使用了 @Html.DropDownListFor
來產生html的select元素

但是DropDownListFor並沒有3這個選項
這時畫面就會render預設選項Option
對應的值是-1
所以複製時也是複製-1
大概像是下面這樣
duplicate-bug-event-1.png
duplicate-bug-event-2.png
duplicate-bug-event-3.png

估計是前人直接修改DB資料後
忘記回來修改後台
才會產生這麼離奇的Bug

加上3這個選項
調整DB資料
重跑一次排程就正常了
果然UI的Bug還是最難查了

下回預告
導入nginx之後
原本平穩的系統
開始出現503 Error
到底是誰在做怪

下一回
503 Error Bug事件