Skip to content

スキル表示名の畳み込みグループを解除(バラす)できる導線がない(ADR-0016 D11 残課題) #496

Description

@yusuke0610

背景

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提案 → 表示名編集 → 確定」の一方向フローで、グループを解く/作り直す操作が存在しない。

やること(案)

  1. API: DELETE /skills/display-decisions(identity 指定で確定行を削除 → 完全にデフォルトへ戻す)。または confirm 契約で「group_id=null かつ表示名リセット」を許容する
  2. repo: GitHubSkillDisplayDecisionRepositorydelete_by_identity を追加
  3. UI: 確定済みグループに「解除」ボタン、または提案レビューでメンバーを分割/除外できる編集を追加
  4. スキーマ変更に伴う 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    backendバックエンドdocumentationImprovements or additions to documentationwebフロントエンド (web)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions