Skip to content

feat(ui): name next action on plural affiliation chips (v0.77.0) - #192

Open
seonghobae wants to merge 1 commit into
mainfrom
feat/related-node-plural-next-action
Open

feat(ui): name next action on plural affiliation chips (v0.77.0)#192
seonghobae wants to merge 1 commit into
mainfrom
feat/related-node-plural-next-action

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Buyer impact

After make seed, walk from Ada West. The Priya chip says Priya Nair, multiple organizations (Counterparty). That is not an invented Northridge Grid primary, and it is not a side-only chip that looks like Priya has no organization. The related panel then names the next action: read every organization in the Keyman list above (or extract Keymen if that list is empty), then click the chip to continue the walk.

Walk from Demo Corp and you see Ada West, Demo Corp (Our side) and Demo Corp (Company). Post chips show the title only.

#92 review fix

Cursor requested the missing-vs-plural signal on #92 (15de5d4 is identity-only). This head is that signal plus the on-panel next action.

  • Unique catalog identity displays entity_name; aliases collapse; distinct multiples stay affiliation_ambiguous.
  • A stale payload that sends both a name and affiliation_ambiguous still shows the plural signal.
  • Identity-rule unit tests live in tests/test_related_node_affiliation_ambiguity.py (no _FakeConnection in backend/tests/). Live-stack assertions stay in backend/tests/test_api.py and self-skip without make up.

Prefer this over

This PR does not rewrite AGENTS.md and does not steal ADR-0015 or 0012+ migration numbers from #74. Do not merge the #150/#162 stack before #74.

Test plan

  • uv run python -m pytest tests/test_related_node_affiliation_ambiguity.py tests/test_knowledge_graph.py tests/test_adaptive_orchestration_defaults.py tests/test_ontology.py — 34 passed
  • cd frontend && pnpm run lint && pnpm run test && pnpm run build — oxlint clean, 53 passed, production build ok
  • Required PR checks

Synthetic fixtures only. person_affiliation remains N:N with no primary column and no interval columns.

Summary by CodeRabbit

  • 새 기능

    • 관련 노드에 사람의 측면·소속 정보와 조직의 수준 라벨을 표시합니다.
    • 복수 소속은 “multiple organizations”로 안내하며, 후속 탐색 경로를 제공합니다.
    • 게시물 노드는 제목만 표시하고, 사람·조직·게시물 칩에서 바로 탐색할 수 있습니다.
    • 관련 노드 칩의 접근성 이름과 시각적 스타일을 개선했습니다.
  • 문서

    • 관련 노드 표시 규칙, 소속 처리 기준 및 참고 자료를 추가했습니다.
  • 버그 수정

    • 중복 조직 별칭과 대소문자 차이로 인한 잘못된 소속 표시를 통합했습니다.

Related-node chips now distinguish a unique org, a known-plural set,
and a missing affiliation. After make seed, walking from Ada West
shows Priya Nair, multiple organizations (Counterparty) and tells
the operator to read the Keyman list before continuing the walk.
The chip never invents a Northridge Grid primary.

Identity-rule tests live under tests/ so backend/tests stays
live-stack only. No AGENTS.md rewrite. No new ADR-0015 number.
@cursor

cursor Bot commented Aug 16, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@coderabbitai

coderabbitai Bot commented Aug 16, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 17c04634-8487-4446-a8e9-d03d234455b6

📥 Commits

Reviewing files that changed from the base of the PR and between c93d449 and bdae447.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (21)
  • ARCHITECTURE.md
  • CHANGELOG.md
  • backend/app/knowledge_graph.py
  • backend/tests/test_api.py
  • docs/adr/0014-related-node-business-captions.md
  • docs/doctoring/RELATED_NODE_AFFILIATION_REFERENCES.md
  • docs/lineage-bi-research-notes.md
  • frontend/package.json
  • frontend/src/App.css
  • frontend/src/App.test.tsx
  • frontend/src/App.tsx
  • frontend/src/RelatedNodeChip.stories.tsx
  • frontend/src/RelatedNodeChip.test.tsx
  • frontend/src/RelatedNodeChip.tsx
  • frontend/src/api.ts
  • frontend/src/relatedNodeCaption.test.ts
  • frontend/src/relatedNodeCaption.ts
  • frontend/src/relatedNodeTokens.css
  • lineageweave/__init__.py
  • pyproject.toml
  • tests/test_related_node_affiliation_ambiguity.py

Included review availability: Your plan includes up to 1 review per rolling hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

관련 노드가 온톨로지 유형 대신 측면, 소속, 조직 수준, 게시물 제목을 표시합니다. 백엔드는 소속 모호성을 집계합니다. 프론트엔드는 접근성 이름과 노드별 탐색 동작을 제공합니다.

Changes

관련 노드 업무 문맥

Layer / File(s) Summary
소속 집계와 노드 hydration
backend/app/knowledge_graph.py, backend/tests/test_api.py, tests/test_related_node_affiliation_ambiguity.py
소속을 카탈로그 ID와 정규화된 이름으로 병합합니다. 단일 조직만 표시명을 제공하고, 복수 조직은 affiliation_ambiguous로 반환합니다. 사람 측면과 기업 수준 라벨도 반환합니다.
캡션과 칩 계약
frontend/src/api.ts, frontend/src/relatedNodeCaption.ts, frontend/src/relatedNodeCaption.test.ts, frontend/src/RelatedNodeChip.tsx, frontend/src/RelatedNodeChip.test.tsx, frontend/src/relatedNodeTokens.css
사람, 기업, 게시물별 캡션과 접근성 이름을 추가합니다. RelatedNodeChip이 선택 콜백을 실행합니다. 관련 스타일과 단위 테스트를 추가합니다.
Keyman 패널 통합
frontend/src/App.tsx, frontend/src/App.css, frontend/src/App.test.tsx, frontend/src/RelatedNodeChip.stories.tsx, frontend/package.json
Keyman 관련 노드를 RelatedNodeChip으로 렌더링합니다. 게시물 열기와 사람·기업 탐색을 연결합니다. 복수 소속 안내와 Storybook 상태를 추가합니다.
문서와 릴리스 정리
ARCHITECTURE.md, docs/adr/0014-related-node-business-captions.md, docs/doctoring/RELATED_NODE_AFFILIATION_REFERENCES.md, docs/lineage-bi-research-notes.md, CHANGELOG.md, lineageweave/__init__.py, pyproject.toml
관련 노드 표시 규칙과 소속 처리 지침을 문서화합니다. 변경 내역과 프로젝트 버전을 0.77.0으로 갱신합니다.

Estimated code review effort: 4 (Complex) | ~45 minutes

Merge Risk: 🟡 Moderate · up to bdae4

This change improves plural affiliation-chip labeling and follow-up guidance, but the required PR checks are still incomplete, so the change is not ready to merge until those checks pass.

Sequence Diagram(s)

sequenceDiagram
  participant Keyman 패널
  participant knowledge_graph.py
  participant App.tsx
  participant RelatedNodeChip
  Keyman 패널->>knowledge_graph.py: 관련 노드와 소속 정보 조회
  knowledge_graph.py-->>App.tsx: 측면·소속·조직 수준 필드 반환
  App.tsx->>RelatedNodeChip: 노드와 동작 전달
  RelatedNodeChip-->>App.tsx: 선택 노드 반환
  App.tsx-->>Keyman 패널: 게시물 열기 또는 사람·기업 탐색
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 65.22% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 복수 소속 칩의 다음 행동 안내라는 주요 변경 사항을 정확하고 간결하게 설명합니다.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/related-node-plural-next-action

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Reviewed against #92 / #123 / #181. This is the preferred main-line chip landing.

  • Catalog-id + casefold collapse; Priya is multiple organizations, never a guessed primary.
  • Panel names the next action (Keyman list or Extract Keymen).
  • AccName contains the visible caption (WCAG 2.5.3).
  • Unit tests live in tests/, not a backend/tests/ FakeConnection.
  • Story files are inventory only; this slice does not add Storybook.

No product defect found. Independent last-push approval still required. Do not merge #92 or #181 instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant