ryokohbato / reikai-kouza

例会講座の自動割当システム

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

例会講座

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

About

例会講座の自動割当システム

License:Apache License 2.0


Languages

Language:TypeScript 96.3%Language:JavaScript 2.5%Language:Shell 0.4%Language:Makefile 0.4%Language:Dockerfile 0.3%