feat: team org panel, admin CRUD, local deploy tools, bidirectional data sync

Add TeamMember model and APIs, team status UI, /admin page, local server bats,
and scripts to sync data between local PostgreSQL and Render.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
EENE Dashboard
2026-06-06 01:41:00 +09:00
parent d14ff1997c
commit fb2956b0ac
45 changed files with 4104 additions and 376 deletions

View File

@@ -67,6 +67,45 @@ npm run dev
---
## 로컬 전용 운영 (데이터 PC에 영구 저장)
Render 용량 제한 시 **이 PC만으로** 운영할 수 있습니다. 모든 데이터는 아래 폴더에 저장됩니다.
| 데이터 | 저장 위치 |
|--------|-----------|
| 업무·팀원·KPI 등 | `data/postgres/` (Docker PostgreSQL 볼륨) |
| 업무 첨부 파일 | `uploads/` |
| 팀원 프로필 사진 | `uploads/team/` |
### 빠른 시작
**Windows:** `서버시작.bat` 더블클릭 (DB 시작 → 스키마 동기화 → API+WEB 실행)
**종료:** `서버종료.bat` (API/WEB만) · `서버종료.bat docker` (Docker DB까지 중지, 데이터는 유지)
수동 실행:
```bash
npm run local:db # PostgreSQL 컨테이너 시작
npm run local:setup # DB 스키마 동기화
npm run local:api # 백엔드 :4000 (터미널 1)
npm run local:web # 프론트 :3000 (터미널 2)
```
### 접속 주소
| 화면 | 주소 |
|------|------|
| 대시보드 | `http://localhost:3000` |
| 팀원 관리 | `http://localhost:3000/admin` |
| API | `http://localhost:4000/api` |
사설망 IP(`172.x`, `192.168.x`)로 접속하면 **자동으로 같은 IP의 :4000 백엔드**에 연결됩니다. (Render 서버 불필요)
> `backend/.env` 의 `DATABASE_URL` 이 Docker 계정과 맞아야 합니다.
> 기본: `postgresql://eee_admin:eee_password@localhost:5432/eee_dashboard`
---
## 서버(이 PC) IP 주소 확인
```powershell
@@ -160,3 +199,6 @@ D:\EENE_Dashboard\
| DELETE | /api/files/:id | 파일 삭제 |
| GET | /api/kpi | KPI 조회 |
| POST | /api/kpi | KPI 등록 |
| GET | /api/team-members | 팀원 목록 |
| POST | /api/team-members | 팀원 등록 |
| POST | /api/team-members/photo | 팀원 사진 업로드 (로컬 저장) |