# 電訪系統 ### 以下為目前我已知的條件及限制 (以下使用者代表公司員工,工讀生會直接標示為工讀生) - 匯入的檔案欄位為 - Tag - 姓 - 名 - 職稱 - 公司電話 - 公司分機 - 公司名稱 - 手機 - E-Mail - 匯入多少筆資料就必須匯出多少筆資料,例如匯入400筆資料,而匯出時也必須將原來匯入的400筆資料匯出來 - 目前以email作為資料重複判別依據。 - 當匯入的資料有重複資料時,工讀生僅能播打其中一筆資料(目前取得第一筆資料),而其他資料要標記為重複。 - 使用者可以將名單標記為特殊tag,以便後續指定特殊工讀生播打電話的優先清單(例如工讀生A比較有電訪經驗,所以將tag為VIP的資料指定給他播打)。 - 電訪資料一律使用匯入方式加入,但不能編輯電訪資料。所以這幾天討論的重點在於如何讓使用者用匯入方式更新名單,以及哪些欄位或資料准許或不可被更新。 - 每筆資料透過狀態控制,目前已知的狀態有:已報名、考慮中、未接電話、晚點連絡、已離職、不報名、別再打擾、其它。 --- ### 目前我的設計資料表(符合上一版),現在尚未更新為目前版本程式 說明:上一版本跟目前版本不同之處在於:當工讀生更新資料時資料存法不同... **上一版**:不覆蓋原始資料,而是再新增一筆新資料,但當使用者在後台瀏覽時會顯示新的資料內容,而不是顯示舊的資料。 **目前版**:當工讀生修改資料時,直接更新欄位資料,若修改欄位為email時,會存入舊的email及新的email。 #### 目前匯入名單資料儲存大括流程: 1. 存入批次檔案資訊 2. 存入電訪者資料 3. 存入tag(如果有標記tag) #### 以下資料表關係圖 ```graphviz digraph hierarchy { nodesep=1.0 // increases the separation between nodes node [color=Red,fontname=Courier,shape=box] //All nodes will this shape and colour edge [color=Blue, style=solid] //All the lines look like this upload_files->respondents-> taggables->tag } ``` #### 資料表欄位 資料表:**respondents** | 欄位 | 屬性 | 說明 | | -------- | -------- | -------- | | id | int | 自動編號(流水號) | | project_id | int | 專案代碼 | | email | string | 電訪者email | | data | long text | 電訪者的資料(除Email),資料加密後存入 | | remark | text | 工讀生備註欄位 | | parent_id | int | 主要資料respondent_id | | status | enum | 資料狀態<br>目前可選的狀態已報名、考慮中、未接電話、晚點連絡、已離職、不報名、別再打擾、其它。 | | status_other |text| 資料狀態為其他時,存入其他原因 | | duplicate_id | int | 若該筆資料已存在於其他資料時,會將那筆資料的id存在這裡 | | upload_file_id | int | 上傳檔案id | | part_time_staff_id | int | 預設為空值,若工讀生被指派該筆資料時,會將該工讀生的id存入此欄位 | | survey_at | datetime | 電訪時間 | | survey_times | string | 電訪次數,該欄位用於重複播打順序,預設為00。<br>若工讀生第一次去電時,該受訪者未接聽電話,故資料更新時,會將該欄位數字+1,以便於短時間內不會再去電給該受訪者(前提為資料筆數很多時)。 | | created_at | datetime | 資料建立時間 | | updated_at |datetime| 資料最後更新時間 | 資料表:**upload_files** | 欄位 | 屬性 | 說明 | | -------- | -------- | -------- | | id | int | 自動編號(流水號) | | project_id | int | 專案代碼 | | file_name | string | 檔案名稱 | | status | enum | 檔案匯入狀態,狀態有ready、import、、checking、process、finished、error、fail。 | | record_count | int | 資料筆數,預設為0 | | created_at | datetime | 資料建立時間 | | updated_at |datetime| 資料最後更新時間 | 資料表:**tags** | 欄位 | 屬性 | 說明 | | -------- | -------- | -------- | | id | int | 自動編號(流水號) | | name | string | tag名稱 | | created_at | datetime | 資料建立時間 | | updated_at |datetime| 資料最後更新時間 | 資料表:**taggables** | 欄位 | 屬性 | 說明 | | -------- | -------- | -------- | | id | int | 自動編號(流水號) | | tag_id | int | tag的id | | taggable_id | int | 資料id | | taggable_type | string | 資料id來源資料表路徑 | | created_at | datetime | 資料建立時間 | | updated_at |datetime| 資料最後更新時間 |