tags: cofacts, meeting note GA: UA-98468513-3 —

20201202 會議記錄

:::info

小聚檢討

文字紀錄見小松果

邀請人來闢謠的文案與視覺

時間點的建議:在使用頻率較高(ex: 選舉)時招募

字數同下圖

:::success

結論

兩個時機:

無法使用 bug

流程問題

網站 UX

Google Sheets 無法 import

orz import 完之後,就可以 import 了,很怪 :::success 我開完之後先 import 一次只有一個 tab 的 (?) 然後再刪掉 先在小聚前的會議確認是否能 import :::

台南 summit

攜帶川普貼紙與文宣 簡報簡報 工作坊:按讚+怦然心動的引言創作 大致上分四到五組,每組有一個jamboard頁面,由指導員負責協助(文武、鹿、orz、bil)

Migration

:::danger 移至下周討論 :::

  • 改userId 的 migration https://gist.github.com/ztsai/f9445bb45bfa145a329fcfad51519346 [name=zoe]
  • 改avatarType 的 migration https://gist.github.com/ztsai/acc9c723b4254d2f31114c4959a2dfdc [name=zoe]

Dialogflow 設定

:::danger 移至下周討論 :::

Intent design 參考資料(limited access): https://datastudio.google.com/u/0/reporting/64c3b474-a306-40f5-86b9-2e894d028da6/page/lijmB

  • 問題類:請問(xxx)、(xxx)什麼(xxx)、資料庫…
  • 無意義類:謝謝、好的、了解、OK、測試、天氣、你好、國家、人名…

AI4SG

:::danger 移至下周討論 :::

yegogo

下次用這個 GraphQL 直接抓要刪啥

{
  ListReplies(filter: {userId: "vA43ZHEBrhVJn3LNSSe8"}, first: 20, orderBy: {createdAt: DESC}) {
    edges {
      node {
        id
        createdAt
        articleReplies {
          articleId
          status
        }
      }
    }
  }
}

然後做出 Takedown PR https://github.com/cofacts/takedowns/tree/master/2020 以及 script

docker-compose exec api node build/scripts/removeArticleReply.js --userId=vA43ZHEBrhVJn3LNSSe8 --replyId=<> --articleId=<>
// remove-yegogo.js
const fetch = require('node-fetch');

const USER_ID = 'vA43ZHEBrhVJn3LNSSe8';

async function main() {
  const result = await fetch('https://api.cofacts.org/graphql', {
    method: 'post',
    headers: {
      'content-type': 'application/json',
    },
    body: JSON.stringify({
      variables: { userId: USER_ID },
      query: `
        query ($userId: String!){
          ListArticles(filter: {articleRepliesFrom: {userId: $userId}}, first: 200, orderBy: {lastRepliedAt: DESC}) {
            edges {
              node {
                articleReplies(status: NORMAL) {
                  articleId
                  replyId
                  updatedAt
                  createdAt
                  user {
                    id
                  }
                }
              }
            }
          }
        }
      `,
    }),
  }).then(r => r.json());

  const articleReplies = result.data.ListArticles.edges
    .flatMap(({ node }) => node.articleReplies)
    .filter(({ user }) => user.id === USER_ID);

  console.log('------');
  console.log('Replies to remove');
  articleReplies.forEach(ar =>
    console.log(`- https://cofacts.org/reply/${ar.replyId}`)
  );
  console.log('------');
  console.log('Commands');
  articleReplies.forEach(ar =>
    console.log(
      `docker-compose exec api node build/scripts/removeArticleReply.js --userId=${USER_ID} --replyId=${
        ar.replyId
      } --articleId=${ar.articleId}`
    )
  );

  console.log('------');
}

main().catch(console.error);

Tutorial & 動畫

:potable_water: Release pipeline

:star: Released to production

:electric_plug: API

DIFF

:globe_with_meridians: Site

https://github.com/cofacts/rumors-site/releases/tag/release%2F20201130

:robot_face: LINE bot

:rocket: Staging

:electric_plug: API

DIFF

Migrations see “migration” this week

:robot_face: LINE bot

Testing checklist

https://lin.ee/1QUzEX4nI

:globe_with_meridians: Site

See landing page and test if it functions well