Files
Aislo/.agent/complete_and_old/plan_dashboard_management.md
T

14 KiB
Raw Blame History

대시보드 프로젝트/사용자/회사 관리 기능 계획서

버전: 2.1
작성일: 2026-07-08
상태: 승인 대기


1. 역할 정의

1.1 SYSTEM_ADMIN (시스템 관리자)

대상: 서비스 개발사 (당신, 우리 회사 사람들)

책임:

  • 서비스 배포 및 운영
  • 자동화 설계 로직 제어
  • 타사(고객사) 트러블슈팅
  • 전체 시스템 모니터링

권한:

  • 모든 회사/프로젝트 관리 (조회, 추가, 수정, 삭제)
  • 모든 사용자 관리 (조회, 추가, 수정, 삭제)
  • 모든 사용자 역할 변경
  • 자동화 설계 로직 제어
  • 시스템 리소스 모니터링
  • ⚠️ 역할 변경은 DB 직접 수정만 가능 (UI 제공 안함)

1.2 ADMIN (고객사 관리자)

대상: 계약된 고객사의 관리자

책임:

  • 고객사 내부 사용자 관리
  • 자동화 설계 로직 제어 (계약된 범위)
  • 프로젝트 진행 관리

권한:

  • 자신 회사의 프로젝트 조회/수정
  • 자신 회사의 사용자 추가/수정/삭제
  • 사용자 역할 변경 (USER ↔ ADMIN만, SYSTEM_ADMIN 제외)
  • 자동화 설계 로직 제어 (계약된 범위)
  • 프로젝트 삭제 불가 (SYSTEM_ADMIN만)
  • 타사 데이터 접근 불가
  • 시스템 리소스 모니터링 불가

1.3 USER (일반 사용자)

대상: 고객사에 소속된 프로젝트 진행자

책임:

  • 할당된 프로젝트 작업 수행

권한:

  • 자신 회사의 프로젝트 조회/수정 (진행 데이터 입력)
  • 자신 회사의 멤버 조회
  • 자신의 프로필 정보 수정
  • 프로젝트 추가/삭제 불가
  • 사용자 관리 불가
  • 자동화 설계 로직 제어 불가

2. 권한 기반 기능 매트릭스

2.1 프로젝트 관리

기능 SYSTEM_ADMIN ADMIN USER 비고
조회 전체 회사 회사 기본 기능
추가
수정 전체 회사 회사 USER: 진행 데이터만
삭제 SYSTEM_ADMIN만

2.2 사용자 관리

기능 SYSTEM_ADMIN ADMIN USER 비고
조회 전체 회사 회사 회사 멤버 리스트
추가 가입 계정 기반 추가
수정 정보 전체 전체 자신만 프로필 정보 수정
역할 변경 DB만 USER↔ADMIN SYSTEM_ADMIN 변경 차단
삭제 회사원 마지막 ADMIN 보호

2.3 회사 관리

기능 SYSTEM_ADMIN 비고
조회 전체
추가
수정
삭제

2.4 자동화 설계 로직 제어

기능 SYSTEM_ADMIN ADMIN USER 비고
조회 전체 회사 프로젝트 기반 조회
생성/수정 회사 계약된 범위만
실행
삭제 계약된 범위만

3. 상세 기능 명세

3.1 프로젝트 관리

📝 프로젝트 수정

  • SYSTEM_ADMIN: 모든 필드 수정 가능
  • ADMIN: 자신 회사의 프로젝트만 수정
  • USER: 자신 회사의 프로젝트만 수정 (진행 관련 데이터: 좌표, 설정값 등)

프로젝트 삭제

  • SYSTEM_ADMIN: 모든 프로젝트 삭제 가능
  • ADMIN/USER: 삭제 불가
  • 경고 모달: "되돌릴 수 없습니다"
  • 감시 로깅: audit_logs 기록

3.2 사용자 관리

사용자 추가 (가입 계정 기반)

  • Flow: 가입된 사용자 리스트 표시 → 선택 → 회사에 추가
  • 권한: SYSTEM_ADMIN, ADMIN만 가능
  • 추가 후 상태: ACTIVE

✏️ 사용자 정보 수정

  • SYSTEM_ADMIN: 모든 필드 수정
  • ADMIN: 자신 회사 사용자의 모든 필드 수정
  • USER: 자신의 프로필만 수정 (이름, 직책, 부서, 연락처)

🔄 역할 변경

  • SYSTEM_ADMIN: 모든 역할 변경 가능 (DB 직접, UI 미제공)
  • ADMIN: USER ↔ ADMIN만 변경 가능
  • USER: 역할 변경 불가
  • 🚫 제약: SYSTEM_ADMIN으로 변경 시도 시 백엔드에서 차단

사용자 삭제

  • SYSTEM_ADMIN: 모든 사용자 삭제 가능
  • ADMIN: 자신 회사 사용자만 삭제 가능 (마지막 ADMIN 보호)
  • USER: 사용자 삭제 불가
  • 경고 모달: 마지막 ADMIN 삭제 방지

3.3 자동화 설계 로직 제어

📋 조회

  • SYSTEM_ADMIN: 모든 자동화 설계 로직 조회
  • ADMIN: 자신 회사의 프로젝트에 할당된 자동화 로직만 조회
  • USER: 조회 불가

생성/수정

  • SYSTEM_ADMIN: 모든 자동화 로직 생성/수정 가능
  • ADMIN: 자신 회사의 프로젝트에 할당 가능한 범위 내에서만 생성/수정
  • USER: 불가

▶️ 실행

  • SYSTEM_ADMIN: 모든 자동화 로직 실행 가능
  • ADMIN: 자신 회사의 프로젝트에 할당된 자동화 로직만 실행
  • USER: 불가

삭제

  • SYSTEM_ADMIN: 모든 자동화 로직 삭제 가능
  • ADMIN: 자신 회사에서 생성한 자동화 로직만 삭제
  • USER: 불가

3.4 테이블 및 UI 개선

프로젝트 테이블

  • 프로젝트명, 지역, 진행률, 워크플로우 단계, 수정일
  • 소유자, 상태 배지 (활성/비활성/완료)
  • 액션 버튼:
    • [수정] - SYSTEM_ADMIN, ADMIN, USER (권한별)
    • [삭제] - SYSTEM_ADMIN만

사용자 테이블

  • 이메일, 이름, 직책, 부서, 역할, 상태
  • 가입일, 마지막 로그인
  • 액션 버튼:
    • [수정] - 권한별 표시
    • [역할변경] - ADMIN (USER↔ADMIN만)
    • [삭제] - SYSTEM_ADMIN, ADMIN (회사 내만)

검색/필터

  • 프로젝트: 이름, 상태로 검색/필터
  • 사용자: 이메일, 이름으로 검색, 역할/상태로 필터

4. UI 제어 로직 (권한 기반)

4.1 버튼 표시 규칙

버튼 표시 조건
[프로젝트 수정] SYSTEM_ADMIN || (ADMIN && 회사 일치) || (USER && 회사 일치)
[프로젝트 삭제] SYSTEM_ADMIN
[사용자 추가] SYSTEM_ADMIN || ADMIN
[사용자 수정] SYSTEM_ADMIN || (ADMIN && 회사 일치) || (USER && 자신)
[역할 변경] (ADMIN && 회사 일치 && 대상 ≠ SYSTEM_ADMIN)
[사용자 삭제] SYSTEM_ADMIN || (ADMIN && 회사 일치 && 마지막 ADMIN 아님)
[자동화 로직 생성/수정] SYSTEM_ADMIN || ADMIN
[자동화 로직 실행] SYSTEM_ADMIN || ADMIN
[자동화 로직 삭제] SYSTEM_ADMIN || (ADMIN && 소유자)

4.2 입력 필드 비활성화 규칙

프로젝트 수정 폼:

  • SYSTEM_ADMIN: 모든 필드 활성화
  • ADMIN: 모든 필드 활성화
  • USER: 진행 관련 필드만 활성화 (예: 좌표, 설정값, 진행도)

사용자 수정 폼:

  • SYSTEM_ADMIN: 모든 필드 활성화
  • ADMIN: 모든 필드 활성화
  • USER (자신): 이름, 직책, 부서, 연락처만 활성화

5. 필요한 API (백엔드)

5.1 프로젝트 API

메서드 엔드포인트 권한 검증
PUT /api/projects/{id} SYSTEM_ADMIN || (ADMIN && 회사) || (USER && 회사)
DELETE /api/projects/{id} SYSTEM_ADMIN

5.2 사용자 API

메서드 엔드포인트 권한 검증
POST /api/companies/{cid}/users 가입 계정을 회사에 추가 (SYSTEM_ADMIN || ADMIN)
PUT /api/users/{id} SYSTEM_ADMIN || (ADMIN && 회사) || (USER && 자신)
PATCH /api/users/{id}/role ADMIN: USERADMIN만, SYSTEM_ADMIN 변경 차단
DELETE /api/companies/{cid}/users/{uid} SYSTEM_ADMIN || (ADMIN && 회사 && 마지막 ADMIN 아님)
GET /api/companies/{cid}/users SYSTEM_ADMIN || (ADMIN && 회사) || (USER && 회사)
GET /api/users?role=unused 가입했으나 회사 미배정 사용자 목록 (ADMIN 참조용)

5.3 자동화 설계 로직 API

메서드 엔드포인트 권한 검증
GET /api/projects/{pid}/automations SYSTEM_ADMIN || (ADMIN && 회사) || (USER && 회사)
POST /api/projects/{pid}/automations SYSTEM_ADMIN || (ADMIN && 회사)
PUT /api/automations/{aid} SYSTEM_ADMIN || (ADMIN && 소유 회사)
DELETE /api/automations/{aid} SYSTEM_ADMIN || (ADMIN && 소유 회사)
POST /api/automations/{aid}/execute SYSTEM_ADMIN || (ADMIN && 소유 회사)

6. 구현 순서 (우선순위)

우선순위 항목 복잡도 중요도 설명
1 프로젝트 수정 (USER 포함) 중간 높음 프로젝트 진행 필수
1 사용자 추가 (가입 계정 기반) 높음 높음 회사 관리 필수
1 역할 변경 (ADMIN: USERADMIN, SYSTEM_ADMIN 차단) 높음 높음 권한 제어 핵심
2 사용자 삭제 중간 높음 기본 CRUD
2 프로젝트 삭제 (SYSTEM_ADMIN만) 중간 중간 시스템 관리 기능
2 자동화 설계 로직 제어 (조회/생성/삭제) 높음 높음 ADMIN 핵심 기능
3 검색/필터 낮음 중간 사용성 개선
3 정렬 기능 낮음 낮음 사용성 개선

7. 보안 및 제약사항

7.1 백엔드 권한 검증 필수

  • 모든 수정/삭제/역할변경 API에서 백엔드 권한 재검증 필수
  • 클라이언트 UI는 참고만 하고, 서버에서 최종 판단
  • ADMINSYSTEM_ADMIN으로 변경 시도 시 차단

7.2 감시 로깅

  • 프로젝트 삭제: audit_logs 기록
  • 사용자 역할 변경: audit_logs 기록
  • 사용자 삭제: audit_logs 기록
  • 자동화 로직 삭제: audit_logs 기록

7.3 보호 조건

  • 마지막 ADMIN 삭제 방지: 회사당 최소 1명 ADMIN 유지
  • SYSTEM_ADMIN 역할 변경: DB 직접 수정만 허용 (UI 제공 안함)
  • ADMIN의 자동화 로직 접근: 자신 회사의 프로젝트에만 제한
  • 회사 간 데이터 격리: ADMIN이 타사 데이터 접근 불가

8. 다국어 문구 추가 (ui_template_locale.ts)

다음 키를 ui_template_locale.ts에 추가:

// 프로젝트 관리
B01_Dashboard_EditProject: ["프로젝트 수정", "Edit Project"],
B01_Dashboard_DeleteProject: ["프로젝트 삭제", "Delete Project"],

// 사용자 관리
B01_Dashboard_AddUser: ["사용자 추가", "Add User"],
B01_Dashboard_EditUser: ["사용자 수정", "Edit User"],
B01_Dashboard_DeleteUser: ["사용자 삭제", "Delete User"],
B01_Dashboard_ChangeRole: ["역할 변경", "Change Role"],
B01_Dashboard_SelectAvailableUsers: ["사용 가능한 사용자 선택", "Select Available Users"],

// 자동화 로직
B01_Dashboard_AutomationLogic: ["자동화 설계 로직", "Automation Logic"],
B01_Dashboard_CreateAutomation: ["자동화 생성", "Create Automation"],
B01_Dashboard_EditAutomation: ["자동화 수정", "Edit Automation"],
B01_Dashboard_DeleteAutomation: ["자동화 삭제", "Delete Automation"],
B01_Dashboard_ExecuteAutomation: ["자동화 실행", "Execute Automation"],

// 확인 메시지
B01_Dashboard_Confirm_DeleteProject: ["프로젝트를 삭제하시겠습니까? 되돌릴 수 없습니다.", "Delete this project? This cannot be undone."],
B01_Dashboard_Confirm_DeleteUser: ["사용자를 삭제하시겠습니까?", "Delete this user?"],
B01_Dashboard_Confirm_LastAdmin: ["회사의 유일한 관리자는 삭제할 수 없습니다.", "Cannot delete the last admin of the company."],
B01_Dashboard_CannotChangeToSystemAdmin: ["시스템 관리자로 변경할 수 없습니다.", "Cannot change role to System Admin."],

9. 구현 체크리스트

UI 컴포넌트

  • 프로젝트 수정 모달 (openEditProjectModal)
  • 프로젝트 삭제 확인 모달 (openDeleteProjectModal)
  • 사용자 추가 모달 (openAddUserModal - 가입 계정 목록)
  • 사용자 수정 모달 (openEditUserModal)
  • 사용자 역할 변경 모달 (openChangeRoleModal)
  • 사용자 삭제 확인 모달 (openDeleteUserModal)
  • 자동화 로직 생성/수정 모달 (openAutomationModal)
  • 자동화 로직 삭제 확인 모달 (openDeleteAutomationModal)

권한 검증 헬퍼

  • canEditProject(user, project) - 프로젝트 수정 권한 확인
  • canDeleteProject(user) - 프로젝트 삭제 권한 확인 (SYSTEM_ADMIN만)
  • canAddUser(user) - 사용자 추가 권한 확인
  • canChangeRole(user, targetUser) - 역할 변경 권한 확인
  • canDeleteUser(user, targetUser) - 사용자 삭제 권한 확인
  • canManageAutomation(user, automation) - 자동화 로직 제어 권한 확인
  • isLastAdmin(user, company) - 회사의 마지막 ADMIN 확인

API 구현 (백엔드)

  • 프로젝트 수정 API - 권한 검증
  • 프로젝트 삭제 API - SYSTEM_ADMIN만 허용
  • 사용자 추가 API - 가입 계정 기반
  • 사용자 정보 수정 API - 권한별 필드 제한
  • 사용자 역할 변경 API - SYSTEM_ADMIN 변경 차단
  • 사용자 삭제 API - 마지막 ADMIN 보호
  • 자동화 로직 조회/생성/수정/삭제 API - 권한 검증

테스트 시나리오

  • SYSTEM_ADMIN: 모든 기능 가능 확인
  • ADMIN: 회사 내 기능만 가능 확인
  • ADMIN: SYSTEM_ADMIN으로 변경 시도 → 차단 확인
  • USER: 프로젝트 수정만 가능 확인
  • USER: 사용자 관리 불가 확인
  • 마지막 ADMIN 삭제 시도 → 차단 확인

10. 비고

  • 코드 작업: 다른 AI 담당
  • 계획서 위치: .agent/plan_dashboard_management.md
  • 참고 자료:
    • .agent/structure.md - 폴더 구조
    • .agent/frontend.md - UI 가이드라인
    • .agent/backend.md - 백엔드 명세