Files
Aislo/docs/raw/plans/2026-10-28_plan_572-573.md
T

6.2 KiB

PLAN 572573 이관 (2026-10-28 · 요구 400405)

572. 프로젝트마다 따로 동작 (요구 400~403 · 405-3)

  • 사용자 확정: 모든 값에 프로젝트 ID · 지금 프로젝트 = 탭마다 · 다른 프로젝트는 다른 탭으로 열어도 됨(화면 수 제한 없음 · 무거운 일감 대기열은 나중) · 떠날 때 묻기([취소 · 폐기 · 저장] 한 벌) · 떠날 때 그 프로젝트 자료 비움(3D 보관함 포함).
  • 정함(브레인): 근거 docs/raw/요구_1025/_분석_401_프로젝트_따로.md 5장 · 탭 프로젝트 = 탭 세션 칸 먼저 · 다른 프로젝트에 들어갈 때 화면 새로 엶(모듈 메모리 통째 비움) · 프로젝트 번호 붙은 화면 기억 칸(localStorage)은 남김 · 시험은 한 탭에서 흉내(ORCA 탭 하나).
  • 572-1 공용(b_project_switch.ts currentProjectId · setCurrentProject · leaveProject · guardProjectLeave · 들 때 새로 엶 · b_asset_cache.ts purgeProject · b_page_state.ts 등록표 D02 · E · router.ts · 가드 helper {dirty, save}) — 새 시험 401.
    • 검증완료 — 시험 401 6 · 고친 모듈 시험 120 파일 839 통과 · typecheck 0 · ORCA 화면 확인은 572-4 에서 한 번
    • 이음(572-1 꼴): b_project_switch.ts — currentProjectId(): string(render 때 한 번 잡아 누를 때도 그 값) · setCurrentProject(id)(새 등록 직후 · 들어감 비움은 goToWorkflowStage) · guardProjectLeave(root, { dirty: () => boolean, save: () => Promise<unknown>(false · 던짐 = 머묾), discard?, message? }) 페이지 세울 때 한 번(라우터 물음 · 탭 닫기 함께) · D · E = mountGroupStep(root, route, { mainContent, leftPanel, dirty, save, discard?, message? })(옛 beforeLeave 는 옮긴 뒤 지움) · 등록표 d02-points · e02-ground · e03-prob · e04-settings · e05-report · e06-rock · e07-settings(draft · project · 옛 키 한 번 옮김) · resources/tester/test_401_project_isolation.py PENDING 에서 고친 자기 파일을 뺌.
  • 572-2 B 페이지 가드(B02 · B03 · B04 · B07 · B08 · B09) · B06 흙막이 열쇠에 프로젝트 · B04 유입 캐시 상한 4 — 시험 560_4 넓힘.
    • 이음(sub2) — B 페이지가 b_project_switch.ts 의 currentProjectId() · setCurrentProject(id) · guardProjectLeave(root, { dirty, save, discard? })(분석 401 4장 꼴) 를 부름 · 이름 · 꼴이 다르면 572-1 에 맞춤.
    • 검증완료 — 고친 대상 시험 345 통과 · typecheck 0 · ORCA 검증_sub2 B08 · B09 고침 → 대시보드 = [취소 · 폐기 · 저장] · 취소 머묾 · 폐기 초안 0 · 저장 80 뒤 이동 · 고침 없음 물음 0 · 연암 90 되돌림 · B06 흙막이 두 프로젝트 = Node 시험(다른 프로젝트 = 새로 엶이라 화면 대조 불가).
  • 572-3 D · E 페이지 가드(D04 · E03 · E05 · E06 새로 · D02 · D03 · E02 말없이 저장 → 셋 물음) · 세션 직접 → 등록표 — 시험.
    • 검증완료 — 시험 21 통과 · typecheck 0 · ORCA(검증_sub3_D · _E) D03 연도 고침 → [>] 셋 물음 · [취소] 머묾 · [폐기] D04 · 캐시 0 · 서버 그대로 / E06 25° → [저장] 서버 25 → 20 되돌림 / E03 별 저장 중 떠남 → 물음 → [저장] 넘어감 → 별 · 보고서 되돌림 / 다른 탭 흉내(localStorage = D) 뒤 E05 요청 전부 E · [취소] 뒤 [>] 다시 물음(sub1 6d7657aeb 받은 뒤) · 검증 대기
    • 이음(sub3 ← 572-1): mountGroupStep(root, route, {dirty, save, discard}) · currentProjectId() · 등록표 이름 d02-points · e02-ground · e03-prob · e04-settings · e05-report · e06-rock · e07-settings 를 씀 · E03 고침 = 대표 단면 저장 진행 중(별 = 바로 저장) · E04 · E07 = 계산 조건 캐시뿐 → 가드 없음.
  • 572-4 main.ts 떠남 = 가드 뒤 leaveProject(572-2 · 572-3 합친 뒤) — ORCA 한 탭 흉내 · B05 고침 → 집 → 셋 물음.
    • 검증완료 — 시험 893 통과 · typecheck 0 · ORCA B05 고침 → 대시보드 셋 물음: [취소] 머묾 · [>] 살아 있음 / [폐기] 세션 0 · 보관함 0 / [저장] 서버 [40] · 세션 0 · 보관함 0(4 s 뒤) · 다른 프로젝트 새로 엶 · 탭 흉내 D 그대로 · 추가 측점 [] 로 되돌림

573. 검증 프로젝트 = 창마다 그룹당 하나 (요구 404 · 405)

  • 사용자 확정: 창(워크트리)마다 B · D · E 하나씩(최대 셋) · 검증 프로젝트는 브레인이 한 원본을 복사해 만듦 · 지움 후보는 고정 뒤 확인하고 지움 · OWNERS.md 연결 정보 브레인이 갱신.
  • 정함(브레인): 근거 _분석_404_검증_프로젝트_목록.md · 원본 D = 87d47800 · E = 088e173d(→ 둘 다 「가이드_」 이름으로 가이드 전용) · B 가이드 = 1a988dd2 → 가이드_ · 대상 = 랩탑 메인 · sub1~8 · 이름 「검증_<창>D」 · 「검증<창>_E」 · 지시 글 공통 줄 = 새로 만들기 금지 · 표의 자기 것만.
  • 573-1 복제 도구 D · E 갈래(db_management/tools_clone_project.py · common_util_project_copy.py — plan_networks · plan_route_pieces · plan_route_years · assignees · E 파일 · 단계 행) — 임시 시험.
    • 이음: tools_clone_project.py <원본 UUID> "<새 이름>" — 종류(B · D · E) 자동 · <원본 UUID> --dry-run = 종류 · 표마다 행 수 · 폴더 크기 · 업체 지정의 이은 임도(linked_project_id)는 복제본에서 비움
    • 검증완료 — 시험 573_1 2 · 532_1 2 통과 · dry-run D(87d47800) 표 9 · 조각 4 · 연도 3 · 업체 4 · 70.9 MB / E(088e173d) 표 3 · 단계 6 · 910.8 MB · 임시 복제 둘을 5179 에서 열어 D03 본선 1046.7 m · 갈래 295.6 m · 조각 4 · E05 보고서 시트 11 보임 → hard_delete 로 지움 · 원본 행 수 그대로
  • 573-2 브레인 복제 · 이름 바꿈 · OWNERS.md 표 갱신.
    • 검증완료 — 복제 18(랩탑메인 · sub1~8 × D · E) · 가이드_ 셋 이름 · OWNERS.md 표 D · E 칸
  • 573-3 옛 검증 D · E · 표 밖 B(검증_브레인232 · 검증_sub2_D 2026 둘) · 고아 폴더 지움(hard_delete_project · 목록 확인 뒤).
    • 검증완료 — 14 개 hard_delete True · 빈 칸 369 → 375 GB · 고아 폴더 storage/3/15/d5fb1632 = 4 KB 빈 폴더라 남김