- 실제 테이블명 일치 (users→user, companies→company 등) - 11개 테이블 실제 컬럼 구조 반영 - 각 테이블 레코드 수 추가 - 존재하지 않는 테이블 제거 - 외래키 관계 현행화
258 lines
8.7 KiB
Markdown
258 lines
8.7 KiB
Markdown
# PostgreSQL 테이블 구조
|
|
|
|
## 작성일: 2025-08-20
|
|
## 최종 수정일: 2025-09-11
|
|
## 데이터베이스: main_db
|
|
|
|
---
|
|
|
|
## 1. 조직 관련 테이블
|
|
|
|
### company
|
|
- **용도**: 회사 정보
|
|
- **Primary Key**: id (UUID)
|
|
- **레코드**: 2개
|
|
|
|
| 컬럼명 | 타입 | NULL | 기본값 | 설명 |
|
|
|--------|------|------|--------|------|
|
|
| id | UUID | NO | | 회사 ID |
|
|
| name | VARCHAR(255) | NO | | 회사명 |
|
|
| url | VARCHAR(255) | YES | | 회사 URL |
|
|
| created_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 생성 시각 |
|
|
| updated_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 수정 시각 |
|
|
|
|
### team
|
|
- **용도**: 팀 정보
|
|
- **Primary Key**: id (UUID)
|
|
- **레코드**: 2개
|
|
|
|
| 컬럼명 | 타입 | NULL | 기본값 | 설명 |
|
|
|--------|------|------|--------|------|
|
|
| id | UUID | NO | | 팀 ID |
|
|
| company_id | UUID | NO | | 회사 ID (FK → company) |
|
|
| name | VARCHAR(32) | NO | | 팀 이름 |
|
|
| created_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 생성 시각 |
|
|
| updated_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 수정 시각 |
|
|
|
|
### user
|
|
- **용도**: 시스템 사용자 정보
|
|
- **Primary Key**: id (UUID)
|
|
- **레코드**: 1개
|
|
|
|
| 컬럼명 | 타입 | NULL | 기본값 | 설명 |
|
|
|--------|------|------|--------|------|
|
|
| id | UUID | NO | | 사용자 ID |
|
|
| team_id | UUID | NO | | 팀 ID (FK → team) |
|
|
| email | VARCHAR(255) | NO | | 이메일 (UNIQUE) |
|
|
| name | VARCHAR(255) | YES | | 사용자명 |
|
|
| picture | VARCHAR(500) | YES | | 프로필 이미지 |
|
|
| oauth_provider | VARCHAR(50) | YES | | OAuth 제공자 |
|
|
| oauth_id | VARCHAR(255) | YES | | OAuth ID |
|
|
| is_active | BOOLEAN | YES | | 활성 상태 |
|
|
| last_login_at | TIMESTAMPTZ | YES | | 마지막 로그인 |
|
|
| created_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 생성 시각 |
|
|
| updated_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 수정 시각 |
|
|
| username | VARCHAR(64) | YES | | 사용자명 |
|
|
|
|
### workspace_member
|
|
- **용도**: 워크스페이스 멤버십
|
|
- **Primary Key**: id (UUID)
|
|
- **레코드**: 0개
|
|
|
|
| 컬럼명 | 타입 | NULL | 기본값 | 설명 |
|
|
|--------|------|------|--------|------|
|
|
| id | UUID | NO | | 멤버십 ID |
|
|
| user_id | UUID | NO | | 사용자 ID (FK → user) |
|
|
| role | user_role | NO | GUEST | 역할 (OWNER/MEMBER/GUEST) |
|
|
| is_active | BOOLEAN | YES | | 활성 상태 |
|
|
| joined_at | TIMESTAMP | YES | CURRENT_TIMESTAMP | 가입 시각 |
|
|
| updated_at | TIMESTAMP | YES | CURRENT_TIMESTAMP | 수정 시각 |
|
|
|
|
---
|
|
|
|
## 2. 제품 및 로빙 테이블
|
|
|
|
### product
|
|
- **용도**: 제품 정보
|
|
- **Primary Key**: id (UUID)
|
|
- **레코드**: 1개
|
|
|
|
| 컬럼명 | 타입 | NULL | 기본값 | 설명 |
|
|
|--------|------|------|--------|------|
|
|
| id | UUID | NO | | 제품 ID |
|
|
| name | VARCHAR(32) | NO | | 제품명 |
|
|
| app_id | VARCHAR(16) | YES | | 앱 ID |
|
|
| scope | JSON | YES | | 권한 범위 |
|
|
| description | VARCHAR(256) | YES | | 설명 |
|
|
| created_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 생성 시각 |
|
|
| updated_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 수정 시각 |
|
|
|
|
### robeing
|
|
- **용도**: 로빙 엔티티 정보
|
|
- **Primary Key**: id (UUID)
|
|
- **레코드**: 2개
|
|
|
|
| 컬럼명 | 타입 | NULL | 기본값 | 설명 |
|
|
|--------|------|------|--------|------|
|
|
| id | UUID | NO | | 로빙 ID |
|
|
| product_id | UUID | NO | | 제품 ID (FK → product) |
|
|
| team_id | UUID | NO | | 팀 ID (FK → team) |
|
|
| name | VARCHAR(32) | YES | | 로빙 이름 |
|
|
| level | INTEGER | YES | 1 | 레벨 |
|
|
| experience | INTEGER | YES | 0 | 경험치 |
|
|
| memory | INTEGER | YES | 10 | 메모리 스탯 |
|
|
| compute | INTEGER | YES | 10 | 연산 스탯 |
|
|
| react | INTEGER | YES | 10 | 반응 스탯 |
|
|
| empathy | INTEGER | YES | 10 | 공감 스탯 |
|
|
| leadership | INTEGER | YES | 10 | 리더십 스탯 |
|
|
| updated_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 수정 시각 |
|
|
| created_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 생성 시각 |
|
|
| robeing_container_id | VARCHAR(64) | YES | | 컨테이너 ID |
|
|
| robeing_container_url | VARCHAR(128) | YES | | 컨테이너 URL |
|
|
|
|
---
|
|
|
|
## 3. Slack 통합 테이블
|
|
|
|
### slack_workspace
|
|
- **용도**: Slack 워크스페이스 정보
|
|
- **Primary Key**: id (UUID)
|
|
- **레코드**: 2개
|
|
|
|
| 컬럼명 | 타입 | NULL | 기본값 | 설명 |
|
|
|--------|------|------|--------|------|
|
|
| id | UUID | NO | | 워크스페이스 ID |
|
|
| team_id | UUID | NO | | 팀 ID (FK → team) |
|
|
| slack_team_id | VARCHAR(32) | YES | | Slack 팀 ID |
|
|
| bot_token | VARCHAR(255) | YES | | 봇 토큰 |
|
|
| is_enterprise_install | BOOLEAN | YES | | 엔터프라이즈 설치 |
|
|
| is_active | BOOLEAN | YES | | 활성 상태 |
|
|
| installed_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 설치 시각 |
|
|
| updated_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 수정 시각 |
|
|
| created_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 생성 시각 |
|
|
|
|
---
|
|
|
|
## 4. 사용자 설정 및 토큰 테이블
|
|
|
|
### user_preference
|
|
- **용도**: 사용자 개인 설정
|
|
- **Primary Key**: id (INTEGER)
|
|
- **레코드**: 0개
|
|
|
|
| 컬럼명 | 타입 | NULL | 기본값 | 설명 |
|
|
|--------|------|------|--------|------|
|
|
| id | INTEGER | NO | | 설정 ID |
|
|
| user_id | UUID | NO | | 사용자 ID (FK → user) |
|
|
| slack_user_id | VARCHAR(32) | YES | | Slack 사용자 ID |
|
|
| news_keywords | VARCHAR(128)[] | YES | | 뉴스 키워드 |
|
|
| email_filter | VARCHAR(128)[] | YES | | 이메일 필터 |
|
|
| briefing_enabled | BOOLEAN | YES | true | 브리핑 활성화 |
|
|
| briefing_time | TIME | YES | 09:00:00 | 브리핑 시간 |
|
|
| updated_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 수정 시각 |
|
|
| created_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 생성 시각 |
|
|
|
|
### gmail_token
|
|
- **용도**: Gmail OAuth 토큰
|
|
- **Primary Key**: id (UUID)
|
|
- **레코드**: 0개
|
|
|
|
| 컬럼명 | 타입 | NULL | 기본값 | 설명 |
|
|
|--------|------|------|--------|------|
|
|
| id | UUID | NO | | 토큰 ID |
|
|
| user_id | UUID | NO | | 사용자 ID (FK → user) |
|
|
| token_data | JSONB | YES | | 토큰 데이터 |
|
|
| oauth_config | JSONB | YES | | OAuth 설정 |
|
|
| scopes | JSONB | YES | | 권한 범위 |
|
|
| metadata | JSONB | YES | | 메타데이터 |
|
|
| expiry | TIMESTAMP | YES | | 만료 시각 |
|
|
| is_equipped | BOOLEAN | YES | false | 장착 상태 |
|
|
| equipped_to | VARCHAR(50) | YES | | 장착 대상 |
|
|
| token_type | VARCHAR | YES | Bearer | 토큰 타입 |
|
|
| expires_at | DOUBLE PRECISION | YES | | 만료 시간 |
|
|
| created_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 생성 시각 |
|
|
| updated_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 수정 시각 |
|
|
|
|
---
|
|
|
|
## 5. 로그 및 데이터 테이블
|
|
|
|
### conversation_log
|
|
- **용도**: 대화 기록
|
|
- **Primary Key**: id (INTEGER)
|
|
- **레코드**: 0개
|
|
|
|
| 컬럼명 | 타입 | NULL | 기본값 | 설명 |
|
|
|--------|------|------|--------|------|
|
|
| id | INTEGER | NO | | 로그 ID |
|
|
| user_id | UUID | NO | | 사용자 ID (FK → user) |
|
|
| channel_id | VARCHAR(16) | YES | | 채널 ID |
|
|
| message | VARCHAR | YES | | 사용자 메시지 |
|
|
| response | VARCHAR | YES | | 응답 메시지 |
|
|
| intent | VARCHAR(256) | YES | | 의도 분석 |
|
|
| confidence | DOUBLE PRECISION | YES | | 신뢰도 |
|
|
| thread_ts | VARCHAR(128) | YES | | 스레드 타임스탬프 |
|
|
| timestamp | TIMESTAMPTZ | YES | | 대화 시각 |
|
|
| channel_type | VARCHAR(32) | YES | | 채널 타입 |
|
|
|
|
### news
|
|
- **용도**: 뉴스 데이터
|
|
- **Primary Key**: id (UUID)
|
|
- **레코드**: 0개
|
|
|
|
| 컬럼명 | 타입 | NULL | 기본값 | 설명 |
|
|
|--------|------|------|--------|------|
|
|
| id | UUID | NO | | 뉴스 ID |
|
|
| user_id | UUID | YES | | 사용자 ID (FK → user) |
|
|
| data | JSONB | YES | | 뉴스 데이터 |
|
|
| created_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 생성 시각 |
|
|
| updated_at | TIMESTAMPTZ | YES | CURRENT_TIMESTAMP | 수정 시각 |
|
|
|
|
---
|
|
|
|
## 6. 기타 정보
|
|
|
|
### Custom Types
|
|
- **user_role**: ENUM (OWNER, MEMBER, GUEST)
|
|
|
|
### Functions
|
|
- **update_column_updated_at**: 모든 테이블의 updated_at 자동 갱신 트리거
|
|
|
|
### 외래키 관계
|
|
|
|
|
|
| 테이블 | 컬럼 | 참조 테이블 | 참조 컬럼 |
|
|
|--------|------|------------|----------|
|
|
| team | company_id | company | id |
|
|
| user | team_id | team | id |
|
|
| robeing | product_id | product | id |
|
|
| robeing | team_id | team | id |
|
|
| slack_workspace | team_id | team | id |
|
|
| workspace_member | user_id | user | id |
|
|
| conversation_log | user_id | user | id |
|
|
| gmail_token | user_id | user | id |
|
|
| news | user_id | user | id |
|
|
| user_preference | user_id | user | id |
|
|
|
|
---
|
|
|
|
## 주의사항
|
|
|
|
### 데이터베이스 정보
|
|
- **소유자**: 모든 테이블 robeings 소유
|
|
- **타임스탬프**: TIMESTAMPTZ 사용 (WITH TIME ZONE)
|
|
- **자동 갱신**: update_column_updated_at 트리거로 updated_at 자동 관리
|
|
- **UUID 기반**: 주요 테이블 모두 UUID 사용
|
|
|
|
### 현재 데이터 상태 (2025-09-11)
|
|
- company: 2개
|
|
- team: 2개
|
|
- user: 1개
|
|
- product: 1개
|
|
- robeing: 2개
|
|
- slack_workspace: 2개
|
|
- 나머지 테이블: 비어있음
|
|
|
|
---
|
|
|
|
**문서 끝** |