GE4 시안 ③ 어드민 탭 추가

2026-09-03 · 3장 중 3장 — admin.grid-os.ai 확장입니다. 새 화면을 만들지 않고 지금 있는 통합 어드민(§12-4 정정)에 탭·버튼을 얹습니다. A/B를 눌러 고르시고(안 누르면 권고안 그대로 채택), 맨 아래 상자를 눌러(전체선택) 복사해 대화창에 붙여 주세요.
① 로그인 화면 ② AI 연결 상태표 ← 시안 허브

D129 확장 형태 — 탭을 어떻게 늘릴까요

§12-4 정정대로 관리 화면은 새로 만들지 않고 지금의 통합 어드민(대시보드·조직·계정·피드백·커뮤니티 글·댓글·멤버·데모 분류 6탭, 실측: public/index.html:37-42)을 확장합니다. 늘리는 방식이 쟁점입니다.

D129 «팀원 커스텀 현황»·«배포 채널»을 어디에 붙일까요
A는 지금 사이드바에 탭 2개를 나란히 추가하고 기존 조직·계정 탭 행에도 버튼을 얹습니다. B는 그리다 에디션 전용 상위 탭 하나를 새로 만들어 그 안에 계정 관리·팀원 커스텀·배포 채널을 몰아넣습니다.

A · 기존 사이드바에 탭 2개 추가 권고

admin.grid-os.ai
GRID.OS 어드민
조직 · 계정
기존 화면 그대로 + 계정 행에 버튼만 늘어남

계정

이메일상태
hysong@grid-a.com활성 중지좌석 해제초대 메일

기존 6탭과 같은 급으로 나란히 붙어 «관리 화면 하나»라는 감각이 그대로입니다. 조직·계정 탭도 새 버튼(점선 테두리)만 늘어날 뿐 구조는 안 바뀝니다 — 코드도 admin.jsTABS 매핑과 renderOrg()에 항목만 추가하면 됩니다.

B · «그리다 에디션» 상위 탭 하나로 몰기

admin.grid-os.ai
GRID.OS 어드민
그리다 에디션
기존 «조직 · 계정»과 별개로 그리다 조직만 다시 보여주는 페이지

그리다(Grid.A Corp.) 계정 2명

기존 조직·계정 탭의 그리다 행과 내용이 겹칩니다.

그리다 에디션 전용 업무를 한 자리에 모아 찾기는 쉽지만, «계정 관리»가 조직·계정 탭과 그리다 서브탭에 두 번 존재하게 됩니다. 그리다 외 에디션(기업 등)이 늘면 서브탭도 에디션 수만큼 늘어나는 구조입니다.

권고 근거 — 지금 6탭 체계가 이미 «기능별 탭 나열»이라 그 문법을 깨지 않는 게 배우는 비용이 가장 적습니다. 코드도 TABS 객체에 키 2개, renderOrg()에 버튼 3개 추가로 끝나 §12-4가 예산으로 잡은 «4단계 +0.5일(콘솔 탭)»에 맞습니다.
어설픔 방지 가드 — 탭이 8개로 늘면 좁은 화면(900px 미만)에서 admin.css의 사이드바가 가로 스크롤 nav로 바뀝니다(:96-101 실측). 새 탭 2개도 이 반응형 규칙을 그대로 타야 하며, 별도 CSS를 새로 만들지 않습니다.
벤치마킹 — Slack 관리자 콘솔은 워크스페이스 설정 안에 «멤버 관리»가 기존 탭 옆에 나란히 늘어나는 구조이지, 기능이 늘 때마다 별도 상위 메뉴를 새로 파지 않습니다.
근거 — 기능표 §12-4(관리 화면은 기존 admin.grid-os.ai 확장, 항목 ①~④), 실측 admin-server/public/index.html:37-42(현재 6탭)·admin.js:75(TABS 매핑)·admin.js:140-190(renderOrg 테이블 패턴).

D130 계정 · 조직 행 버튼 — 중지 · 재개 · 좌석 해제

§12-8 «모든 에디션의 모든 계정은 원우가 중지시킬 수 있다» 요건입니다. 원우님(오너) 계정은 중지 대상에서 빠지고 «오너» 배지만 붙습니다. 아래 [중지]를 실제로 눌러 확인 팝업이 뜨는지 보실 수 있습니다.

D130 조작을 어디서 할까요
A는 표 행 안에 버튼을 바로 두는 방식(지금 어드민의 계정 표 패턴 그대로), B는 행을 클릭해야 상세 패널이 옆에 열리는 방식입니다.

A · 행 안 인라인 버튼 권고

GRID.OS 어드민

조직

조직좌석상태
그리다(Grid.A Corp.)사용 2 / 3~5 활성 정지

계정

이메일상태
wwchoi@grim-comm.com오너 중지
hysong@grid-a.com 활성 중지좌석 해제초대 메일
sikim@grid-a.com활성 중지좌석 해제초대 메일
hysong@grid-a.com 계정을 중지합니다
실행 중인 앱은 몇 분 안에 잠기고, 꺼진 기기는 다음 켤 때 잠깁니다. 그리드 파일은 그대로입니다.
중지 취소
그리다(Grid.A Corp.) 조직을 정지합니다
소속 계정 전원이 같은 규칙(몇 분 내 잠금)으로 막힙니다. 좌석·데이터는 그대로 남습니다.
정지 취소

지금 «조직·계정» 탭의 계정 표(admin.js:161-176)가 이미 행 안에 [비번 재설정]·[비활성] 버튼을 두는 구조라, 같은 자리에 [좌석 해제]·[초대 메일]만 얹으면 됩니다. 오너 행은 [중지] 버튼이 회색으로 눌리지 않게 처리됩니다.

B · 행 클릭 → 상세 패널

1) 목록 — 행을 클릭하면 2)로 바뀝니다(데모)
GRID.OS 어드민

계정

이메일상태
hysong@grid-a.com활성
sikim@grid-a.com활성

표가 짧아져 한눈에 보기는 편하지만, 클릭이 한 단계 늘고 지금 admin.js의 «표 안 즉시 액션» 문법과 달라집니다. 조직·계정처럼 자주 오가는 화면엔 왕복 비용이 더 큽니다.

권고 근거 — §12-8이 요구하는 «중지/재개·정지/재개·좌석 해제»는 이미 있는 [비활성]·[좌석 해제] 버튼과 같은 급의 행동이라, 새 상호작용 문법을 만들지 않는 A가 구현·학습 비용 둘 다 낮습니다.
어설픔 방지 가드 — 확인 팝업 문구는 반드시 §12-8의 효력 시점(몇 분 내 heartbeat 잠금·꺼진 기기는 다음 부팅·그리드 파일은 안 건드림)을 그대로 담아야 합니다. «정말 중지하시겠습니까?» 같은 일반 문구로 축약하면 원우님이 실제 효과를 오해할 수 있습니다.
벤치마킹 — Google Workspace 관리 콘솔의 «사용자 정지»는 사용자 목록 행 안 인라인 액션이며, 확인 팝업이 정지 효과(로그인 차단·데이터는 보존)를 먼저 설명한 뒤 실행을 묻습니다.
근거 — 기능표 §12-8(중지/정지/좌석 해제·효력 시점·오너 예외·즉시실효 플래그), 실측대장 B §7(admin.js:140-265 renderOrg 버튼 패턴, user-disable·org-suspend 기존 API), 실측대장 B §4(토큰에 즉시실효 플래그 없음 — 매 검증마다 재조회로 즉시성 확보).

D131 «팀원 커스텀 현황» 탭 — 역이식 검토

§11-4 결정대로 팀원별 위젯·자동화·스킬·앱 본체 diff를 보여주고, 항목마다 [인터널에 이식 검토] 버튼으로 역이식 백로그에 등재합니다. 보고가 끊기면(§11-4 «강제 방식») 바로 눈에 띄어야 합니다.

D131 팀원별로 어떻게 펼쳐 보여줄까요
A는 팀원 카드를 아코디언으로 접었다 펴는 방식, B는 항목 단위 평면 표에 팀원 필터를 다는 방식입니다.

A · 팀원별 아코디언 권고

GRID.OS 어드민
커스텀 내역 공유는 팀원이 끌 수 없습니다(코드 내용이 아니라 목록·diff·요약만 수신).
송한영 (hysong@grid-a.com)마지막 보고 3일 전
보고 해시 a1b2c3d4 · 사용자 위젯 2개 · 자동화 1개 · 스킬 0개
앱 본체 diff — 3개 파일 · +142 −18줄 · «온보딩 카드 문구 수정, 사이드바 폭 조정» · 최근 2026-09-01
인터널에 이식 검토

팀원 2~3명 규모에서는 카드를 펼쳐 그 사람의 전체 맥락(위젯·자동화·diff)을 한 번에 보는 게 더 빠릅니다. «마지막 보고 3일 전»처럼 경고색 라벨이 헤더 줄에 바로 보여 접어둔 채로도 이상 신호를 놓치지 않습니다.

B · 평면 표 + 팀원 필터

GRID.OS 어드민
커스텀 내역 공유는 팀원이 끌 수 없습니다(코드 내용이 아니라 목록·diff·요약만 수신).
필터 · 전체 팀원 ▾ (데모에서는 비활성)
팀원항목내용최근 변경
송한영
3일 전
앱 본체 diff3개 파일 · +142 −18줄09-01검토
송한영사용자 위젯2개08-29검토
김승일
12분 전
자동화3개09-03검토

항목이 많아지면(팀원이 늘거나 diff가 잦으면) 표로 스캔하기 쉽지만, «이 사람 전체 현황»을 보려면 필터를 오가야 합니다. 팀원 2명 규모에서는 표가 오히려 성글게 보입니다.

권고 근거 — 지금 발급 대상이 2명(§12-9)뿐이라 팀원 단위 카드가 표보다 읽기 쉽고, 인원이 늘어도 아코디언은 그대로 스크롤만 늘어나 구조 변경이 필요 없습니다.
어설픔 방지 가드 — «마지막 보고 시각·해시»는 §11-4의 강제 방식(보고가 끊기면 즉시 드러나게) 핵심이라, 접힌 헤더 줄에도 반드시 노출하고 임계치(예: 48시간)를 넘으면 경고색으로 바뀌어야 합니다. 펼쳐야만 보이면 그 항목 자체가 무의미해집니다.
벤치마킹 — GitHub organization의 «People» 탭에서 멤버별 활동을 펼쳐보는 아코디언형 패턴과 같은 방향입니다.
근거 — 기능표 §11-4(팀원 커스텀 현황 탭, «인터널에 이식 검토»→역이식 백로그 자동 등재, 강제 방식 3단계), §12-9(팀원 2명 hysong@grid-a.com·sikim@grid-a.com, 조직=그리다).

D132 «배포 채널» 탭 + 초대 메일

조직별 에디션·업데이트 채널·최신 버전과, 계정 발급 시 초대 메일 발송을 다룹니다. 비밀번호 값은 화면에 노출하지 않고 «발송됨»으로만 표시합니다(§12-9 발급 실습에 그대로 씁니다).

D132 채널 정보와 초대 메일을 어디에 둘까요
A는 «배포 채널» 탭을 따로 두는 방식, B는 기존 «조직 · 계정» 표에 채널·버전 열을 추가하는 방식입니다.

A · «배포 채널» 탭 별도 권고

GRID.OS 어드민

조직별 에디션 · 채널

조직에디션채널최신기기
그리다(Grid.A Corp.)그리다 에디션stablev3.1.2 (09-03)2대 보기

계정 발급

초대 메일 보내기(임시 비밀번호는 메일로만 발송)
발신 GRID.OS <no-reply@grid-os.ai>
받는이 hysong@grid-a.com
[GRID.OS] 그리다 에디션 계정이 발급되었습니다

송한영님, 그리다(Grid.A Corp.) 조직에 GRID.OS 계정이 발급되었습니다.
설치: [다운로드 링크]
임시 비밀번호: ••••••••
처음 로그인 후 반드시 비밀번호를 바꿔 주세요.

배포·채널 정보는 조직·계정과 성격이 달라(«누가»가 아니라 «어떤 버전») 별도 탭이 더 명확합니다. 체크박스를 꺼보면 미리보기가 사라져 «비밀번호를 화면에 보여주지 않는다»는 원칙을 실제로 확인하실 수 있습니다.

B · 조직·계정 탭에 열 추가

GRID.OS 어드민

조직

조직좌석상태에디션채널최신
그리다(Grid.A Corp.)사용 2/3~5활성그리다stablev3.1.2

탭을 하나 안 늘려도 되지만, 조직 표가 옆으로 계속 넓어져 좌석·상태·에디션·채널·버전이 한 줄에 몰리면 좁은 화면에서 가로 스크롤이 더 길어집니다. 기기별 설치 버전(펼치기)까지 담기엔 열이 부족합니다.

권고 근거 — 채널·버전은 «지금 무슨 빌드를 누가 쓰고 있나»를 조직 단위로 훑어보는 화면이라, 계정 CRUD 위주인 조직·계정 탭과 목적이 달라 따로 두는 게 더 읽기 쉽습니다.
어설픔 방지 가드 — 임시 비밀번호는 계정 생성 응답에 1회만 담겨 오는 값(admin.js:189-191 showPw() 패턴)이라 초대 메일 미리보기에도 실제 값을 절대 넣지 않고 자리표시(••••••••)만 씁니다. 메일 발송 성공 여부만 «발송됨» 배지로 표시합니다.
벤치마킹 — Vercel은 팀에 멤버를 초대하면 이메일로 가입 링크를 보내고 대시보드에는 «초대 발송됨» 상태만 남기지, 초대 관련 비밀 값을 화면에 다시 노출하지 않습니다.
근거 — 기능표 §12-4(항목 ③④ 배포 채널·초대 메일), §12-9(발급 실습 9/9, hysong@grid-a.com 1명 계정으로 5.5 리허설), 실측대장 B §7(admin.js:189-191 pw-box 1회 표시 패턴, /api/license/user-add 응답 password 필드).

컨펌

카드마다 A/B를 눌러 고르신 뒤(선택 안 하면 권고안 자동 채택) 아래 박스를 눌러(전체 선택) 복사해 채팅에 붙여넣어 주세요. 복사가 안 되면 박스를 눌러 드래그 복사하시거나, 말로 "D129는 B, 나머지는 권고안대로" 하셔도 같은 무게로 처리합니다.