Skip to content

factory/: 見送ったリファクタリングの提案 20 件を片付け、同じ役割の関数を 1 か所へ寄せる(#2199) - #2527

Merged
takemi-ohama merged 2 commits into
developfrom
design/issue-2199
Nov 5, 2026
Merged

takemi-ohama merged 2 commits into
developfrom
design/issue-2199

Conversation

@takemi-ohama

Copy link
Copy Markdown
Contributor

#2199 の設計文書 issues/issue-2199-design.md を組み直しました。設計の判定表は、2026-11-05 時点の develop(コミット 86436da)で確かめ直しています。スプリント lfactory3-5 の設計です。

利用者向けの変化

  • 無し

移行の手順

  • 無し

変更の要点

  • 設計の判定表を、2026-11-05 の develop(86436dace)の内容と照らして確かめ直した
  • 設計文書の長い文を分け、章を小見出しに分けた
  • 変更したのは設計文書 1 ファイルだけで、152 行を追加し、83 行を削除した

テスト

supervise.py の run で、次の 2 つのステップがどちらも exit 0 で終わりました。

ステップ 結果
用語集の照合(glossary) 設計文書の用語の宣言と用語集が揃っている
要求の照合(requirements-check) issues/issue-2199-requirements.md が #2199 の本文と一致する

モード: standard / 通した工程: 設計 → 要求と受け入れ条件 → ドキュメント再構成 → ドキュメントレビュー

🤖 Generated with Claude Code

決めたこと

issues/issue-2199-design.md

  • 決定 1: 公開のエントリポイントが Lambda のエントリポイントを読まないよう、handlers/ を handler の配線だけにする
  • 決定 2: 環境変数の読み取りの規則を 1 か所にするため、requireEnv を src/env.ts に置く
  • 決定 3: 履歴を同じトランザクションで足す規則(I20)を 1 か所で守るため、transact が履歴を受け取る
  • 決定 4: 版の競合の再試行と書き込みの失敗の読み替えを、AccountService の 2 つの関数に寄せる
  • 決定 5: 保存の契約を DynamoDB の実装から分けるため、accounts/port.ts に置き、updateAccount の引数を 1 つにまとめる
  • 決定 6: 履歴の before と after を取り違えないよう、hist を消して名前つきのオブジェクトで書く
  • 決定 7: 画面ごとのログインの確認と失敗の表示を、context.tsx の 2 つに寄せる
  • 決定 8: 席の種類の選択肢だけを 1 か所にし、select の属性は画面に残す
  • 決定 9: 既存のテストを振る舞いの基準にし、提案が求めた現状固定テストは足さない
  • 決定 10: 実装の差分を factory/ と R16 のテストに限るため、確定仕様の構成要素の表は確定仕様化で直す

takemi-ohama and others added 2 commits November 5, 2026 01:48
requireEnv の写しが 5 か所・ログインの確認が 12 画面に増えたことを反映し、
ログインの確認を画面の枠の経路 1 か所へ寄せる形、createTeam の冪等の鍵の行を
保つ transact の並び、ensureUser・createTeam も含めた writeOr の形を決める。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
内容は足さず、文の分割・表と箇条書きへの置き換え・小見出しの追加・
直訳の和語の置き換え(入口→エントリポイント、束ねる→バンドルする)だけを行った。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | codex | APPROVE

指定範囲のレビューで critical / major の修正指摘はありません。根拠: Value 3・Value 8。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | kiro | APPROVE

ドメインモデルの節と用語集の差分を確認した。コンテキストマップは順応者(Conformist)として宣言され、集約ごとの持ち主は AccountService に一意、不変条件 I1〜I6 は 1 行 1 条件で相互に矛盾せず、ドメインイベント E1〜E6 は受け手を持ち要求の番号を引き継いでいる。用語の表の 2 語(同じ役割の写し・保存の契約)は docs/glossary/glossary.json に文脈 ndf-factory で登録済みで意味も一致する。この範囲で critical / major の修正アクションは無い。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 2 | claude | APPROVE

round 2 の範囲(issues/issue-2199-design.md)を 86436da 相当のコードと照らした。requireEnv 5 か所・ログインの確認 12 画面・onFailure(err) 13 ファイル 23 行・I6 の 2 つの検索の現状値(5 行・1 行)・createTeam の冪等の鍵の行の位置・ensureUser / createTeam の条件の失敗の後の読み直しは、いずれも実装と一致する。critical / major の修正アクションは無い。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 2 | kiro | APPROVE

issue-2199-design.md の 2026-11-05 の develop(86436dace)への更新を、実コードに照らして確認した。判定表の『今は』の実測値(requireEnv 5 か所・ログインの確認 12 画面・onFailure(err) 23 行/13 ファイル・createTeam の TransactItems が『業務の項目 → 履歴 → 冪等の鍵の行』)、I6 の 2 つの検索コマンド(5 行と 1 行)、受け入れ条件 3/I5 の grep の期待値は、いずれも worktree の factory/api/src・factory/web/src で再現して一致した。R14/決定 7 のログインの確認の移設は、12 の post-login 画面がすべて今 Navigate to="/login" を持ち、App.tsx が全画面を 1 つの AppShell の layout route 下に置くため、振る舞いを変えずに 1 か所へ寄せられる(I4 で縛り、枠の一瞬描画は未確認として明記済み)。決定 3 の transact(items, history, after) の並びも実装の createTeam と一致し I2 を保つ。critical / major の修正アクションは無い。

@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | commit (なし)

対応件数: critical=0 / major=0 / minor=0(合計 0 件)
決着: 0 件 / 見送り: 0 件 / 却下: 0 件
CI: NONE

@takemi-ohama takemi-ohama added the design-approved 設計 Pull Request の承認の印 label Nov 5, 2026
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

MVV 判定(関門 1(設計の承認))

  • 判定: follow(関門を省いた。利用者が承認した MVV を事前の許可として扱う)
  • 根拠: Mission / Vision / Value 3 / Value 4 / Value 7 / Value 8 / C2 / C3 / スプリント Mission / スプリント Value 1 / スプリント Value 4(プロジェクト MVV: approved・版 5)
  • 時刻: 2026-11-05T01:59:48+00:00
  • ログ: /home/ubuntu/.local/state/ndf/mvv-gate.jsonl の 2026-11-05T01:59:48+00:00 の行

理由

  • プロジェクト Value 7(根本原因の場所で直す)に沿う。同じ役割の関数(requireEnv・ログインの確認・失敗の表示・再試行など)を、写しごとではなく共通の置き場へ 1 か所に寄せる設計になっている
  • プロジェクト Value 3(やめる・縮める)に反しない。見送った提案 20 件を『適用する』か『採らない』に決め切る。範囲の外の候補は新しく起票せず、既存の factory/api: DynamoDB の条件の失敗の判定が保存ごとに別々にあり、判定の形が揃っていない #2275・factory/api: 秘密を 1 回だけ読むキャッシュが 3 か所に別々にある #2276 を指す。現状固定テストも足さない
  • プロジェクト Value 4・Value 8 に沿う。判定表を 2026-11-05 の develop(86436dace)の grep 実測で確かめ、決定ごとに理由と採らなかった案を残している。未確認の点(画面の枠が一瞬描かれるか・インフラのバンドル)も明記している
  • 共通原則の C2(認証・認可の変更)と C3(利用者データ)に当たらない設計である。認証・認可の判定と DynamoDB のキー・属性・並びを変えないことを不変条件 I2・I4 にし、既存テストで縛る。破れた件は戻す扱いになっている。この PR で変わるのも設計文書 1 ファイルだけである
  • スプリントの Mission と Vision に反しない。Factory の内部の整理で、利用者の操作は変えない。ログインの確認を枠の経路へ寄せるので、後から足す画面にも確認が掛かる。画面にしか無い操作や、API にしか無い抜け道も作らない(スプリント Value 4)

@takemi-ohama
takemi-ohama marked this pull request as ready for review November 5, 2026 02:00
@takemi-ohama
takemi-ohama merged commit edeea4f into develop Nov 5, 2026
23 checks passed
@takemi-ohama
takemi-ohama deleted the design/issue-2199 branch November 5, 2026 02:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

design-approved 設計 Pull Request の承認の印

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant