Update: 51124 서버 검토 의견 및 추가 제안사항 반영
- user_robings 테이블 추가 필드 제안 (사용 통계, 상태, 설정) - slack_users 테이블 개선 (표시명, 시간대, 봇 여부) - 성능 향상을 위한 인덱스 추가 - robing_configs 테이블 제안 (포트 하드코딩 문제 해결) - 개선된 실행 순서 (Phase 0-2)
This commit is contained in:
parent
27649af1bc
commit
a1271f3950
@ -330,15 +330,131 @@ WHERE sr.slack_user_id = ? AND sr.slack_team_id = ?
|
||||
- 대응: API 래퍼 함수로 하위 호환성 유지
|
||||
- 점진적 코드 업데이트
|
||||
|
||||
## 8. 결론
|
||||
## 8. 51124 서버 검토 의견 및 추가 제안
|
||||
|
||||
### 8.1 동의하는 부분
|
||||
1. **방안 2 (4개 테이블) 선택**
|
||||
- 적절한 균형점입니다
|
||||
- 확장성과 단순성 모두 확보
|
||||
- 명확한 관심사 분리
|
||||
|
||||
2. **slack_users 테이블 설계**
|
||||
- `robing_id` 필드 포함이 좋습니다
|
||||
- Slack 사용자별로 다른 로빙 할당 가능
|
||||
- UNIQUE 제약 조건 적절
|
||||
|
||||
3. **단계적 마이그레이션**
|
||||
- 백업 우선
|
||||
- 새 테이블 먼저 생성
|
||||
- 안전한 접근
|
||||
|
||||
### 8.2 추가 제안사항
|
||||
|
||||
#### user_robings 테이블에 추가 필드
|
||||
```sql
|
||||
CREATE TABLE user_robings (
|
||||
id UUID PRIMARY KEY,
|
||||
user_id UUID REFERENCES users(id),
|
||||
robing_id VARCHAR(100) NOT NULL,
|
||||
robing_port INTEGER,
|
||||
robing_host VARCHAR(255) DEFAULT '192.168.219.52',
|
||||
is_primary BOOLEAN DEFAULT false,
|
||||
last_used_at TIMESTAMP, -- 마지막 사용 시간
|
||||
usage_count INTEGER DEFAULT 0, -- 사용 횟수
|
||||
status VARCHAR(20) DEFAULT 'active', -- active/inactive/suspended
|
||||
settings JSON, -- 로빙별 개인 설정
|
||||
created_at TIMESTAMP,
|
||||
UNIQUE(user_id, robing_id)
|
||||
);
|
||||
```
|
||||
|
||||
#### slack_users 테이블 개선
|
||||
```sql
|
||||
CREATE TABLE slack_users (
|
||||
id UUID PRIMARY KEY,
|
||||
slack_user_id VARCHAR(100) NOT NULL,
|
||||
slack_team_id VARCHAR(100),
|
||||
user_id UUID REFERENCES users(id),
|
||||
robing_id VARCHAR(100),
|
||||
display_name VARCHAR(255), -- Slack 표시 이름
|
||||
slack_timezone VARCHAR(50), -- 사용자 시간대
|
||||
last_message_at TIMESTAMP, -- 마지막 메시지 시간
|
||||
is_bot BOOLEAN DEFAULT false, -- 봇 여부 확인
|
||||
created_at TIMESTAMP,
|
||||
updated_at TIMESTAMP,
|
||||
UNIQUE(slack_user_id, slack_team_id)
|
||||
);
|
||||
```
|
||||
|
||||
#### 인덱스 추가 필요
|
||||
```sql
|
||||
-- Slack 사용자 빠른 조회
|
||||
CREATE INDEX idx_slack_users_lookup
|
||||
ON slack_users(slack_user_id, slack_team_id);
|
||||
|
||||
-- 주 로빙 빠른 조회
|
||||
CREATE INDEX idx_user_robings_primary
|
||||
ON user_robings(user_id, is_primary);
|
||||
|
||||
-- 활성 상태 필터링
|
||||
CREATE INDEX idx_user_robings_status
|
||||
ON user_robings(status, user_id);
|
||||
```
|
||||
|
||||
### 8.3 주의사항
|
||||
|
||||
1. **데이터 일관성**
|
||||
- `robing_id`가 여러 테이블에 분산
|
||||
- 중앙 관리 방법 필요 (enum 또는 별도 robings 테이블)
|
||||
|
||||
2. **포트 하드코딩 문제**
|
||||
```sql
|
||||
-- 하드코딩 대신 설정 테이블 권장
|
||||
CREATE TABLE robing_configs (
|
||||
robing_id VARCHAR(100) PRIMARY KEY,
|
||||
port INTEGER NOT NULL,
|
||||
host VARCHAR(255),
|
||||
is_active BOOLEAN DEFAULT true
|
||||
);
|
||||
```
|
||||
|
||||
3. **ChromaDB 컬렉션명 규칙**
|
||||
- `{robing_id}_{user_id}_episodic` 형식 통일
|
||||
- slack_users의 user_id 사용 필수
|
||||
|
||||
### 8.4 개선된 실행 순서
|
||||
|
||||
#### Phase 0: 즉시 실행 (영향 없음)
|
||||
1. slack_users 테이블만 먼저 생성
|
||||
2. 인덱스 생성
|
||||
3. 테스트 데이터 입력
|
||||
4. rb10508_micro에서 매핑 테스트
|
||||
|
||||
#### Phase 1: 테스트 환경 검증
|
||||
1. 새 테이블 전체 생성 (테스트 DB)
|
||||
2. 마이그레이션 스크립트 검증
|
||||
3. API 호환성 테스트
|
||||
4. 롤백 시나리오 테스트
|
||||
|
||||
#### Phase 2: 프로덕션 적용
|
||||
1. 전체 백업
|
||||
2. 새 테이블 생성
|
||||
3. 데이터 마이그레이션
|
||||
4. 애플리케이션 전환
|
||||
5. 구 테이블 보관 (1주일)
|
||||
6. 안정화 확인 후 구 테이블 삭제
|
||||
|
||||
## 9. 최종 결론
|
||||
|
||||
현재의 복잡한 5개 테이블 구조를 4개 테이블로 단순화하여:
|
||||
- 데이터 모델의 명확성 향상
|
||||
- Slack 통합 기능 지원
|
||||
- 유지보수성 개선
|
||||
|
||||
방안 2 (4개 테이블)를 채택하여 단계적으로 마이그레이션하는 것을 권장합니다.
|
||||
방안 2 (4개 테이블)를 채택하되, 51124 서버에서 제안한 추가 필드와 인덱스를 포함하여 구현하는 것을 권장합니다.
|
||||
|
||||
특히 slack_users 테이블을 즉시 생성하여 Slack 사용자 매핑 기능을 우선 구현하고, 나머지 테이블은 단계적으로 마이그레이션하는 것이 안전합니다.
|
||||
|
||||
---
|
||||
|
||||
*이 문서는 2025년 8월 12일 51123 서버에서 작성되었습니다.*
|
||||
*이 문서는 2025년 8월 12일 51123 서버에서 작성되고, 51124 서버에서 검토되었습니다.*
|
||||
Loading…
x
Reference in New Issue
Block a user