背景
ADR-0016 D11 で、検出スキルの表示名・粒度の畳み込み(例: @aws-sdk/client-eventbridge + aws_cloudwatch_event_rule → 「Amazon EventBridge」に N:1 グルーピング)を human-in-the-loop で確定・永続化できるようになった(#476)。確定は独立 Layer 3 テーブル github_skill_display_decisions に保存され、再連携の洗い替えにも耐える。
一方で いったん折りたたんだグループを再度「バラす」(グループ解除 / 確定リセット)導線が無いことが判明した。
現状(できること / できないこと)
| 手段 |
グループ解除 |
備考 |
| UI(画面) |
❌ できない |
提案パネルは表示名テキストの編集のみ。メンバーの分割・除外・グループ再編の操作が無い。過去の確定を編集する導線も無い |
PUT /skills/display-decisions |
△ 部分的 |
対象 canonical を group_id: null で再送すれば upsert 上書きで畳み込みは解ける(1:1 に戻る) |
| 確定レコードの削除 |
❌ 手段なし |
DELETE エンドポイント・repo の delete メソッドとも未実装。display_name は必須(min_length=1)なので確定行は残り続け、機械デフォルト(Linguist display_name / canonical)へ完全リセットできない |
原因
- confirm は
upsert_many(既存上書き / 無ければ挿入)で 削除しない設計(repositories/skill.py)。
- 表示名解決順が「確定値 > 機械 display_name > canonical」のため、確定行が残る限り確定表示名が優先される。
- UI は「AI提案 → 表示名編集 → 確定」の一方向フローで、グループを解く/作り直す操作が存在しない。
やること(案)
- API:
DELETE /skills/display-decisions(identity 指定で確定行を削除 → 完全にデフォルトへ戻す)。または confirm 契約で「group_id=null かつ表示名リセット」を許容する
- repo:
GitHubSkillDisplayDecisionRepository に delete_by_identity を追加
- UI: 確定済みグループに「解除」ボタン、または提案レビューでメンバーを分割/除外できる編集を追加
- スキーマ変更に伴う
make codegen-types 再生成
参考
- ADR-0016 D11(
docs/adr/0016-github-skill-inference.md)— D11 のスコープ外(残課題)に本件を追記するのが望ましい
- 実装:
backend/app/routers/github_link/endpoints.py / backend/app/repositories/skill.py / web/src/components/github-link/SkillDisplaySection.tsx / web/src/hooks/useGitHubSkills.ts
背景
ADR-0016 D11 で、検出スキルの表示名・粒度の畳み込み(例:
@aws-sdk/client-eventbridge+aws_cloudwatch_event_rule→ 「Amazon EventBridge」に N:1 グルーピング)を human-in-the-loop で確定・永続化できるようになった(#476)。確定は独立 Layer 3 テーブルgithub_skill_display_decisionsに保存され、再連携の洗い替えにも耐える。一方で いったん折りたたんだグループを再度「バラす」(グループ解除 / 確定リセット)導線が無いことが判明した。
現状(できること / できないこと)
PUT /skills/display-decisionsgroup_id: nullで再送すれば upsert 上書きで畳み込みは解ける(1:1 に戻る)display_nameは必須(min_length=1)なので確定行は残り続け、機械デフォルト(Linguist display_name / canonical)へ完全リセットできない原因
upsert_many(既存上書き / 無ければ挿入)で 削除しない設計(repositories/skill.py)。やること(案)
DELETE /skills/display-decisions(identity 指定で確定行を削除 → 完全にデフォルトへ戻す)。または confirm 契約で「group_id=null かつ表示名リセット」を許容するGitHubSkillDisplayDecisionRepositoryにdelete_by_identityを追加make codegen-types再生成参考
docs/adr/0016-github-skill-inference.md)— D11 のスコープ外(残課題)に本件を追記するのが望ましいbackend/app/routers/github_link/endpoints.py/backend/app/repositories/skill.py/web/src/components/github-link/SkillDisplaySection.tsx/web/src/hooks/useGitHubSkills.ts