---
tags: cofacts, meeting note
---
20190424 會議記錄
=====
ttcat, orz, bil, 文武, ggm
> 上次開會紀錄:https://g0v.hackmd.io/s/rJB1nENcN
>
## 小聚檢討
:::info
當日闢謠後討論:https://hackmd.io/ZQKsam5sT4yDf0yOoduxfw
:::
### 貼紙補償
名單看KKtix 人都有報到
* 小狗小豬各50張 (Lucien給圖?)
Caroline
Lillian
Paul
文武
Lucien (我說那個小貼貼啊)
Cindy
Andy
嘟嘟
慈
韋婷
Michael
ggm
bil
orz
4000
### 闢謠送貼圖
* 是時候檢查檢查有沒有新的200了
(已經發文)
## 新功能貼文
### Downvote 理由
- 顯示 Downvote 理由:https://github.com/cofacts/rumors-site/pull/159 by leanne
- 詢問 Downvote 理由:https://github.com/cofacts/rumors-site/pull/158 by jihchi
:::success
待寫文案 + 出圖
:::
## 理由檢討
From https://g0v.hackmd.io/s/rJB1nENcN#%E4%BB%8A%E6%97%A5%E8%A8%8E%E8%AB%96%E7%B4%80%E9%8C%84
1. 文武提案:隱藏只送一次且沒填寫理由的訊息
2. bil 提案:提供方法來標記個別使用者「不用傳理由」,用於線下活動,降低高濃度浸潤假訊息的人傳訊息進來的門檻
MrOrz:
小孩才做選擇,大人就是兩個都做。
bil 提案也會需要文武提案「讓每個人都能不填理由」增加回報率,才能讓訊息更快進入大眾視野(盡快達成有 2 人以上回報)
## 能推播的新功能
:::info
上次討論:
https://g0v.hackmd.io/s/rJB1nENcN#%E8%83%BD%E6%8E%A8%E6%92%AD%E7%9A%84%E6%96%B0%E5%8A%9F%E8%83%BD
- LINE bot server connect to database, 獨立於 cofacts API,保持 client 獨立性
- 一個 LIFF: 列出所有這個 user id 傳過、有建檔的訊息,以及回應狀況,還有已讀未讀狀況
- trigger menu
- cron job 產生 push notification
1. 知道哪些 article id 要查
2. 跟 cofacts API 要資料
3. 實際去 push message
- nice to have: 任何新回應都通知
:::
### cronjob 邏輯
1. 從 redis 取得上次 cronjob 啟動的 timestamp
2. 去 Cofacts API 列出所有在該 timestamp 以後才新建立、且未刪除的 `ArticleReply`
3. 由 2 整理出 list of unique, updated article ids
4. 從 user <> selected article 關聯表,找出要通知的對象 (list of unique users to update)
5. 使用 [multicast API](https://developers.line.biz/en/reference/messaging-api/#send-multicast-message) 告知使用者「之前的訊息有回應囉」導引使用者點開 LIFF
6. redis 紀錄這次執行的 timestamp
### LIFF 顯示邏輯
- 從 LIFF API 取得 user id;持 user id 向 LINE bot server 查詢新的 API,得到自己查詢過的文章列表
- 文章列表,包含:
- 時間
- 文章內文節錄(點擊時進入 cofacts、紀錄「已讀」)
- 回應數(新的數量)
- 點按 LIFF 會傳訊息進 Cofacts chatbot,chatbot 列出回應列表供使用者點按,進入 `CHOOSING_REPLY`;若只有一則回應,自動 `skipUser`
- 這樣使用者才能在 LINE bot 內按「有用沒用」回應
- 在 LINE bot 內比在 LIFF 內方便轉傳
- 回應內仍然有文章連結,使用者如果真的要進網站,也不會沒門路
- 顯示上次 cron job 執行日期(redis 內 timestamp)
### user <> selected article 關聯表 insert 時機
- 傳訊息、資料庫沒有、填寫理由送出後
- 傳訊息、選擇一則資料庫訊息,但該訊息沒有回應。 (沒填理由也算)
- 傳訊息、選擇一則資料庫訊息,有回應。
### 相關 API quota
Send multicast message, LINE official accounts
- 100,000 requests per minute
- 2,000,000 recipients per minute
### DB schema
#### userArticleLink
紀錄 user <> selected article 關聯
- `userId`: LINE user ID
- `articleId`: Cofacts article ID
- `createdAt`: 關聯建立之時間
- `timing`: 第一次送出 or 尚無回應 or 已有回應
- `readAt`: 使用者已讀此訊息的時間。LIFF 內用此計算新回應篇數。在使用者點擊 LIFF 時更新。
#### Redis 新欄位:`scannedAt`
紀錄上次執行 cron job 的時間。
## GEC (deadline: 4/29)
送出前改改討論。
## Tech4Democracy case study (deadline: 5/3)
## coscup 社群軌投稿 (deadline: 5/6)
https://blog.coscup.org/2019/04/2019-cfp-open.html#g0v
> 哈囉,g0v 今年也參加了COSCUP 的社群議程,今年 g0v 社群議程原則上包含下列主題—「開放政府」、「新媒體」、「公共服務」、「開放資料」、「社會參與」和「基礎建設」這幾個大方向。歡迎各位投稿分享你今年的專案吧!
>