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.
 
 
 
 
 
 

4.6 KiB

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

예시:

$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