# TERACLONE 진행 현황 - 작성일: 2026-06-29 - 기준 프로젝트: `C:\Users\COMPUTER1\Desktop\projects\테라클론\code` ## 개요 최근 작업은 크게 4개 축으로 진행됐다. 1. 사용자 관리 목업을 실제 API + SQLite 기반으로 전환 2. 로그인 페이지와 세션 기반 접근 제어 추가 3. 포트 설정 UI 구조 조정 4. 개발/QA 과정에서 드러난 UI 동작 이슈 수정 ## 현재 구조 요약 - 서버 진입점: `cmd/server/main.go` - 라우팅: `internal/routes/routes.go` - 새 UI 핸들러: `internal/handlers/device_handler.go` - 서비스 계층: `internal/service/app_service.go` - SQLite 저장소: `internal/store/sqlite_store.go` - 목업 페이지 데이터: `internal/mock/mock_data.go` - 템플릿: `web/templates/*` - 프런트 스크립트: `web/static/js/app.js` - 스타일: `web/static/css/style.css` ## 구현된 내용 ### 1. 사용자 관리 실기능화 기존 `/admin/users`는 목업 데이터만 보여주던 화면이었는데, 현재는 SQLite를 사용하는 실제 CRUD 흐름으로 변경됐다. - 사용자 테이블 추가 - 기본 사용자 시드 추가 - 사용자 목록 조회 - 사용자 생성 - 사용자 수정 - 사용자 삭제 관련 API: - `GET /api/users` - `POST /api/users` - `GET /api/users/{id}` - `PUT /api/users/{id}` - `DELETE /api/users/{id}` 관련 파일: - `internal/store/sqlite_store.go` - `internal/service/app_service.go` - `internal/handlers/device_handler.go` - `web/templates/partials/block_table.html` - `web/templates/partials/block_modal.html` - `web/static/js/app.js` ### 2. 로그인 페이지 추가 로그인 화면과 세션 기반 보호가 추가됐다. - 로그인 페이지: `/login` - 로그아웃: `/logout` - 비로그인 시 새 UI 진입은 로그인 페이지로 리다이렉트 - 인증 후에만 주요 페이지/API 접근 가능 기본 계정: - 아이디: `admin` - 비밀번호: `admin` 주의: - 화면에는 더 이상 기본 계정을 프리필하거나 노출하지 않음 - 브라우저 비밀번호 저장 제안은 자동완성 속성으로 최대한 억제 관련 파일: - `web/templates/auth/login.html` - `internal/handlers/device_handler.go` - `internal/store/sqlite_store.go` - `web/templates/layout.html` - `web/static/css/style.css` ### 3. 포트 설정 UI 조정 포트 설정은 여러 번 방향이 바뀌었고, 현재 상태는 아래와 같다. - 대시보드 포트 맵 UI는 유지 - 포트 설정 화면 상단에는 포트 선택 UI가 존재 - 좌측 메뉴의 `포트 설정 > Port 1~48` 펼침 UI는 제거 - 포트 설정 화면 하단의 `적용 대상 포트` 카드 UI는 제거 현재 상단 포트 선택 UI 동작: - `개별 보기`: 해당 포트 상세 설정 화면으로 이동 - `적용 대상 추가`: 상단 카드 내부 상태만 토글 - 선택 상태는 `localStorage`에 저장 관련 파일: - `web/templates/partials/block_port-links.html` - `web/templates/partials/block_port-selector.html` - `web/templates/partials/block_form.html` - `web/templates/layout.html` - `web/static/js/app.js` - `web/static/css/style.css` - `internal/mock/mock_data.go` ## SQLite 정보 기본 DB 경로: - `data/teraclone.db` 환경변수로 변경 가능: - `TERACLONE_DB_PATH` 예시: ```powershell $env:TERACLONE_DB_PATH="runtime\\qa.db" .\scripts\dev.ps1 start ``` ## 현재 확인된 동작 상태 ### 정상 확인 - `go build -buildvcs=false ./...` - 사용자 CRUD API 동작 - 로그인 페이지 렌더링 - 로그인 후 세션 쿠키 발급 - 로그아웃 후 접근 차단 - 포트 선택 UI 렌더링 ### 현재 설계상 남아있는 점 - 그룹 관리는 아직 목업 기반 - 포트 설정은 실제 저장 로직이 아니라 UI/목업 동작 중심 - 일부 문자열/템플릿은 한글 인코딩 흔적이 남아 있음 - 테스트 코드는 아직 없음 ## 변경 이력 요약 ### 사용자/인증 - 목업 사용자 화면을 실DB 기반으로 전환 - `admin/admin` 계정 추가 - 로그인/로그아웃/세션 추가 ### UI/UX - 로그인 화면에서 기본 계정 노출 제거 - 비밀번호 저장 팝업 억제용 속성 추가 - 포트 설정 탭 동작 단순화 - 포트 설정 좌측 포트 목록 제거 ### 개발 편의 - SQLite 경로를 환경변수로 오버라이드 가능 ## 다음 작업 추천 1. 그룹 관리도 사용자 관리처럼 실제 API/DB로 전환 2. 포트 설정을 실제 저장 구조와 연결 3. 포트 설정 상단 선택 UI의 저장 의미를 명확히 확정 4. 로그인/사용자 관리 테스트 코드 추가 5. 문자열 인코딩/하드코딩 정리 ## Obsidian 메모용 태그 - #teraclone - #progress - #ui - #sqlite - #auth - #user-management