Skip to content

feat: 워크스페이스별 VM 보유 기관 제공 - #133

Merged
yessjun merged 2 commits into
mainfrom
fix/user-detail-vm-link
Sep 17, 2026
Merged

yessjun merged 2 commits into
mainfrom
fix/user-detail-vm-link

Conversation

@yessjun

@yessjun yessjun commented Sep 17, 2026

Copy link
Copy Markdown
Member

📝 작업내용

  • 관리자 사용자 상세의 멤버십마다 그 워크스페이스에 살아 있는 VM이 어느 기관에 있는지 함께 제공(AdminMembership 신설)
  • 워크스페이스에 기관 컬럼이 없어 파생으로 구하며, 한 워크스페이스가 기관 여럿을 답할 수 있어 목록
  • 멤버십 DTO를 /me와 분리, 사용자 프로필 응답은 무변화
  • 기관 계층에 상태 변경 이력 수행자의 공개 id 미제공, 이름과 메일은 유지
  • API 명세 v0.80.0, 연산 수 불변, 마이그레이션 없음

⭐️ 검증

  • 전체 수트 1528건 통과, AdminUsersTest 7건과 ContractDriftTest 6건 포함
  • 새 테스트 둘, 멤버십이 기관을 답하는 것과 기관 계층 응답에 actorId가 없고 시스템 계층에는 있는 것
  • 생성 명세 재생성해 같은 커밋에 포함, 콘솔 타입도 같은 라운드에서 재생성

💬 리뷰 포인트

  • 파생 기준을 신청이 아니라 살아 있는 VM으로 잡은 것, 링크 대상이 VM 목록이므로 신청만 있는 워크스페이스는 어차피 빈 결과
  • 수행자에서 id만 빼고 이름과 메일을 남긴 경계, 감추는 이유가 관리 불가이지 신원 비공개가 아니라는 판단

The account directory answers for every organisation and the VM list does not,
so the detail drawer's link into that list started landing on an empty page as
soon as the directory opened. An empty page reads as "this person has no virtual
machines" when the truth is "not in your scope", and the screen had no way to
tell those apart: a workspace carries no organisation of its own, and the
membership rows carried nothing but a name, a kind and a role.

Each membership now reports the organisations it has live machines in, derived
the same way membership itself is. A workspace can answer with more than one, so
it is a list. The admin detail gets its own membership shape for this; the
holder's own profile is unchanged.

The org tier also stops receiving the public id of the administrator who changed
an account's status. Status is written by SYS_ADMIN alone, so every actor on
those rows is an account the org tier is not answered for, and the id is the
handle that reopens it. The name and address stay: hiding those accounts is a
rule about what may be managed, not a claim that the operators are anonymous,
and an administrator fielding a question needs to know who acted.
The justification said every actor on a status row is system-tier, since disable
and enable are SYS_ADMIN-only. A withdrawal is the exception: it records the
holder as its own actor, and that id is the account being read. Blanking it was
harmless but the rule as written was false, and a false rule is what the next
change extends. The test now pins the organisation's own id and a deleted
machine's exclusion, neither of which it held before.
@yessjun
yessjun merged commit efc74dc into main Sep 17, 2026
1 check passed
@yessjun
yessjun deleted the fix/user-detail-vm-link branch September 17, 2026 06:11
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