B-2 (#278) で実装した GET /api/tasks/{id} を tasks テーブルに created_by/updated_by 列追加 と クロステナント分離の統合 IT で本番運用可能なレベルに固める。並行して 既存 TaskAuthorizationDomainServiceTest を ADR-0005 仕様(admin bypass の正確化) に更新する。
N4 (#86) を 7 分割した B-3 スコープ:
規約準拠の前提
| 規約 / ADR |
内容 |
| 設計規約 §3.1 |
Flyway V1.0.0 直接追記運用(#248、Sprint 1 完了まで) |
| ADR-0005 |
admin bypass(全テナント横断アクセス) |
やること
1. V1.0.0_01__create_tables.sql 更新
2. TaskEntityTest の更新
TaskJpaEntity コンストラクタ + getter テストに createdBy / updatedBy を追加(canPersistTask 等)
3. TaskCrossTenantIT.java 新規(統合 IT)
@SpringBootTest + Testcontainers MySQL
- 2 テナント の tasks を seed
- API endpoint
GET /api/tasks/{id} を call、tenant 跨ぎアクセスで 404 返却を検証(Visibility 違反と同じ 404 統一)
- 設計書 §9 マルチテナント分離要件に整合
4. TaskAuthorizationDomainServiceTest 更新
既存テストの admin bypass 期待値を ADR-0005 仕様 に整理:
- SaaS Admin (
role.isAdmin() == true) は全テナント横断で canView true
- Tenant Admin はテナント内のみ true
- 一般 member は visibility / assignee に従う
- PRIVATE visibility は assignee 本人のみ true(担当者参照 test ケース追加)
実装側 TaskAuthorizationDomainService.java(line 31 if (role.isAdmin()) / line 63 || role.isAdmin())はそのまま、test 期待値のみを ADR-0005 整合に。
やらないこと
受け入れ条件
参照
B-2 (#278) で実装した
GET /api/tasks/{id}をtasksテーブルにcreated_by/updated_by列追加 と クロステナント分離の統合 IT で本番運用可能なレベルに固める。並行して 既存TaskAuthorizationDomainServiceTestを ADR-0005 仕様(admin bypass の正確化) に更新する。N4 (#86) を 7 分割した B-3 スコープ:
規約準拠の前提
やること
1.
V1.0.0_01__create_tables.sql更新tasksテーブルにcreated_by BIGINT NULL+updated_by BIGINT NULL列追加TaskJpaEntityも同 PR で同期(@Column(name = "created_by") private Long createdBy;+ 同updatedBy+@PrePersist/@PreUpdateで SecurityContext から userId 反映 or listener)tasksテーブルのみ追記2.
TaskEntityTestの更新TaskJpaEntityコンストラクタ + getter テストにcreatedBy/updatedByを追加(canPersistTask等)3.
TaskCrossTenantIT.java新規(統合 IT)@SpringBootTest+ Testcontainers MySQLGET /api/tasks/{id}を call、tenant 跨ぎアクセスで 404 返却を検証(Visibility 違反と同じ 404 統一)4.
TaskAuthorizationDomainServiceTest更新既存テストの
admin bypass期待値を ADR-0005 仕様 に整理:role.isAdmin() == true) は全テナント横断でcanViewtrue実装側
TaskAuthorizationDomainService.java(line 31if (role.isAdmin())/ line 63|| role.isAdmin())はそのまま、test 期待値のみを ADR-0005 整合に。やらないこと
usersテーブル列追加 → N8 で実施受け入れ条件
V1.0.0_01__create_tables.sqlにtasks.created_by/tasks.updated_by列追加TaskJpaEntityにcreatedBy/updatedByfield +@PrePersist/@PreUpdateで自動セットTaskEntityTestがcreatedBy/updatedBy含めて greenTaskCrossTenantITで tenant 跨ぎ 404 検証 green(Testcontainers 経由)TaskAuthorizationDomainServiceTestの admin bypass / Tenant Admin / 一般 member / PRIVATE 担当者参照 ケースが ADR-0005 整合で green./gradlew :webapi:testgreen、ApplicationModules.verify()green参照