Coder Social home page Coder Social logo

reikai-kouza's Introduction

例会講座

Deploy Test Lint

⚡ 概要

議題/2021/例会・例会講座の見直し

📅 スラッシュコマンド

/reikai-kouza-check

例会講座の担当日を確認する。

/reikai-kouza-cancel

例会講座の担当をキャンセルする。手続きは送られてきた内容に従ってください。

🔨 ビルド

docker を用いる場合

以下の通りに実行すれば、./dist 以下に生成されます。(yarn build:production を実行した場合と同様に生成されます。)

$ ./prepare.sh
$ ./production-build.sh

docker を使用しない場合

yarn が必要です。Dockerを使用した場合と同様に、./dist 以下に生成されます。

$ cd reikai-kouza
$ yarn install
$ yarn prepare
$ yarn build              # または、yarn build:production

🎨 フォーマット

$ # ビルドの手順は済んでいるものとします
$ yarn fix

🐎 実行

事前に secret/keys.json を設定する。 secret/keys.example.json に設定例がある。

additionalAssignTask.js

追加の割り当てを行う。

実行例

$ node additionalAssignTask.js $(date +"%Y%m%d")

assignTask.js

割り当てを行う。

実行例

$ node assignTask.js $(date +"%Y%m%d")

background.js

サーバー側の処理

実行例

$ node background.js

publicAnnounce.js

担当者を全体に告知する。

実行例

$ node publicAnnounce.js $(date +"%Y%m%d")

registerExistingMembers.js

部員の情報を登録する。(稼働開始時のみ)

実行例

$ node registerExistingMembers.js $(date +"%Y%m%d")

send2AllMembers.js

部員全員にメッセージを送信する。

実行例

$ node send2AllMembers.js

updateMembers.js

新規部員の登録と凍結された部員の処理を行う。

実行例

$ node updateMembers.js $(date +"%Y%m%d")

updateStatus.js

割り当てが1周したらリセットする。

実行例

$ node updateStatus.js $(date +"%Y%m%d")

⏳ 運用

稼働時に一度だけ実行

  • registerExistingMembers.js
  • send2AllMembers.js

1日1回実行

  • additionalAssignTask.js
  • updateStatus.js
  • assignTask.js
  • publicAnnounce.js
  • updateMembers.js

assignTask.js は、2回実行される

以下のようなシェルスクリプトを用意し、定期実行する。

#!/bin/bash

cd $(dirname $0)

/usr/local/bin/node ./additionalAssignTask.js $1
sleep 1m
/usr/local/bin/node ./updateStatus.js $1
sleep 1m
/usr/local/bin/node ./assignTask.js $1
sleep 1m
/usr/local/bin/node ./assignTask.js $1
sleep 1m
/usr/local/bin/node ./publicAnnounce.js $1
sleep 1m
/usr/local/bin/node ./updateMembers.js $1

🚦 テスト

DBに手動追加した上で運用させる

以下のファイルを1回ずつ順に引数を変えながら実行

  • additionalAssignTask.js
  • updateStatus.js
  • assignTask.js
  • publicAnnounce.js

assignTask.js は、2回実行される

以下のようなシェルスクリプトを用意し、定期実行する。 稼働テストの詳細は、稼働テストのログにある。

#!/bin/bash

cd $(dirname $0)

/usr/local/bin/node ./additionalAssignTask.js $1
sleep 1m
/usr/local/bin/node ./updateStatus.js $1
sleep 1m
/usr/local/bin/node ./assignTask.js $1
sleep 1m
/usr/local/bin/node ./assignTask.js $1
sleep 1m
/usr/local/bin/node ./publicAnnounce.js $1

reikai-kouza's People

Contributors

dependabot[bot] avatar hiromi-mi avatar ryokohbato avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reikai-kouza's Issues

Ownerチャンネルに流すログを減らす

概要

Ownerチャンネルにログが流れすぎていて分かりづらい、かつログチャンネルと見分けがつかない。

変更点

ログとしての意味しか持っていないものはログチャンネルにのみ流すようにする。

部員情報の登録時エラー

起こっている問題

登録時にエラーが出る

スクリーンショット

image

期待される挙動

エラーが出ず登録が完了する

補足等

INSERT の処理で、message_ts が不足している

講座管理の二分化を解消する

起こっている問題

内部WikiとこのBotの2箇所で例会講座が管理されていて、講座を担当したいときにどこをどうするべきか分からない

例会講座の担当者数上限を1人にする

概要

例会講座の担当者数上限を、現在の2人/日から1人/日に変更する。併せて、確定までの有効時間を72時間から48時間に変更する。

経緯

当初はちょっと長いLT (長くても10分〜15分程度) を想定していたが、嬉しいことに長い講座が多いようなので、運営への負担も考慮した上で上限人数を引き下げる。ただし、講座に空きが増えることを抑止する目的で、有効時間を調整することとした。

例会の時間を変更

起こっている問題

例会の時間が19:00からとなっている

期待される挙動

21:00から

補足

ついでに、#reikai-kouza に誘導しておく

各所のリファクタリング

概要

各所のリファクタリング

  • src/slash/check - prettierのものと名前が被っており、かつ抽象的で分かりにくい
  • src/slash/cancel - 上記のものにあわせる
  • src/modules/slack - 似たようなものが多い上に、名前が分かりにくい

DMのログが冗長過ぎる

#61 の直接的な原因となったのは、DMのログが著しく冗長であったことであり、そもそも冗長なログは解析の際に邪魔になる。

読みやすさと情報量の両立したログを流したい。

関連: #61

Slackへの投稿ができていない

起こっている問題

#62 における変更により、chat.postMessageが動作しなくなった。(チャンネルにメッセージが投稿されなくなった)

期待される挙動

チャンネルに正しくメッセージが投稿される。

補足等

関連: #62

botが連絡を72時間待ってくれない

起こっている問題

reikai-kouza botとのやりとりで、例会の担当選択のDMを着信してから72時間経過する前に「72時間以内に返信がなかったため、自動的にスキップします。」というメッセージに更新される。

スクリーンショット

image

期待される挙動

12/17の15時台に通知が来たので、12/20の15時に更新が行われる。

問題の再現手段

前回のメッセージが12/15に来ていて今日が12/18なので、直近の記録が残っているのではないかと思いました。

補足等

case projectConstants.values.announcementStatus.NoReply:
の処理で該当の未返信の記録をDBから削除するか完了済のフラグを立てる必要があったりしそうな気がします。

担当者の告知が #reikai-kouza に流れていない

起こっている問題

担当者の告知が、owner チャンネルと log チャンネルにのみ流れている。

期待される挙動

メンバーチャンネルにも告知が流れる。

補足等

直近の変更により新たに発生したものであると思われる。

Dockerを使ったテスト

概要

Dockerで適当なサーバーを立てれば良い。
#221 でDocker周りが修正されるので、それと同時にやるのが良さそう。

全てのDMを取得できていない

起こっている問題

DMのIDを取得する際、next_cursor を正しく処理できていない。
現状では人数が少ないため問題なく動作しているが、人数が増えると間違いなく動作しなくなる。

期待される挙動

全てのDMを取得できる

スラッシュコマンドが動かない

起こっている問題

スラッシュコマンドが実行できない

/reikai-kouza-check を実行した例

/reikai-kouza-check failed with the error "dispatch_failed"

と表示される。

スクリーンショット

image

期待される挙動

エラーなく実行できる

問題の再現手段

いずれかのチャンネルで、有効なスラッシュコマンド (/reikai-kouza-check または /reikai-kouza-cancel) を送信する。

動作環境

アプリ版 (Linux) およびウェブブラウザで確認

補足等

スラッシュコマンド以外でもエラーが出る可能性あり

429 Too Many Requests でエラー落ちする場合がある

起こっている問題

https://kmc-jp.slack.com/archives/C021LGME8F7/p1639551729157200?thread_ts=1639551729.157200&cid=C021LGME8F7

登録フォームが送られる → 何らかの理由で大量のリクエストが送信される → 当然 Too Many Requests でエラー落ちする → 実行が停止されているので、その後のDBの更新処理が行われない → DBが更新されていないので、1つ前の登録日で登録される

期待される挙動

よく分からない理由でエラー落ちしないで (切実)

問題の再現手段

不明

補足等

#67 の再発

起こっている問題

#67 が再発し、 :broom: 割り当て状態をリセットします。 と表示されている。

スクリーンショット

image

期待される挙動

:broom: 割り当て状態のリセットをチェックします。 と流れる。

割り当て状態のリセットに関するログメッセージを変更

起こっている問題

割り当て状態がリセットされない場合にも 割り当て状態をリセットします。 というログが流れて、分かりづらい。

期待される挙動

割り当て状態が実際にリセットされる時のみ 割り当て状態をリセットします。 と流れ、その他の場合は 割り当て状態のリセットをチェックします。 等と流れると良さそう。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.