# OpenDB 11/10
## 參與人員
- Solomon, Ashley, Sabrina, Selena, Ryan, Yukino, Ellie, Dequan, Louise
## SQLite
- 重複輸入的問題以解決
- policestationID 還需要改
- 目前都是數字1(只能查到一個派出所)
- 有用到 foreign key,影響到匯資料
- 這周末會將資料匯入
### Q&A
- [name=Ashley] policeStation的 s 有大寫或小寫是故意的嗎
- [name=Ellie] 沒有注意到,之後會統一用大寫
- [name=Ashley] camera 相關錯誤訊息沒有修正
- [name=Ashley] 派出所、行政區、路口的 expression 是可以用的嗎? 廠商的結尾會跟我們設計的一樣?
- [name=Ashley] cameraID 的六碼數字是有規定的嗎
- [name=Ellie] 有建議警局,如果他們有採用,就沒有這樣的規定
- [name=Ashley] ENENT 的 eventID 是不是應該要 primary
- [name=Ellie] 不小心動到的,是 primary 沒錯
- [name=Ashley] policeStation 有兩個 primary key
- [name=Ellie] 會改成 unique
- [name=Ashley] 行政區沒有 not null
- [name=Ashley] SEARCH errorType 要存什麼資料,已知道搜尋時會記錄錯誤到 Log,但正確時,應該不會有錯誤訊息?
- [name=Ellie] 正確的話 errorType 會是 200
- [name=Ashley] 所以成功失敗都要存是嗎
- [name=Ellie] 是
- [name=Ashley] SEARCH Log 的大小寫要注意
- [name=Ellie] 會再修正,但 SQLite 應該不影響
## Flask
- unit test
- 回傳 content, message, status
- 多個錯誤都會回傳 (list)
- 插入資料
- 錯誤訊息 content: 欄位缺失
- 獲取所有辨識紀錄: 沒想到會有什麼錯誤
- 透過 eventID 獲取辨識紀錄
- 錯誤訊息 content: 沒有 body
- 透過車牌查詢軌跡
- 新增搜尋紀錄
- 錯誤訊息 content: 欄位缺失
- 沒有 invalid
- 獲取搜尋紀錄
- 透過 searchID 獲取搜尋紀錄
- - 錯誤訊息 content: 404
- 提醒 SQLite: 錯誤訊息只有 'insert 錯誤',必填資料缺失應該需要有額外的訊息
### Q&A
- [name=Ashley] name, reason, caseID 是必填?
- [name=Ryan] 是,必須記錄是誰查詢的
- [name=Ashley] 所以是會 insert 到 TCASE 跟 PERSON 嗎
- [name=Ellie] PERSON 不會動到
- [name=Solomon] TCASE 應該由誰 insert? (Which API?)
- [name=Ellie] 還沒搞清楚
- [name=Ashley] 目前版本還不會 insert TCASE, PEARSON
- [name=Ryan] 但有個 search_history 的 API
- [name=Ashley] 只會動到 SEARCH
- [name=Ryan] 所以需要新增新的 API 嗎 (insert TCASE, PEARSON)
- [name=Ashley] 等 SQLite 決定
- [name=Ryan] 對 response, message 的欄位有疑惑
- [name=Ryan] (insert) 錯誤訊息應該放在 message,content 則是回傳資料,這跟 API 及其他 unit test 格式有衝突
- [name=Yukino] content 是當初測試時沒有刪除的
- [name=Ashley] 另一個原因是 insert 的錯誤訊息不夠詳細。這樣要請 SQLite 多設計,LOG 才看得出錯誤
- [name=Ellie] LOG 存的是 應該是讓 Flask 進資料庫看的 (mapping table)
- [name=Solomon] 兩邊都有道理,但這應該命名為 'ERROR TABLE' 而不是 LOG
- [name=Ellie] 那 Flask 還需要 'ERROR TABLE' 嗎?
- [name=Ashley] 目前是直接寫在程式,用資料庫可查能會影響時間
- [name=Solomon] 程式開始時直接存到記憶體
- [name=Solomon] 所以現在錯誤訊息會直接存在 SEARCH? SEARCH 只有一個欄位,那詳細資訊呢
- [name=Ellie] 會到 LOG 查找
- [name=Solomon] 有 $2^5$ 種可能,但 errorType 沒這麼多
- [name=Sabrina] 如果查詢資料失敗 SEARCH 裡不就沒有資料嗎
- [name=Solomon] 看起來查詢失敗也會記錄
- [name=Ellie] 多個錯誤應該 Log 多筆資料,不然需要 $2^5$ 種訊息
- [name=Solomon] 這樣如何?
- 1. 正確的才會 insert 進 SEARCH table.
- 2. 不正確的查詢則 log 在另一個 table 中。
- ```
CREATE TABLE ErrorLog (
searchID INTEGER,
searchTime DATETIME,
sqlCommand TEXT
);
```
- [name=Sabrina] 查詢人在 API 為非必填,但 SEARCH 為 not null,這樣會有衝突
- [name=Ryan] 查詢人應該改成必填
- [name=Ellie] 需要紀錄 insert 的錯誤嗎
- [name=Solomon] 通常對資料庫的所有操作都會記錄(直接紀錄 SQL command 再加時間)
- [name=Solomon] 如果不是收 SQL command, 而是收 JSON, 也可以改成 json TEXT
- [name=Ashley] 必填欄位都需要有錯誤訊息
- [name=Ellie] 覺得 TCASE 的設計有點不良,想要討論
- [name=Ellie] 搜尋的案由會 insert 到哪
- [name=Ashley] 目前沒有任何 API 會 insert
- [name=Ellie] RESTful 有設計 相關 API 嗎
- [name=Ryan] 案由應該是 builtin 的 table
- [name=Ellie] 應該要可以手動輸入
- [name=Ellie] 把 TCASE 刪掉, reason detail 放到 SEARCH,用來填寫(手動輸入)
- [name=Ryan] 應該是加一個備註到 SEARCH,而不是用 reason detail
### RESTful
- 目前還沒進行壓力測試的研究
- API 跟 SQLite 有出入,所以這周在修改,讓雙方有互相對應
### Q&A
- [name=Ryan] camera 已分出去一個 table,EVENT 只需要 cameraID,這樣警局還需要回傳地址嗎
- [name=Ellie] 不需要,只需要 cameraID
- [name=Ryan] 這樣要跟警局說,不然 Flask 程式可能會遇到問題
- [name=Ashley] table 是警局給的所以他們應該會有 cameraID
- [name=Ellie] 目前警局也會傳其他資料
- [name=Ashley] 要要求他們
- [name=Ellie] 案由有 detail 跟選單嗎
- [name=Ellie] 需要新增一個 detail 的欄位
- [name=Ryan] SQLite 新增後再通知 RESTful 修改
## 其他
- [name=Solomon] PI 要派人整理完整的會議紀錄
- [name=Sabrina] Selena 目前不再,會後會再找他討論
## 下次進度
- RESTful 壓力測試
- [name=Ryan] & [name=Sabrina] 到實驗室進行壓力測試
- SQLite 修改 table、建立測試資料
- [name=Ryan] 要注意產生的時間有沒有問題
- Flask 配合 SQLite 跟 API 做更動