# 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 做更動