Files
Aislo/docs/wiki/pages/B01_Dashboard/B01_backend.md
T
eomsangdonandClaude Opus 5 eb30b774f8 chore(docs): docs 폴더 git 추적 전환 · PLAN·OWNERS 최상위 이관
- `docs/` 를 .gitignore 에서 빼 git 추적 대상으로 전환 (위키·완료 이력·검증 기록)
- `docs/raw/PLAN.md` · `docs/raw/OWNERS.md` 를 저장소 최상위로 이동 후 .gitignore 에 등록
  — 창끼리 공유하되 저장소에는 안 올리는 장부
- 살아 있는 경로 참조 7개 파일 정정 (아카이브 107건은 그때 사실이라 그대로 둠)
- graphify 날짜별 산출물(`docs/wiki/graphify-out/20*/`) 제외 — `graphify update` 가 다시 만듦

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 18:19:07 +09:00

5.3 KiB

type, status, page_id, related_pages, last_updated, source
type status page_id related_pages last_updated source
page-backend stable B01_Dashboard
B01_Dashboard/B01_frontend
B01_Dashboard/B01_api
B01_Dashboard/B01_db
B01_Dashboard/B01_dependencies
auth_rbac
architecture/project_map
architecture/workflow_data_flow
2026-08-08 docs/raw/verification/2026-08-08_verify_project_delete_hard.md

B01_Dashboard — Backend

세분화 백엔드 위키 명세

  • [[B01_Dashboard/backend/B01_Dashboard_Router]]: FastAPI 대시보드 API 엔드포인트 명세
  • B01_Dashboard_Repository.py: Raw SQL 회사, 사용자, 프로젝트 CRUD
  • B01_Dashboard_Schema.py: Pydantic 요청/응답 검증 모델
  • common_util_project_delete.py: 프로젝트 하드 삭제 전용 분리 모듈 (700줄 제한 준수)

라우터 권한 헬퍼

항목 위치(상대 경로) 역할
require_company_admin() B01_Dashboard_Router.py ADMIN 또는 SYSTEM_ADMIN 의존성 검사
_require_company_id() B01_Dashboard_Router.py 세션 회사 ID 필수 검사
_same_company() B01_Dashboard_Router.py 요청자와 대상의 회사 일치 검사
_can_edit_project() B01_Dashboard_Router.py 역할·회사 기준 프로젝트 수정 검사
_can_manage_automation() B01_Dashboard_Router.py 자동화 관리 권한 검사
_can_edit_user() B01_Dashboard_Router.py 사용자 수정 범위 검사

상세 권한 규칙은 auth_rbac에서 1차 정의한다.

저장소 및 삭제 함수

항목 위치 역할
get_dashboard_me() / update_user_profile() B01_Dashboard_Repository.py:47,65 내 정보 조회(auth_expires_at 대신 last_email_verified_at + 90일로 만료일 동적 계산 표시)·수정
get_workflow_states_for_projects() B01_Dashboard_Repository.py:83 여러 프로젝트의 workflow 상태 배치 조회
list_user_projects() / list_company_projects() / list_all_projects() B01_Dashboard_Repository.py:144,165,188 역할 범위별 프로젝트 목록 조회
get_project() / update_project() / soft_delete_project() B01_Dashboard_Repository.py:210,222,253 프로젝트 조회·수정·소프트 삭제
hard_delete_project() common_util/common_util_project_delete.py:18 프로젝트 DB 삭제(ON DELETE CASCADE 연쇄) 및 영구저장소 디스크 통삭제
get_user_company() / search_companies() B01_Dashboard_Repository.py:273,293 소속 회사와 회사 검색
create_company() / create_system_company() B01_Dashboard_Repository.py:307,347 사용자·시스템 관리자 회사 생성
join_company() B01_Dashboard_Repository.py:378 회사 가입 신청과 사용자 상태 전이
list_company_members() / add_company_member() / remove_company_member() B01_Dashboard_Repository.py:401,416,439 회사 팀원 관리
list_join_requests() / process_join_request() B01_Dashboard_Repository.py:453,471 가입 신청 조회·승인·거절
list_all_companies() / list_all_users() B01_Dashboard_Repository.py:507,522 시스템 관리자 전체 목록
change_user_role() / get_user_admin_target() / update_admin_user() B01_Dashboard_Repository.py:538,547,562 사용자 역할·관리정보 변경
count_company_admins() / assign_user_company() B01_Dashboard_Repository.py:584,596 마지막 관리자 보호와 회사 배정
list_audit_logs() / get_system_resources() B01_Dashboard_Repository.py:609,624 감사 로그와 리소스 통계 조회
list_project_automations() / create_project_automation() B01_Dashboard_Repository.py:682,696 자동화 목록·생성
get_project_automation() / update_project_automation() B01_Dashboard_Repository.py:722,735 자동화 단건 조회·수정
delete_project_automation() / mark_project_automation_executed() B01_Dashboard_Repository.py:758,779 자동화 삭제·실행시각 기록

요청 스키마

항목 위치 역할
UpdateUserRequest B01_Dashboard_Schema.py:6 내 정보 수정 검증
CreateCompanyRequest B01_Dashboard_Schema.py:13 회사 생성 검증
JoinCompanyRequest / AddMemberRequest B01_Dashboard_Schema.py:20,24 회사 가입·팀원 추가 검증
ProcessJoinRequest / ChangeUserRoleRequest B01_Dashboard_Schema.py:28,33 가입 처리·역할 변경 검증
AssignCompanyRequest / UpdateProjectRequest B01_Dashboard_Schema.py:37,41 회사 배정·프로젝트 수정 검증
AdminUpdateUserRequest / AutomationRequest B01_Dashboard_Schema.py:51,57 관리자 사용자 수정·자동화 검증

기술부채

항목 위치 역할
레거시 상태 추론 B01_Dashboard_Repository.py:20 _stage_from_status()project_workflow_stages 미조회 시 보조값 생성
700줄 초과 B01_Dashboard_Repository.py:1 790줄로 프로젝트 단일 파일 제한 초과; 도메인별 저장소 분할 검토 필요
물리적 파일 하드 삭제 모듈 분산 common_util_project_delete.py 700줄 한계 준수를 위해 신규 파일 삭제 모듈은 레포지토리 외부에 위치