---
# System prepended metadata

title: SS 期末考提醒通知

---

# SS 期末考提醒通知

### Deadline - 2019/9/16

### Spec
* **需求：狀況判斷與通知**
    
| Scenarios | 全部 PASS | 部分 PASS |尚未全部題目有 comment|
| -------- | -------- | -------- | -------- |
| [LH] Excellent/Good    |  1  |  2   | 3 |
| [LH] Try harder    |  4  |  5  | 6 |
| [LH] Null    |  7  |   8  | 9 |


| Scenario | Status | Action |
| -------- | -------- | -------- |
| 1   | 狀態正常    | 請 SS 寄發畢業證書     |
| 2   | 不正常    | 請助教修正 LH status     |
| 3   | 不正常    | 請助教修正 LH status     |
| 4   | 不正常    | 請助教修正 LH status     |
| 5   | 狀態正常    | n/a    |
| 6   | 不正常    | 請助教修正 LH status 並完成批改 |
| 7   | 不正常    | 請助教修正 LH status     |
| 8   | 狀態正常    | n/a    |
| 9   | 狀態正常    | n/a    |

* Other scenario: 通過期末考，但三天之內沒有處理。請 SS 寄發畢業證書
    * `Phase 1`  - SS 手動在資料表填入資料（是否有發送畢業證書）
    * `Phase 2` - Python program 直接讀取 [SS 畢業證書資料表](https://docs.google.com/spreadsheets/d/1oslnfJZzVMIZhM60Fa0w8BLg6oX7aW9Vr5h2fjyFpA8/edit#gid=1731188411) 

* **架構**
    * 邏輯處理 - Python program
    * 資料記錄 - Google sheet
    * 參數表 - Google sheet
    * 通知功能 (TBD)
        * GAS to slack or Python program to slack
        * Destination? `yunju`
            * #ss-data-log
        * Frequency?`yunju`
            * 一天四次 (12am, 6am, 12pm, 12am)
        * Message? `yunju`
            * Course
            * Name
            * eg :intro: @studentname student@mail 通過了期末考，請寄送證書
            
* **Scope**
    * Cross Courses
    * Cross cohort
* **細部架構**
- [ ] 資料來源 (Python program)
    - [x]  爬 Lighthouse "Gallery Comment Export" 
    - [x]  爬 Lighthouse "All Assignment Export"
    - [x]  爬 "[TA assingment tool DB](https://docs.google.com/spreadsheets/d/1ZzzctIy7g_eFEovOZLwKFBjBmTPQ1Ept9r7GtUxo1as/edit#gid=51324247)" (for confirm Q numbers)
    - [ ] `Phase 2` - 爬 [SS 畢業證書資料表](https://docs.google.com/spreadsheets/d/1oslnfJZzVMIZhM60Fa0w8BLg6oX7aW9Vr5h2fjyFpA8/edit#gid=1731188411) 
- [x] 資料整理 (Python program)
    - [x] 讀取資料表 (google sheet) 上的參數表
        - [x] final exam assignment id & # of questions
        - [x] TA email
    - [x] 篩選出 record with
        - [x] final exam assignment id, and 
        - [x] TA's comment
    - [x] 分析助教留言內容，是否含有 "PASS" or "FAIL"(包含不同的大小寫形式)，若有，需寫入資料表 
    - [x] 資料表 (on Google sheet) 包含以下欄位
        - [x] Email
        - [x] Course ID
        - [x] # of PASS
        - [x] 非技術題
        - [x] TA
        - [x] LH submission status
        - [x] Action/Scenario
        - [x] Updated at (time)
        - [x] URL
        - [x] Slack message
        - [x] Slack sent status
- [ ] System log
    - [ ] Execution log
        - [ ] 執行時間
        - [ ] 運作花費時間
    - [ ] Error message
        - [ ] Crawler fail (沒有執行)
        - [ ] 參數表 fail (assignment id & # of question 資料沒有一對一對應)
        - [ ] 寫入資料錯誤 (google api)

* **Database Structure**

| Email|Course ID| # of PASS |非技術題| TA | LH submission status | Action/Scenario | Updated at | URL |Slack message|Slack sent status|
| -------- | -------- | -------- | -------- | -------- | -------- |-------- |-------- |-------- |-------- |-------- |
| example@ac.co |  16  |  **2**   |Pass| FAIL | Try Harder | 5 |2019/09/08 12:00 |{{URL}}|pass|sent|

* **Params Structure**

|Course ID|Assignment ID|Need TA Review|
|---|---|---|
|16|569|True|

* **Slack message**
    * Pass
        * {{Email}} 通過 Course {{Course ID}} 的期末考，請寄出畢業證書 {{Google Sheet URL}}
    * 有問題
        * 期末考 Status Issue，連結：{{LH TA review URL}}

### QA
- [x] QA 用資料：https://docs.google.com/spreadsheets/d/18PusQyxMcdoK2aWuVVktfhy4phpIMfXnRk1JZTegEbk/edit#gid=0
- [x] 確認在情境 2, 3, 4, 6, 7 在助教有新的批改 or 調整 Lighthouse submission status 之後，database sheet 的資料如何被更新，以及 Slack 通知是否一樣有發生


***
***
## Graveyard
***
***

### Scenarios

1. 學生尚未繳交期末考
2. 學生已交期末考（助教尚未開始批改）
3. 學生已交期末考（助教尚未批改完畢，尚未更改 status）
    
5. 學生已交期末考（助教已批改完畢，學生未通過，尚未更改 status)
    4.1 學生未補交，逾期 N 個月
    4.2 學生未補交，N 個月之內
    4.3 學生已補交，助教尚未批改
7. 學生已交期末考（助教已批改完畢，學生通過，尚未更改 status)
8. 學生已交期末考（助教已批改完畢，學生通過，也更改完 status）
9. 學生已交期末考（助教尚未批改完畢，但先更改完 status）

*** 
1. Assignment 報表沒有學生 Final exam 繳交紀錄
2. Assignment 報表有學生 Final exam 繳交紀錄，但 Gallery 報表沒有 TA 回覆該 Final exam 紀錄



*** 
### factors

* 學生第一次繳交狀態（有交 & 沒交）
* 助教批改狀態（有改 & 沒改）
* 期末考結果狀態（有過 & 沒過）
* Lighthouse status 狀態（有過 & 沒過）

***
***


```
2019/08/09
```
column - 根據助教回饋內容判定
row -根據 LH 作業狀態判定

| Scenarios | 全部 PASS | 部分 PASS |尚未全部題目有 comment|
| -------- | -------- | -------- | -------- |
| Excellent/Good    |  1  |  2   | 3 |
| Try harder    |  4  |  5  | 6 |
| Null    |  7  |   8  | 9 |

### 1. 如何判斷助教批改狀態

新的 Gallery comment 資料進來之後，需判斷
1. 這筆資料是否為期末考留言 (by assignment id)
2. 這筆 comment 是否為助教留言 (by email)
3. 留言內容是否包含 "PASS" (需包含所有可能)
4. 若有新增的 PASS 紀錄，寫入紀錄表中（如下）





### 2. Scenarios and actions


| Scenario | Status | Action |
| -------- | -------- | -------- |
| 1   | 狀態正常    | 請 SS 寄發畢業證書     |
| 2   | 不正常    | 請助教修正 LH status     |
| 3   | 不正常    | 請助教修正 LH status     |
| 4   | 不正常    | 請助教修正 LH status     |
| 5   | 狀態正常    | n/a    |
| 6   | 不正常    | 請助教修正 LH status 並完成批改 |
| 7   | 不正常    | 請助教修正 LH status     |
| 8   | 狀態正常    | n/a    |
| 9   | 狀態正常    | n/a    |


















