You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

179 lines
4.6 KiB

4 weeks ago
# 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