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
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
|