docs: 자연어 기반 근태관리 시스템 아이디어 문서 추가
- 플렉스 대체 슬랙 네이티브 근태관리 - 자연어 처리로 "출근했어", "내일 반차" 같은 대화 인식 - 구글 워크스페이스 (Calendar, Gmail) 자동 연동 - AI 패턴 분석 및 스마트 알림 기능 - 월 26만원 비용 절감 효과 (30명 기준) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
b8656540c1
commit
062e79985c
278
ideas/250909_attendance_management_system.md
Normal file
278
ideas/250909_attendance_management_system.md
Normal file
@ -0,0 +1,278 @@
|
||||
# 자연어 기반 근태관리 시스템 - 로빙 에이전트
|
||||
|
||||
## 작성일: 2025-09-09
|
||||
## 작성자: Claude (51123 서버 관리자)
|
||||
|
||||
## 1. 개요
|
||||
플렉스 등 유료 HR 솔루션의 근태관리 기능(월 7,700원/인)을 로빙이 슬랙 자연어 대화로 대체.
|
||||
"출근했어", "내일 오후 반차" 같은 일상 대화로 근태를 관리하고 구글 워크스페이스와 자동 연동.
|
||||
|
||||
## 2. 시장 기회 및 가치 제안
|
||||
|
||||
### 2.1 타겟 시장
|
||||
- 10-50명 규모 스타트업
|
||||
- 구글 워크스페이스 + 슬랙 사용 기업
|
||||
- 플렉스/네이버웍스 전환 검토 중인 기업
|
||||
|
||||
### 2.2 비용 절감 효과
|
||||
```
|
||||
현재: 플렉스 베이직(7,700원) + 전자계약(1,000원) = 8,700원/인/월
|
||||
30명 스타트업: 261,000원/월 = 3,132,000원/년
|
||||
|
||||
로빙 대체 시: 0원 (또는 저렴한 구독료)
|
||||
연간 절감액: 300만원 이상
|
||||
```
|
||||
|
||||
## 3. 핵심 기능
|
||||
|
||||
### 3.1 자연어 출퇴근 관리
|
||||
```slack
|
||||
직원: 출근!
|
||||
로빙: 🏢 오늘도 화이팅! 09:03 출근 기록했어요.
|
||||
|
||||
직원: 퇴근할게
|
||||
로빙: 🏠 수고하셨어요! 18:32 퇴근 (근무시간: 9시간 29분)
|
||||
```
|
||||
|
||||
### 3.2 휴가/연차 신청
|
||||
```slack
|
||||
직원: 내일 오후 반차 쓸게, 병원 가야해
|
||||
로빙: 🏥 10월 15일 오후 반차 신청했어요.
|
||||
└ 팀장님께 알림 전송
|
||||
└ 구글 캘린더 등록
|
||||
└ 잔여 연차: 10.5일
|
||||
|
||||
팀장: 승인
|
||||
로빙: ✅ 반차 승인 완료! 병원 다녀오세요.
|
||||
```
|
||||
|
||||
### 3.3 지능형 컨텍스트 이해
|
||||
- "아파서 못 가" → 병가 자동 분류
|
||||
- "재택할게" → 재택근무 모드 설정
|
||||
- "오늘 외근" → 외근 상태 + 위치 기록 옵션
|
||||
|
||||
## 4. 기술 아키텍처
|
||||
|
||||
### 4.1 시스템 구성도
|
||||
```
|
||||
┌─────────────┐ ┌──────────────┐ ┌───────────────────┐
|
||||
│ Slack │────▶│ rb8001 │────▶│ skill-attendance │
|
||||
└─────────────┘ └──────────────┘ └───────────────────┘
|
||||
│
|
||||
┌──────────────────────────────┼──────────────────┐
|
||||
│ │ │
|
||||
┌───────▼────────┐ ┌──────────▼────────┐ ┌─────▼──────┐
|
||||
│ PostgreSQL │ │ Google Calendar │ │ Slack │
|
||||
│ (근태 기록) │ │ API │ │ Status │
|
||||
└────────────────┘ └───────────────────┘ └────────────┘
|
||||
```
|
||||
|
||||
### 4.2 자연어 처리 파이프라인
|
||||
```python
|
||||
# 예시 처리 로직
|
||||
def process_attendance_message(text):
|
||||
# 1. 의도 분류
|
||||
intent = classify_intent(text) # 'check_in', 'leave_request', etc.
|
||||
|
||||
# 2. 엔티티 추출
|
||||
entities = extract_entities(text) # 날짜, 시간, 사유 등
|
||||
|
||||
# 3. 컨텍스트 보강
|
||||
context = enrich_context(user_id, entities) # 팀 정보, 잔여 연차 등
|
||||
|
||||
# 4. 액션 실행
|
||||
return execute_action(intent, entities, context)
|
||||
```
|
||||
|
||||
## 5. 데이터베이스 설계
|
||||
|
||||
### 5.1 PostgreSQL 스키마
|
||||
```sql
|
||||
-- 근태 기록
|
||||
CREATE TABLE attendance_records (
|
||||
id UUID PRIMARY KEY,
|
||||
user_id UUID REFERENCES users(id),
|
||||
date DATE NOT NULL,
|
||||
check_in_time TIMESTAMP,
|
||||
check_out_time TIMESTAMP,
|
||||
work_type VARCHAR(20), -- 'office', 'remote', 'field'
|
||||
status VARCHAR(20), -- 'normal', 'late', 'early_leave'
|
||||
location JSONB, -- GPS 좌표 (옵션)
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 휴가 신청
|
||||
CREATE TABLE leave_requests (
|
||||
id UUID PRIMARY KEY,
|
||||
user_id UUID REFERENCES users(id),
|
||||
leave_type VARCHAR(20), -- 'annual', 'sick', 'personal'
|
||||
start_date DATE,
|
||||
end_date DATE,
|
||||
half_day BOOLEAN DEFAULT FALSE,
|
||||
half_day_type VARCHAR(10), -- 'morning', 'afternoon'
|
||||
reason TEXT,
|
||||
status VARCHAR(20), -- 'pending', 'approved', 'rejected'
|
||||
approver_id UUID,
|
||||
approved_at TIMESTAMP,
|
||||
google_calendar_event_id VARCHAR(255)
|
||||
);
|
||||
|
||||
-- 연차 잔여
|
||||
CREATE TABLE leave_balances (
|
||||
user_id UUID PRIMARY KEY REFERENCES users(id),
|
||||
total_days DECIMAL(3,1),
|
||||
used_days DECIMAL(3,1),
|
||||
remaining_days DECIMAL(3,1),
|
||||
year INTEGER,
|
||||
updated_at TIMESTAMP
|
||||
);
|
||||
```
|
||||
|
||||
## 6. 구글 워크스페이스 연동
|
||||
|
||||
### 6.1 Calendar API 연동
|
||||
```python
|
||||
async def sync_to_google_calendar(leave_request):
|
||||
event = {
|
||||
'summary': f"{leave_request.user_name} - {leave_request.leave_type}",
|
||||
'start': {'date': leave_request.start_date},
|
||||
'end': {'date': leave_request.end_date},
|
||||
'description': leave_request.reason,
|
||||
'attendees': [{'email': leave_request.user_email}]
|
||||
}
|
||||
|
||||
result = await calendar_service.events().insert(
|
||||
calendarId='team@company.com',
|
||||
body=event
|
||||
).execute()
|
||||
|
||||
return result['id']
|
||||
```
|
||||
|
||||
### 6.2 Gmail 월간 리포트
|
||||
- 매월 1일 자동 발송
|
||||
- PDF 첨부 (근태 요약, 연차 사용 내역)
|
||||
- 관리자/HR 담당자 CC
|
||||
|
||||
## 7. 슬랙 인터페이스
|
||||
|
||||
### 7.1 실시간 상태 감지
|
||||
```python
|
||||
@slack_events_adapter.on("presence_change")
|
||||
async def handle_presence_change(event):
|
||||
if event['presence'] == 'active' and is_first_active_today(event['user']):
|
||||
await auto_check_in(event['user'])
|
||||
```
|
||||
|
||||
### 7.2 대화형 휴가 신청
|
||||
```slack
|
||||
직원: 다음주 월화 연차 쓸 예정이야
|
||||
로빙: 📅 10월 21일(월) ~ 22일(화) 연차 신청하시는 거죠?
|
||||
|
||||
사유를 입력해주세요 (선택사항):
|
||||
[개인 사유] [가족 행사] [여행] [직접 입력]
|
||||
|
||||
직원: 가족 행사
|
||||
로빙: 신청 내용:
|
||||
• 기간: 10/21(월) ~ 10/22(화) [2일]
|
||||
• 사유: 가족 행사
|
||||
• 잔여 연차: 12일 → 10일
|
||||
|
||||
[✅ 신청] [❌ 취소]
|
||||
```
|
||||
|
||||
## 8. AI 기반 고급 기능
|
||||
|
||||
### 8.1 패턴 분석 및 이상 감지
|
||||
- 비정상적 근태 패턴 감지 (번아웃 위험)
|
||||
- 팀 단위 휴가 집중도 분석
|
||||
- 연차 소진율 예측
|
||||
|
||||
### 8.2 스마트 알림
|
||||
```python
|
||||
# 연차 만료 예정 알림
|
||||
if remaining_leave_days > 0 and days_until_expiry < 60:
|
||||
await send_reminder(
|
||||
f"연차가 {days_until_expiry}일 후 만료됩니다. "
|
||||
f"남은 연차: {remaining_leave_days}일"
|
||||
)
|
||||
```
|
||||
|
||||
### 8.3 인수인계 자동화
|
||||
- 휴가 신청 시 진행 중 업무 자동 체크
|
||||
- 대체 담당자 추천
|
||||
- 인수인계 체크리스트 생성
|
||||
|
||||
## 9. 보안 및 컴플라이언스
|
||||
|
||||
### 9.1 개인정보 보호
|
||||
- 위치 정보 암호화 저장
|
||||
- 최소 권한 원칙 (본인/팀장/HR만 조회)
|
||||
- 근태 기록 5년 보관 (근로기준법)
|
||||
|
||||
### 9.2 감사 로그
|
||||
```json
|
||||
{
|
||||
"action": "leave_approved",
|
||||
"approver": "team_lead_uuid",
|
||||
"target": "employee_uuid",
|
||||
"timestamp": "2025-09-09T10:00:00Z",
|
||||
"details": {
|
||||
"leave_type": "annual",
|
||||
"days": 2
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 10. 차별화 전략
|
||||
|
||||
### 10.1 자연어 처리 우위
|
||||
- 한국어 근태 용어 특화 학습
|
||||
- 맥락 기반 의도 파악
|
||||
- 오타/축약어 자동 인식
|
||||
|
||||
### 10.2 팀 문화 적응
|
||||
- 팀별 근무 패턴 학습
|
||||
- 유연근무제 자동 적응
|
||||
- 커스텀 휴가 정책 설정
|
||||
|
||||
### 10.3 통합 대시보드
|
||||
```slack
|
||||
관리자: @로빙 이번 달 팀 근태 요약
|
||||
로빙: 📊 10월 개발팀 근태 현황
|
||||
|
||||
출근율: 95.2%
|
||||
평균 근무시간: 8시간 24분
|
||||
연차 사용: 12일 (4명)
|
||||
재택 근무: 8일 (3명)
|
||||
|
||||
[상세 리포트] [개인별 조회]
|
||||
```
|
||||
|
||||
## 11. 구현 로드맵
|
||||
|
||||
### Phase 1 (2주): 기본 출퇴근
|
||||
- 슬랙 명령어 기반 출퇴근
|
||||
- PostgreSQL 기록 저장
|
||||
- 일일 근태 조회
|
||||
|
||||
### Phase 2 (2주): 휴가 시스템
|
||||
- 연차/반차 신청 플로우
|
||||
- 승인 프로세스
|
||||
- 잔여 연차 관리
|
||||
|
||||
### Phase 3 (1주): 구글 연동
|
||||
- Calendar API 연동
|
||||
- 자동 일정 등록
|
||||
- Gmail 리포트
|
||||
|
||||
### Phase 4 (1주): AI 고도화
|
||||
- 자연어 처리 개선
|
||||
- 패턴 분석
|
||||
- 스마트 알림
|
||||
|
||||
## 12. 예상 성과
|
||||
- 개발 투자: 6주 (1명)
|
||||
- 목표 고객: 100개 스타트업
|
||||
- 월 절감액: 30명 기준 26만원
|
||||
- 연간 시장 규모: 3.1억원
|
||||
Loading…
x
Reference in New Issue
Block a user