From 4b29424a8c9e97bd624c51b2036b65001ebc5275 Mon Sep 17 00:00:00 2001 From: taminororo <169162271+taminororo@users.noreply.github.com> Date: Wed, 30 Sep 2026 11:59:11 +0700 Subject: [PATCH 1/6] =?UTF-8?q?docs:=20=E9=80=9A=E7=9F=A5=E3=81=AE?= =?UTF-8?q?=E9=80=81=E3=82=8A=E5=85=88=E3=83=BBSlack=20ID=20=E3=81=AE?= =?UTF-8?q?=E7=B4=90=E4=BB=98=E3=81=91=E3=83=BB=E3=83=AC=E3=82=B9=E3=82=AD?= =?UTF-8?q?=E3=83=A5=E3=83=BC=E3=81=AE=20DM=E3=83=BB=E3=83=9E=E3=83=8B?= =?UTF-8?q?=E3=83=A5=E3=82=A2=E3=83=AB=E3=81=AE=E9=96=8B=E3=81=8D=E6=96=B9?= =?UTF-8?q?=E3=81=AE=E5=88=A4=E6=96=AD=E3=82=92=20ADR=EF=BC=880011?= =?UTF-8?q?=E3=80=9C0014=EF=BC=89=E3=81=AB=E6=AE=8B=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #583。出典は 75649e1、#476・PR #522、#545・PR #546、#444・PR #451・#509・PR #510。README の一覧に4行を足した。 --- docs/decisions/0011-shift-notice-dm-only.md | 46 +++++++++++++++ docs/decisions/0012-slack-id-linked-by-gas.md | 47 +++++++++++++++ .../0013-rescue-dm-sent-immediately.md | 55 ++++++++++++++++++ docs/decisions/0014-manual-open-in-new-tab.md | 57 +++++++++++++++++++ docs/decisions/README.md | 4 ++ 5 files changed, 209 insertions(+) create mode 100644 docs/decisions/0011-shift-notice-dm-only.md create mode 100644 docs/decisions/0012-slack-id-linked-by-gas.md create mode 100644 docs/decisions/0013-rescue-dm-sent-immediately.md create mode 100644 docs/decisions/0014-manual-open-in-new-tab.md diff --git a/docs/decisions/0011-shift-notice-dm-only.md b/docs/decisions/0011-shift-notice-dm-only.md new file mode 100644 index 00000000..733d8a21 --- /dev/null +++ b/docs/decisions/0011-shift-notice-dm-only.md @@ -0,0 +1,46 @@ +# 0011: シフト変更の Slack 通知はチャンネルに送らず、本人への DM だけにする + +- 状態:採用 +- 決めた日:2026-04-12(この方針をコードに入れたコミット 75649e1 の日付) +- 決めた人:45th の開発チームの MT +- 確信度:記録なし +- 出典:コミット 75649e1。理由は PM の作業メモのみ(公開の出典なし) + +## 背景 + +シフトが変わったことを Slack で知らせる仕組みを作るときに、送り先を決める必要があった。チャンネル(委員が全員見る場所)に投稿するか、シフトが変わった本人に DM で送るかである。 + +作りかけのコードは、同じ内容をチャンネルと本人の DM の両方に送っていた(75649e1 の変更前の `SendMessage`)。 + +## 候補 + +| 候補 | 良い点 | 悪い点 | +| --- | --- | --- | +| チャンネルと本人の DM の両方に送る | 誰のシフトが変わったかを、全員が見られる | 約 200 人分の変更がチャンネルに流れ、読まれなくなる | +| チャンネルにだけ送る | 本人の Slack ID を調べなくてよい | 自分に関係する変更を、大量の投稿の中から探すことになる | +| 本人の DM にだけ送る | 自分の変更だけが届く | 本人の Slack ID を DB に入れる必要がある([0012](0012-slack-id-linked-by-gas.md)) | + +## 決定 + +チャンネルには送らず、シフトが変わった本人への DM だけにする。 + +コミット 75649e1 で、`SendMessage` のチャンネルへの送信をコメントにして止め、`NewSlackService` で `SLACK_CHANNEL_ID` を必須にするのをやめた。 + +## 理由 + +MT で議論して決めた。理由は、約 200 人分の変更がチャンネルに流れるとノイズになるから、と PM の作業メモ(2026-04-12 時点)に残っている。 + +コードに残っているのは「MTの議論により、チャンネルへのシフト変更通知は導入しない方針」というコメントだけである。MT の資料そのものは確かめていない。 + +## 前提 + +- 送信:`api/lib/externals/slack/slack_service.go#SlackService.SendMessage`。本人の Slack ID があるときだけ送る +- シフト変更の通知の呼び出し元:`api/lib/usecase/notification_usecase.go#notificationUseCase.processGroup` +- 本人の Slack ID が DB に入っていること([0012](0012-slack-id-linked-by-gas.md)) +- #546(2026-09-20)から、レスキューの DM(`api/lib/externals/slack/slack_service.go#SlackService.SendRescueMessage`)も同じ `SendMessage` を使っている。チャンネルへの送信を戻すときに、コメントを外すだけにすると、レスキューの DM までチャンネルに流れる。戻すなら、シフト変更用の送信を別のメソッドに分け、`api/lib/externals/slack/slack_service.go#NewSlackService` で `SLACK_CHANNEL_ID` を必須に戻す(2026-09-30 に develop のコードで確かめた) + +## 結果 + +45th の技大祭では、シフト変更は本人に DM で届いた。2026-09-18 には、スプシでセルを空欄にした変更が「(不明)」と表示された DM が届き、問い合わせが来た(#543。表示は PR #544 で直した)。 + +## 追記 diff --git a/docs/decisions/0012-slack-id-linked-by-gas.md b/docs/decisions/0012-slack-id-linked-by-gas.md new file mode 100644 index 00000000..8c69dc02 --- /dev/null +++ b/docs/decisions/0012-slack-id-linked-by-gas.md @@ -0,0 +1,47 @@ +# 0012: Slack ID の紐付けは GAS の名簿送信で行い、API に一括のバッチは作らない + +- 状態:採用 +- 決めた日:2026-08-27(#476 に設計を書いた日)。API のバッチを書きかけてやめたのは、PR #522 を作っていたとき(2026-09 中旬) +- 決めた人:45th の PM +- 確信度:記録なし +- 出典:#476、PR #522 + +## 背景 + +シフト変更は本人への DM だけで知らせる([0011](0011-shift-notice-dm-only.md))ので、本人の Slack ID(`users.slack_user_id`)が DB に要る。ところが API には、この列を書く処理が無かった(読むだけだった)。Slack のトークンを本番に入れても、DM は誰にも届かない状態だった。 + +Slack ID は、Slack の `users.lookupByEmail` でメールアドレスから引ける。ただ、本番の `users.mail` は 353 人全員が空だった(#476、2026-08-27 時点)。名簿送信の GAS はメールアドレスを送っていたが、API が受け取らずに捨てていた。 + +## 候補 + +| 候補 | 良い点 | 悪い点 | +| --- | --- | --- | +| API(Go)に一括のバッチを作り、DB のメールアドレスから Slack ID を引く | Slack を呼ぶ処理が API の中にまとまる | DB にメールアドレスが無いので、そのままでは引けない。名簿送信とは別に、本番のサーバーでバッチを動かす手順が1つ増える。本番のサーバーは操作する手段が限られていて、コンテナの中でコマンドを動かす運用は重い | +| GAS の名簿送信で Slack ID を引き、メールアドレスと一緒に API に送る | 名簿送信の1回で、メールアドレスと Slack ID の両方が DB に入る | GAS の6分の実行制限と、Slack の呼び出し回数の制限(1分に50回程度)に当たりうる | + +## 決定 + +GAS の名簿送信で `users.lookupByEmail` を呼び、メールアドレスと Slack ID を名簿のデータに入れて API に送る。API は受け取って保存するだけにする。 + +- 空で送られたときは、DB にある値を消さずに残す。Slack の照会が時間切れで途中までしか引けなかった回や、トークンを入れていない回に送り直しても、消えないようにするためである +- 引けた人はシフトスプシの `SlackID` シートに残し、送り直すときは Slack を呼ばない。照会は4分で打ち切り、残りは次の送信で引く +- トークンが無い・間違っているときも、名簿送信そのものは止めない。Slack ID だけを紐付けずに、画面で知らせる + +## 理由 + +API にバッチを置くと、DB にメールアドレスが無いので、先にメールアドレスを入れる手順が要る。名簿送信のほかに、本番でバッチを動かす手順も増える。GAS なら、名簿送信の1回で両方が入る(#476 の「API 側に置かない理由」)。 + +PR #522 を作る途中で Go のバッチを書きかけたが、同じ理由でコミットせずにやめた(PR #522 の本文)。 + +## 前提 + +- GAS 側:`gas/shift/名簿タスク送信.js#attachSlackUserIds_`、`gas/shift/名簿タスク送信.js#lookupSlackUserIdByEmail_` +- API 側:`api/lib/usecase/user_usecase.go#userUseCase.UpdateUsersFromGAS`、`api/lib/internals/repository/user_repository.go#userRepository.UpdateWithSlackUserID` +- GAS のスクリプトプロパティに `SLACK_BOT_TOKEN`(スコープ `users:read.email`)が入っていること +- 本番で通知を有効にするときは、先に API にトークンを入れ、そのあとで名簿送信で紐付ける。逆にすると、溜まっていた過去のシフト変更が一斉に DM で届く(`gas/README.md` の「本番で通知を有効にする順序」) + +## 結果 + +PR #522 を 2026-09-17(日本時間)にマージした。 + +## 追記 diff --git a/docs/decisions/0013-rescue-dm-sent-immediately.md b/docs/decisions/0013-rescue-dm-sent-immediately.md new file mode 100644 index 00000000..55dd1c1d --- /dev/null +++ b/docs/decisions/0013-rescue-dm-sent-immediately.md @@ -0,0 +1,55 @@ +# 0013: レスキューの対応状況の DM は、まとめずに、書き換えのたびにすぐ送る + +- 状態:採用 +- 決めた日:2026-09-20(#545 の本文の「見直した点」) +- 決めた人:45th の PM(メンバーが作っていた PR #546 を引き継いで決めた) +- 確信度:記録なし +- 出典:#545、PR #546 + +## 背景 + +レスキューは、委員がアプリから本部に送る問い合わせである。本部が対応状況を変えたり返答を書いたりしたら、送った人に Slack の DM で知らせる機能を作った(#545、PR #546)。 + +最初の案は、PR #546 の最初のコミット(f22d09c)にある。知らせる内容を DB のテーブルに溜め、30秒ごとに見回って、最後の書き換えから15秒たったものを1通にまとめて送る形だった。1通にまとめてほしいという要望が、機能を作ったメンバーのほかから出ていた記録は無い。 + +## 候補 + +| 候補 | 良い点 | 悪い点 | +| --- | --- | --- | +| テーブルに溜め、見回りで1通にまとめて送る | 続けて書き換えても、DM が1通で済む | 届くまでに15〜45秒かかる。確実にまとまるのは15秒以内の書き換えだけ。本番 DB(ほかのシステムと共有しているクラスタ)にテーブルを足す作業が要る | +| 書き換えのたびに、その場で送る | 本部が見たことがすぐ届く。DB を変えなくてよい | 続けて書き換えると、DM が複数届く | + +## 決定 + +書き換えのたびに、その場で DM を送る。送信は API の応答とは別の goroutine で行い、失敗しても送り直さない。返答は、アプリの「本部からの返答」タブでも見られる。 + +あわせて、次のようにした。 + +- 更新の PUT に `notify` を足し、`false` なら送らない。GAS が押し直しで重なったレスキューをまとめるときの書き換えは、`notify: false` を送る。押し直した人に「対応が完了しました」が届かないようにするためである +- 本番に出すときは、GAS を先に、API を後にする。今の API は知らない JSON の項目を無視するので、GAS が先でも害は無い。逆にすると、その間に誤った DM が届く + +## 理由 + +#545 の「見直した点」に、次の理由が書いてある。 + +- レスキューは急ぎで、「本部が見てくれた」は早く届いたほうがよい。まとめるには待つしかなく、待つ分だけ遅れる +- 返答を打つ時間を考えると、15秒以内に続けて書き換える場面は少ない +- レスキューは件数が少なく、シフト変更の通知のように大量の DM が届くおそれがない +- テーブルを足すと、本番 DB への作業が増える + +## 前提 + +- 何を知らせるかの判定と送信:`api/lib/usecase/rescue_notification_usecase.go#rescueNotifier.notify` +- `notify` の扱い:`api/lib/entity/request.go#RescueNotifyOption.ShouldNotify`(省略したときは送る) +- GAS で重なったレスキューをまとめる処理:`gas/rescue/コード.js#closeDuplicateInDb_` +- レスキューの件数が少ないこと。大量に届くようになったら、まとめる形を見直す +- `SLACK_BOT_TOKEN` が無いとき、または `RESCUE_NOTIFICATION_DISABLED=true` のときは送らない(`api/lib/di/di.go#InitializeServer`) +- 送り先は本人の Slack ID で、シフト変更の通知と同じ `SendMessage` を使う([0011](0011-shift-notice-dm-only.md)、[0012](0012-slack-id-linked-by-gas.md)) + +## 結果 + +PR #546 を 2026-09-20(日本時間)にマージした。 + +既知の制約として、同じレスキューへの PUT が1秒未満で重なると、両方が同じ「更新前」の値を読み、DM が1通余分に届くことがある。CodeRabbit はトランザクションで囲むよう指摘したが、本部の書き込みは普通は数秒以上離れるので見送った。直すなら、更新と同時に古い値を返す1つのクエリにする(PR #546 の本文とレビューのスレッド。`api/lib/usecase/question_rescue_usecase.go#questionRescueUseCase.UpdateQuestionRescue` などの3種類の更新)。 + +## 追記 diff --git a/docs/decisions/0014-manual-open-in-new-tab.md b/docs/decisions/0014-manual-open-in-new-tab.md new file mode 100644 index 00000000..6b511204 --- /dev/null +++ b/docs/decisions/0014-manual-open-in-new-tab.md @@ -0,0 +1,57 @@ +# 0014: マニュアルはアプリに埋め込まず、別タブで開く + +- 状態:採用 +- 決めた日:2026-08-20(スライド版。#444)、2026-09-13(ドキュメント版も別タブにした。#509) +- 決めた人:45th の PM +- 確信度:記録なし +- 出典:#444、PR #451、#509、PR #510 + +## 背景 + +シフトカードとマニュアル一覧から、タスクのマニュアルを開けるようにしている。マニュアルは2種類ある。 + +- ドキュメント版:元の Google ドキュメント。45th の途中から、技大祭の共有ドライブに置いた PDF に切り替えた +- スライド版:SeeFT の API から配信する HTML([0006](0006-manual-serving-google-gate.md)) + +どちらも、閲覧できる人を技大祭のアカウントに限っている。 + +最初、ドキュメント版はシフトカードの中に埋め込み(iframe)で表示していた。2026-09-13、ドキュメント版を共有ドライブの PDF に切り替えたあと、埋め込みの枠に Google のエラー画面(401)が出ると報告があった(#509)。 + +## 候補 + +| 候補 | 良い点 | 悪い点 | +| --- | --- | --- | +| アプリの中に埋め込む(iframe やモーダル) | アプリの画面から離れずに読める | 閲覧できる人を限ったファイルは、他サイトの枠の中では開けない(下の「理由」) | +| 別タブで開く | どのブラウザでも開ける | アプリの画面から離れる | + +## 決定 + +マニュアルは、ドキュメント版もスライド版も、埋め込まずに別タブで開く。 + +- スライド版は、最初から別タブで開く作りにした(#444、PR #451) +- ドキュメント版の埋め込み(`ManualViewer`)は、PR #510 で消した + +## 理由 + +閲覧できる人を限ったファイルは、SeeFT の画面の中の枠(他サイトの iframe)では開けない。次のどれか1つに当たると表示されない(#509 の調査、2026-09-13)。 + +- Safari は、他サイトの枠に Cookie を渡さない。Google から見ると、ログインしていない人になる +- Cookie が届いても、ブラウザの既定のアカウントが個人のアカウントだと、権限が無い。枠の中ではアカウントを切り替えられない +- Google のログイン画面は、枠の中に表示できない +- ドライブの `/file/d//view` は `X-Frame-Options: SAMEORIGIN` を返すので、他サイトの枠に表示されない + +URL の形を変えても開けなかった。iPhone の Safari を装い、Cookie なしで他サイトの枠として取得して確かめた(#509、2026-09-13)。結果は、`/document/d//preview` が 302(ログイン画面へ転送)、`/file/d//view` が 403、`/file/d//preview` が 401 だった。 + +スライド版を決めた時点でも、認証の付いたページは埋め込めないことを実測していた(#444 の本文)。サードパーティ Cookie が遮断され、ログイン画面も枠の中に表示されないためである。 + +## 前提 + +- 開く処理:`mobile/lib/widgets/shift_card.dart#_ManualToggleState._open` +- 閲覧できる人を技大祭のアカウントに限っていること([0006](0006-manual-serving-google-gate.md))。誰でも読める配信に変えるなら、埋め込みも選べるようになる +- ブラウザが、他サイトの枠に Cookie を渡さない動きを続けていること + +## 結果 + +PR #510 を 2026-09-13 にマージした。 + +## 追記 diff --git a/docs/decisions/README.md b/docs/decisions/README.md index d44d99af..99d21b8d 100644 --- a/docs/decisions/README.md +++ b/docs/decisions/README.md @@ -102,3 +102,7 @@ python3 scripts/refcheck/refcheck.py docs/decisions/*.md | --- | --- | --- | | [0001](0001-record-decisions.md) | 判断の理由を ADR としてリポジトリに残す | 採用 | | [0002](0002-di-wiring-only.md) | di.go は部品の組み立てだけにし、定期実行などは externals の下に専用のパッケージを作って置く | 採用 | +| [0011](0011-shift-notice-dm-only.md) | シフト変更の Slack 通知はチャンネルに送らず、本人への DM だけにする | 採用 | +| [0012](0012-slack-id-linked-by-gas.md) | Slack ID の紐付けは GAS の名簿送信で行い、API に一括のバッチは作らない | 採用 | +| [0013](0013-rescue-dm-sent-immediately.md) | レスキューの対応状況の DM は、まとめずに、書き換えのたびにすぐ送る | 採用 | +| [0014](0014-manual-open-in-new-tab.md) | マニュアルはアプリに埋め込まず、別タブで開く | 採用 | From b3b66258c6286cb15a9639e9fb068898d3d896de Mon Sep 17 00:00:00 2001 From: taminororo <169162271+taminororo@users.noreply.github.com> Date: Wed, 30 Sep 2026 12:08:47 +0700 Subject: [PATCH 2/6] =?UTF-8?q?docs:=20ADR=200011=E3=80=9C0014=20=E3=81=AE?= =?UTF-8?q?=E6=9B=B8=E3=81=8D=E6=96=B9=E3=82=92=E3=81=BB=E3=81=8B=E3=81=AE?= =?UTF-8?q?=20ADR=20=E3=81=AB=E3=81=9D=E3=82=8D=E3=81=88=E3=80=81=E5=85=B1?= =?UTF-8?q?=E6=9C=89=E3=83=89=E3=83=A9=E3=82=A4=E3=83=96=E3=81=AE=E8=AA=A4?= =?UTF-8?q?=E3=82=8A=E3=82=92=E7=9B=B4=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 決めた人・出典の書き方、「スプレッドシート」「nutfes の Google アカウント」の呼び方を 0003〜0006 にそろえた。0014 の「共有ドライブ」は誤りで、Drive のフォルダ(マイドライブを共有したもの)に直し、0016 にリンクした。0012 の本番サーバーの操作手段の記述に、出典(PR #522 の本文)を添えた。 --- docs/decisions/0011-shift-notice-dm-only.md | 6 +++--- docs/decisions/0012-slack-id-linked-by-gas.md | 4 ++-- docs/decisions/0014-manual-open-in-new-tab.md | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/decisions/0011-shift-notice-dm-only.md b/docs/decisions/0011-shift-notice-dm-only.md index 733d8a21..60b25c24 100644 --- a/docs/decisions/0011-shift-notice-dm-only.md +++ b/docs/decisions/0011-shift-notice-dm-only.md @@ -2,9 +2,9 @@ - 状態:採用 - 決めた日:2026-04-12(この方針をコードに入れたコミット 75649e1 の日付) -- 決めた人:45th の開発チームの MT +- 決めた人:45th の SeeFT の MT - 確信度:記録なし -- 出典:コミット 75649e1。理由は PM の作業メモのみ(公開の出典なし) +- 出典:コミット 75649e1、45th の PM の作業メモ(公開していない) ## 背景 @@ -41,6 +41,6 @@ MT で議論して決めた。理由は、約 200 人分の変更がチャンネ ## 結果 -45th の技大祭では、シフト変更は本人に DM で届いた。2026-09-18 には、スプシでセルを空欄にした変更が「(不明)」と表示された DM が届き、問い合わせが来た(#543。表示は PR #544 で直した)。 +45th の技大祭では、シフト変更は本人に DM で届いた。2026-09-18 には、スプレッドシートでセルを空欄にした変更が「(不明)」と表示された DM が届き、問い合わせが来た(#543。表示は PR #544 で直した)。 ## 追記 diff --git a/docs/decisions/0012-slack-id-linked-by-gas.md b/docs/decisions/0012-slack-id-linked-by-gas.md index 8c69dc02..899ddb3c 100644 --- a/docs/decisions/0012-slack-id-linked-by-gas.md +++ b/docs/decisions/0012-slack-id-linked-by-gas.md @@ -16,7 +16,7 @@ Slack ID は、Slack の `users.lookupByEmail` でメールアドレスから引 | 候補 | 良い点 | 悪い点 | | --- | --- | --- | -| API(Go)に一括のバッチを作り、DB のメールアドレスから Slack ID を引く | Slack を呼ぶ処理が API の中にまとまる | DB にメールアドレスが無いので、そのままでは引けない。名簿送信とは別に、本番のサーバーでバッチを動かす手順が1つ増える。本番のサーバーは操作する手段が限られていて、コンテナの中でコマンドを動かす運用は重い | +| API(Go)に一括のバッチを作り、DB のメールアドレスから Slack ID を引く | Slack を呼ぶ処理が API の中にまとまる | DB にメールアドレスが無いので、そのままでは引けない。名簿送信とは別に、本番のサーバーでバッチを動かす手順が1つ増える。本番のサーバーを操作する手段は限られていて、コンテナの中でコマンドを動かす運用は重い(PR #522 の本文) | | GAS の名簿送信で Slack ID を引き、メールアドレスと一緒に API に送る | 名簿送信の1回で、メールアドレスと Slack ID の両方が DB に入る | GAS の6分の実行制限と、Slack の呼び出し回数の制限(1分に50回程度)に当たりうる | ## 決定 @@ -24,7 +24,7 @@ Slack ID は、Slack の `users.lookupByEmail` でメールアドレスから引 GAS の名簿送信で `users.lookupByEmail` を呼び、メールアドレスと Slack ID を名簿のデータに入れて API に送る。API は受け取って保存するだけにする。 - 空で送られたときは、DB にある値を消さずに残す。Slack の照会が時間切れで途中までしか引けなかった回や、トークンを入れていない回に送り直しても、消えないようにするためである -- 引けた人はシフトスプシの `SlackID` シートに残し、送り直すときは Slack を呼ばない。照会は4分で打ち切り、残りは次の送信で引く +- 引けた人はシフトのスプレッドシートの `SlackID` シートに残し、送り直すときは Slack を呼ばない。照会は4分で打ち切り、残りは次の送信で引く - トークンが無い・間違っているときも、名簿送信そのものは止めない。Slack ID だけを紐付けずに、画面で知らせる ## 理由 diff --git a/docs/decisions/0014-manual-open-in-new-tab.md b/docs/decisions/0014-manual-open-in-new-tab.md index 6b511204..865b5495 100644 --- a/docs/decisions/0014-manual-open-in-new-tab.md +++ b/docs/decisions/0014-manual-open-in-new-tab.md @@ -10,12 +10,12 @@ シフトカードとマニュアル一覧から、タスクのマニュアルを開けるようにしている。マニュアルは2種類ある。 -- ドキュメント版:元の Google ドキュメント。45th の途中から、技大祭の共有ドライブに置いた PDF に切り替えた +- ドキュメント版:元の Google ドキュメント。45th の途中から、技大祭の Drive のフォルダに置いた PDF に切り替えた([0016](0016-simple-manual-pdf-on-drive.md)) - スライド版:SeeFT の API から配信する HTML([0006](0006-manual-serving-google-gate.md)) -どちらも、閲覧できる人を技大祭のアカウントに限っている。 +どちらも、閲覧できる人を nutfes の Google アカウントに限っている。 -最初、ドキュメント版はシフトカードの中に埋め込み(iframe)で表示していた。2026-09-13、ドキュメント版を共有ドライブの PDF に切り替えたあと、埋め込みの枠に Google のエラー画面(401)が出ると報告があった(#509)。 +最初、ドキュメント版はシフトカードの中に埋め込み(iframe)で表示していた。2026-09-13、ドキュメント版を Drive の PDF に切り替えたあと、埋め込みの枠に Google のエラー画面(401)が出ると報告があった(#509)。 ## 候補 @@ -47,7 +47,7 @@ URL の形を変えても開けなかった。iPhone の Safari を装い、Cook ## 前提 - 開く処理:`mobile/lib/widgets/shift_card.dart#_ManualToggleState._open` -- 閲覧できる人を技大祭のアカウントに限っていること([0006](0006-manual-serving-google-gate.md))。誰でも読める配信に変えるなら、埋め込みも選べるようになる +- 閲覧できる人を nutfes の Google アカウントに限っていること([0006](0006-manual-serving-google-gate.md))。誰でも読める配信に変えるなら、埋め込みも選べるようになる - ブラウザが、他サイトの枠に Cookie を渡さない動きを続けていること ## 結果 From 10cd4f562233beec5d6ec10add2bd75ded275891 Mon Sep 17 00:00:00 2001 From: taminororo <169162271+taminororo@users.noreply.github.com> Date: Wed, 30 Sep 2026 12:24:26 +0700 Subject: [PATCH 3/6] =?UTF-8?q?docs:=20ADR=20=E3=81=AE=E3=80=8C=E7=A2=BA?= =?UTF-8?q?=E4=BF=A1=E5=BA=A6=E3=80=8D=E3=81=AE=E6=AC=84=E3=82=92=E3=80=8C?= =?UTF-8?q?=E6=B1=BA=E3=82=81=E3=81=9F=E3=81=A8=E3=81=8D=E3=81=AE=E8=87=AA?= =?UTF-8?q?=E4=BF=A1=E3=80=8D=E3=81=AB=E6=94=B9=E3=82=81=E3=82=8B=EF=BC=88?= =?UTF-8?q?#590=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/decisions/0002-di-wiring-only.md | 2 +- docs/decisions/0011-shift-notice-dm-only.md | 2 +- docs/decisions/0012-slack-id-linked-by-gas.md | 2 +- docs/decisions/0013-rescue-dm-sent-immediately.md | 2 +- docs/decisions/0014-manual-open-in-new-tab.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/decisions/0002-di-wiring-only.md b/docs/decisions/0002-di-wiring-only.md index cbd264bb..ea234118 100644 --- a/docs/decisions/0002-di-wiring-only.md +++ b/docs/decisions/0002-di-wiring-only.md @@ -3,7 +3,7 @@ - 状態:採用 - 決めた日:2026-04-29 - 決めた人:45th の PM -- 確信度:記録なし +- 決めたときの自信:記録なし - 出典:コミット `a44d742`(`di.go` から `slackService` を外した)、`7cc59c8`(`scheduler` を作った) ## 背景 diff --git a/docs/decisions/0011-shift-notice-dm-only.md b/docs/decisions/0011-shift-notice-dm-only.md index 60b25c24..5abbc005 100644 --- a/docs/decisions/0011-shift-notice-dm-only.md +++ b/docs/decisions/0011-shift-notice-dm-only.md @@ -3,7 +3,7 @@ - 状態:採用 - 決めた日:2026-04-12(この方針をコードに入れたコミット 75649e1 の日付) - 決めた人:45th の SeeFT の MT -- 確信度:記録なし +- 決めたときの自信:記録なし - 出典:コミット 75649e1、45th の PM の作業メモ(公開していない) ## 背景 diff --git a/docs/decisions/0012-slack-id-linked-by-gas.md b/docs/decisions/0012-slack-id-linked-by-gas.md index 899ddb3c..cfe2fcf7 100644 --- a/docs/decisions/0012-slack-id-linked-by-gas.md +++ b/docs/decisions/0012-slack-id-linked-by-gas.md @@ -3,7 +3,7 @@ - 状態:採用 - 決めた日:2026-08-27(#476 に設計を書いた日)。API のバッチを書きかけてやめたのは、PR #522 を作っていたとき(2026-09 中旬) - 決めた人:45th の PM -- 確信度:記録なし +- 決めたときの自信:記録なし - 出典:#476、PR #522 ## 背景 diff --git a/docs/decisions/0013-rescue-dm-sent-immediately.md b/docs/decisions/0013-rescue-dm-sent-immediately.md index 55dd1c1d..168992d7 100644 --- a/docs/decisions/0013-rescue-dm-sent-immediately.md +++ b/docs/decisions/0013-rescue-dm-sent-immediately.md @@ -3,7 +3,7 @@ - 状態:採用 - 決めた日:2026-09-20(#545 の本文の「見直した点」) - 決めた人:45th の PM(メンバーが作っていた PR #546 を引き継いで決めた) -- 確信度:記録なし +- 決めたときの自信:記録なし - 出典:#545、PR #546 ## 背景 diff --git a/docs/decisions/0014-manual-open-in-new-tab.md b/docs/decisions/0014-manual-open-in-new-tab.md index 865b5495..8ce778c4 100644 --- a/docs/decisions/0014-manual-open-in-new-tab.md +++ b/docs/decisions/0014-manual-open-in-new-tab.md @@ -3,7 +3,7 @@ - 状態:採用 - 決めた日:2026-08-20(スライド版。#444)、2026-09-13(ドキュメント版も別タブにした。#509) - 決めた人:45th の PM -- 確信度:記録なし +- 決めたときの自信:記録なし - 出典:#444、PR #451、#509、PR #510 ## 背景 From 2327329e1ceadd46de07729d599cab28cd85a7c7 Mon Sep 17 00:00:00 2001 From: taminororo <169162271+taminororo@users.noreply.github.com> Date: Wed, 30 Sep 2026 12:25:01 +0700 Subject: [PATCH 4/6] =?UTF-8?q?docs:=20ADR=200002=20=E3=81=AE=E6=AC=84?= =?UTF-8?q?=E3=81=AE=E5=90=8D=E5=89=8D=E3=81=AE=E5=A4=89=E6=9B=B4=E3=82=92?= =?UTF-8?q?=E6=88=BB=E3=81=99=EF=BC=88#591=20=E3=81=A7=E7=9B=B4=E3=81=99?= =?UTF-8?q?=E3=81=9F=E3=82=81=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/decisions/0002-di-wiring-only.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/decisions/0002-di-wiring-only.md b/docs/decisions/0002-di-wiring-only.md index ea234118..cbd264bb 100644 --- a/docs/decisions/0002-di-wiring-only.md +++ b/docs/decisions/0002-di-wiring-only.md @@ -3,7 +3,7 @@ - 状態:採用 - 決めた日:2026-04-29 - 決めた人:45th の PM -- 決めたときの自信:記録なし +- 確信度:記録なし - 出典:コミット `a44d742`(`di.go` から `slackService` を外した)、`7cc59c8`(`scheduler` を作った) ## 背景 From 4bb6bb863cfd32d626b07846482f8c343870af50 Mon Sep 17 00:00:00 2001 From: taminororo <169162271+taminororo@users.noreply.github.com> Date: Wed, 30 Sep 2026 12:33:45 +0700 Subject: [PATCH 5/6] =?UTF-8?q?docs:=20ADR=20=E3=81=AE=E6=AC=84=E3=82=92?= =?UTF-8?q?=E3=80=8C=E6=B1=BA=E5=AE=9A=E3=81=AE=E4=BF=A1=E9=A0=BC=E5=BA=A6?= =?UTF-8?q?=E3=80=8D=E3=81=AB=E6=94=B9=E3=82=81=E3=80=81=E6=A0=B9=E6=8B=A0?= =?UTF-8?q?=E3=82=92=E6=9B=B8=E3=81=8F=E8=A1=8C=E3=82=92=E8=B6=B3=E3=81=99?= =?UTF-8?q?=EF=BC=88#590=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/decisions/0011-shift-notice-dm-only.md | 3 ++- docs/decisions/0012-slack-id-linked-by-gas.md | 3 ++- docs/decisions/0013-rescue-dm-sent-immediately.md | 3 ++- docs/decisions/0014-manual-open-in-new-tab.md | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/decisions/0011-shift-notice-dm-only.md b/docs/decisions/0011-shift-notice-dm-only.md index 5abbc005..ad70d6ae 100644 --- a/docs/decisions/0011-shift-notice-dm-only.md +++ b/docs/decisions/0011-shift-notice-dm-only.md @@ -3,7 +3,8 @@ - 状態:採用 - 決めた日:2026-04-12(この方針をコードに入れたコミット 75649e1 の日付) - 決めた人:45th の SeeFT の MT -- 決めたときの自信:記録なし +- 決定の信頼度:記録なし + - 根拠:コミット 75649e1 のメッセージと差分には、決めたことと「MTの議論により」というコメントがあるが、どれだけ確かだと思っていたかは書かれていない。45th の PM の作業メモにも書かれていない。議論をした MT の資料は、まだ読めていない - 出典:コミット 75649e1、45th の PM の作業メモ(公開していない) ## 背景 diff --git a/docs/decisions/0012-slack-id-linked-by-gas.md b/docs/decisions/0012-slack-id-linked-by-gas.md index cfe2fcf7..682717d8 100644 --- a/docs/decisions/0012-slack-id-linked-by-gas.md +++ b/docs/decisions/0012-slack-id-linked-by-gas.md @@ -3,7 +3,8 @@ - 状態:採用 - 決めた日:2026-08-27(#476 に設計を書いた日)。API のバッチを書きかけてやめたのは、PR #522 を作っていたとき(2026-09 中旬) - 決めた人:45th の PM -- 決めたときの自信:記録なし +- 決定の信頼度:記録なし + - 根拠:#476 と PR #522 の本文には、決めたことと理由は書かれているが、どれだけ確かだと思っていたかは書かれていない - 出典:#476、PR #522 ## 背景 diff --git a/docs/decisions/0013-rescue-dm-sent-immediately.md b/docs/decisions/0013-rescue-dm-sent-immediately.md index 168992d7..7b1b4167 100644 --- a/docs/decisions/0013-rescue-dm-sent-immediately.md +++ b/docs/decisions/0013-rescue-dm-sent-immediately.md @@ -3,7 +3,8 @@ - 状態:採用 - 決めた日:2026-09-20(#545 の本文の「見直した点」) - 決めた人:45th の PM(メンバーが作っていた PR #546 を引き継いで決めた) -- 決めたときの自信:記録なし +- 決定の信頼度:記録なし + - 根拠:#545 と PR #546 の本文には、決めたことと理由は書かれているが、どれだけ確かだと思っていたかは書かれていない。PR #546 の本文は、実際の Slack での送信はまだ確かめていない(確かめたのはユニットテストと lint まで)と断っている - 出典:#545、PR #546 ## 背景 diff --git a/docs/decisions/0014-manual-open-in-new-tab.md b/docs/decisions/0014-manual-open-in-new-tab.md index 8ce778c4..cd9fead7 100644 --- a/docs/decisions/0014-manual-open-in-new-tab.md +++ b/docs/decisions/0014-manual-open-in-new-tab.md @@ -3,7 +3,8 @@ - 状態:採用 - 決めた日:2026-08-20(スライド版。#444)、2026-09-13(ドキュメント版も別タブにした。#509) - 決めた人:45th の PM -- 決めたときの自信:記録なし +- 決定の信頼度:記録なし + - 根拠:#444・PR #451・#509・PR #510 の本文には、決めたことと、埋め込めないことを実測した結果が書かれている。どれだけ確かだと思っていたかは書かれていない - 出典:#444、PR #451、#509、PR #510 ## 背景 From 96db957b12d877be89f0db80de52099670ca3672 Mon Sep 17 00:00:00 2001 From: taminororo <169162271+taminororo@users.noreply.github.com> Date: Wed, 30 Sep 2026 21:10:20 +0700 Subject: [PATCH 6/6] =?UTF-8?q?docs:=20ADR=200011=E3=83=BB0012=20=E3=81=AE?= =?UTF-8?q?=E6=B1=BA=E3=82=81=E3=81=9F=E6=97=A5=E3=82=92=E3=80=8C=E4=B8=8D?= =?UTF-8?q?=E6=98=8E=E3=80=8D=E3=81=A8=E3=81=97=E3=80=81=E5=88=86=E3=81=8B?= =?UTF-8?q?=E3=81=A3=E3=81=A6=E3=81=84=E3=82=8B=E6=97=A5=E4=BB=98=E3=82=92?= =?UTF-8?q?=E6=8B=AC=E5=BC=A7=E3=81=AB=E5=88=86=E3=81=91=E3=81=A6=E6=9B=B8?= =?UTF-8?q?=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CodeRabbit の指摘(決めた日に、コミットの日や設計を書いた日を書いていた)に合わせ、雛形の決まりどおりにした。 --- docs/decisions/0011-shift-notice-dm-only.md | 2 +- docs/decisions/0012-slack-id-linked-by-gas.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/decisions/0011-shift-notice-dm-only.md b/docs/decisions/0011-shift-notice-dm-only.md index ad70d6ae..eb526e96 100644 --- a/docs/decisions/0011-shift-notice-dm-only.md +++ b/docs/decisions/0011-shift-notice-dm-only.md @@ -1,7 +1,7 @@ # 0011: シフト変更の Slack 通知はチャンネルに送らず、本人への DM だけにする - 状態:採用 -- 決めた日:2026-04-12(この方針をコードに入れたコミット 75649e1 の日付) +- 決めた日:不明(2026-04-12 以前の MT。この方針をコードに入れたのは、2026-04-12 のコミット 75649e1) - 決めた人:45th の SeeFT の MT - 決定の信頼度:記録なし - 根拠:コミット 75649e1 のメッセージと差分には、決めたことと「MTの議論により」というコメントがあるが、どれだけ確かだと思っていたかは書かれていない。45th の PM の作業メモにも書かれていない。議論をした MT の資料は、まだ読めていない diff --git a/docs/decisions/0012-slack-id-linked-by-gas.md b/docs/decisions/0012-slack-id-linked-by-gas.md index 682717d8..8ce6dae1 100644 --- a/docs/decisions/0012-slack-id-linked-by-gas.md +++ b/docs/decisions/0012-slack-id-linked-by-gas.md @@ -1,7 +1,7 @@ # 0012: Slack ID の紐付けは GAS の名簿送信で行い、API に一括のバッチは作らない - 状態:採用 -- 決めた日:2026-08-27(#476 に設計を書いた日)。API のバッチを書きかけてやめたのは、PR #522 を作っていたとき(2026-09 中旬) +- 決めた日:不明(2026 年 8〜9 月ごろ。#476 に設計を書いたのは 2026-08-27、API のバッチを書きかけてやめたのは PR #522 を作っていた 2026-09 中旬) - 決めた人:45th の PM - 決定の信頼度:記録なし - 根拠:#476 と PR #522 の本文には、決めたことと理由は書かれているが、どれだけ確かだと思っていたかは書かれていない