📊 데이터베이스 테이블 구성 완료 및 README 업데이트

 완성된 기능:
- 5개 핵심 테이블 생성 (devices, users, power_consumption, network_traffic, system_resources)
- 기본 사용자 계정 생성 (admin/family)
- 기본 디바이스 등록 (Mac Mini M4 Pro, DS1525+, RT6600ax)
- Tapo 스마트 플러그 관리 API 완성
- Docker 환경 통합 (포트 9304-9307)

🔧 주요 변경사항:
- docker-compose.mac-mini.yml 삭제 및 통합
- 포트 충돌 해결 (9305: MariaDB, 9306: API, 9304: phpMyAdmin, 9307: Redis)
- 데이터베이스 스키마 완성
- API 엔드포인트 문서화

📋 현재 상태:
- 백엔드 API: 100% 완성
- 데이터베이스: 100% 구성 완료
- Docker 환경: 100% 구축 완료
- 프론트엔드: 개발 대기 중
This commit is contained in:
Hyungi Ahn
2025-08-12 11:05:06 +09:00
parent 1a01809a6e
commit 5fc5a697f9

120
README.md
View File

@@ -4,6 +4,13 @@
> **Mac Mini M4 Pro 전용 버전** - 고성능 홈 서버 환경에 최적화
## 📋 **현재 개발 상태 (v1.0)**
**백엔드 API 완성** - Tapo 스마트 플러그 관리, 디바이스 모니터링
**데이터베이스 구성 완료** - 5개 테이블, 기본 데이터 설정
**Docker 환경 구축** - MariaDB, Redis, API 서버 통합 운영
🚧 **프론트엔드 웹 대시보드** - 개발 대기 중
## 🎯 주요 기능
### ✅ **구현 완료**
@@ -11,8 +18,10 @@
- **전력 소비 추적**: Tapo P110 플러그를 통한 실시간 전력 데이터 수집
- **확장 가능한 아키텍처**: 설정 파일 기반 기기 관리
- **RESTful API**: Express.js 기반 완전한 백엔드 API
- **데이터베이스**: MariaDB를 통한 안정적인 데이터 저장
- **데이터베이스**: MariaDB를 통한 안정적인 데이터 저장 및 테이블 구성 완료
- **캐시 시스템**: Redis를 통한 고성능 데이터 처리
- **사용자 관리**: 관리자/가족 계정 및 역할 기반 시스템
- **디바이스 등록**: Mac Mini, NAS, 라우터 기본 디바이스 등록
### 🚧 **개발 예정**
- **웹 대시보드**: 실시간 모니터링 인터페이스
@@ -175,13 +184,30 @@ curl http://localhost:9306/api/tapo/power
- **Username**: homeuser
- **Password**: mac_mini_home_password
### 테이블 구성
시스템에는 다음 테이블들이 구성되어 있습니다:
```yaml
✅ devices # 디바이스 관리 (3개 기본 데이터)
✅ users # 사용자 관리 (2개 기본 계정)
✅ power_consumption # 전력 소비 데이터
✅ network_traffic # 네트워크 트래픽 데이터
✅ system_resources # 시스템 리소스 데이터
```
### 기본 데이터
시스템 초기화시 다음 데이터가 자동으로 생성됩니다:
- **관리자 계정**: admin / admin123
- **가족 계정**: family / admin123
- **기본 디바이스**: Mac Mini M4 Pro, Synology DS1525+, RT6600ax
**기본 계정:**
- **관리자 계정**: admin / admin123 (admin 권한)
- **가족 계정**: family / admin123 (family 권한)
**기본 디바이스:**
- **Mac Mini M4 Pro** (server, 서재)
- **Synology DS1525+** (nas, 서재)
- **Synology RT6600ax** (router, 거실)
## 🔧 개발 가이드
@@ -218,26 +244,41 @@ docker-compose logs -f api
tail -f logs/combined.log
```
## 🐳 Docker 명령어 (Mac Mini)
## 🐳 Docker 관리
### 기본 명령어
```bash
# 모든 서비스 시작 (Mac Mini 전용)
docker-compose -f docker-compose.mac-mini.yml up -d
# 모든 서비스 시작
docker-compose up -d
# 특정 서비스만 시작
docker-compose -f docker-compose.mac-mini.yml up -d mariadb redis
docker-compose up -d mariadb redis
# 로그 확인
docker-compose -f docker-compose.mac-mini.yml logs -f
docker-compose logs -f
# 컨테이너 상태 확인
docker-compose -f docker-compose.mac-mini.yml ps
docker-compose ps
# 서비스 중지
docker-compose -f docker-compose.mac-mini.yml down
docker-compose down
# 볼륨까지 삭제 (주의: 데이터 손실)
docker-compose -f docker-compose.mac-mini.yml down -v
docker-compose down -v
```
### 개별 서비스 관리
```bash
# API 서버 재시작
docker-compose restart api
# 데이터베이스 백업
docker exec home_mariadb mysqldump -u homeuser -pmac_mini_home_password home_management > backup.sql
# 데이터베이스 복원
docker exec -i home_mariadb mariadb -u homeuser -pmac_mini_home_password home_management < backup.sql
```
## 🔍 문제 해결
@@ -246,45 +287,55 @@ docker-compose -f docker-compose.mac-mini.yml down -v
```bash
# MariaDB 컨테이너 상태 확인
docker-compose -f docker-compose.mac-mini.yml ps mariadb
docker-compose ps mariadb
# 데이터베이스 로그 확인
docker-compose -f docker-compose.mac-mini.yml logs mariadb
docker-compose logs mariadb
# 컨테이너 재시작
docker-compose -f docker-compose.mac-mini.yml restart mariadb
docker-compose restart mariadb
# Mac Mini 재배포
./scripts/deploy-mac-mini.sh
# 데이터베이스 연결 테스트
docker exec home_mariadb mariadb -u homeuser -pmac_mini_home_password home_management -e "SELECT 1"
```
### 포트 충돌
기본 포트가 사용 중인 경우 `docker-compose.mac-mini.yml`에서 포트를 변경하세요:
현재 사용 중인 포트들:
- **API**: 9306
- **MariaDB**: 9305
- **phpMyAdmin**: 9304
- **Redis**: 9307
```yaml
ports:
- "3001:3000" # 3001로 변경
```
### Mac Mini 네트워크 접근 문제
포트가 사용 중인 경우 확인:
```bash
# 방화벽 확인
sudo pfctl -s all
# 포트 사용 확인
lsof -i :3000
lsof -i :9306
lsof -i :9305
# 네트워크 인터페이스 확인
ifconfig
# 충돌하는 Docker 컨테이너 확인
docker ps --filter "publish=9306"
```
### API 서버 문제
```bash
# API 서버 로그 확인
docker-compose logs -f api
# API 헬스체크
curl -v http://localhost:9306/health
# Tapo 라이브러리 설치 확인
docker exec home_api npm list tp-link-tapo-connect
```
## 📈 모니터링
### phpMyAdmin으로 데이터베이스 모니터링
1. http://localhost:8080 접속 (Mac Mini에서)
1. http://localhost:9304 접속
2. Server: `mariadb`
3. Username: `homeuser`
4. Password: `mac_mini_home_password`
@@ -293,10 +344,13 @@ ifconfig
```bash
# API 응답 시간 테스트
time curl http://localhost:3000/api/devices
time curl http://localhost:9306/api/devices
# 부하 테스트 (Apache Bench)
ab -n 1000 -c 10 http://localhost:3000/api/devices
ab -n 1000 -c 10 http://localhost:9306/api/devices
# 데이터베이스 상태 확인
curl http://localhost:9306/api/devices | jq '.count'
```
## 🔐 보안