📑 이 챕터에서 다룰 내용
AlbaFlow는 사장님이 알바생 출근·근무·임금을 관리하는 SaaS입니다. 사장님은 매장 운영에 바빠서 모든 알바생을 실시간 추적하기 어렵습니다. 봇이 24/7 모니터링하면서 중요한 항목만 알립니다.
- 사장님 알림 봇 — 출근·지각·결근·임금 alert
- 알바생 보조 봇 — 출퇴근 체크인·근무 시간 조회
- 노동법 주의 봇 — 주 52시간·휴게시간·임금 계산 검증
- 매장 운영 봇 — 매출·인건비·근태 추세
TSV 봇과의 핵심 차이점
| 항목 | TSV 봇 | AlbaFlow 봇 |
|---|---|---|
| 톤 | 분석 미디어 (객관적·중립) | 친근하고 신뢰감 (사업 운영 보조) |
| Position C | 베팅 X | 노동법 단정 X (법률 자문 X) |
| 사용자 | 일반 독자 | 사장님 + 알바생 (권한 다름) |
본질
사장님 한 명이 매장 1~5개 운영, 각 매장마다 알바생 5~20명. 매일 출근·근태·임금 변화를 실시간 추적하기는 불가능합니다. 봇이 핵심 항목만 알립니다.
알림 시점
[즉시 알림]
- 알바생 출근 5분 지나도 출근 없을 때 (지각)
- 알바생 결근 (출근 시간 30분 경과)
- 알바생 본인이 결근 신청 시
- 임금 계산 이상 (오버타임·휴일 가산)
[일별 알림 09:00]
- 어제 매출 + 인건비 + 마진
- 오늘 근무 예정 알바생 명단
- 이번 주 누적 근무시간 (주 52시간 임박 항목)
[주별 알림 — 월요일 09:00]
- 지난 주 매장별 매출
- 알바생별 근무시간 요약
- 임금 정산 자료
[월별 알림 — 1일 09:00]
- 한 달 매출 + 인건비 비율
- 최우수 알바생 (출근율·평가)
- 다음 달 예상 인건비
알림 형식 예시 (지각)
🚨 [지각 알림] 강남역점 알바생: 김철수 (학생 알바) 출근 예정: 09:00 현재 시간: 09:08 (8분 경과) 연락처: 010-1234-5678 [자동 액션] ✅ 알바생에게 카톡 자동 발송 "출근 시간이 지났습니다. 빨리 와주세요!" [권장 액션] - 8분 이상 지나면 직접 연락 권장 - 결근 처리는 30분 후 자동 진행 [지각 추세] - 김철수: 이번 달 3번째 지각 - 매장 평균: 1.2회 / 알바생 / 월
시스템 프롬프트
당신은 "AlbaFlow 사장님 알림 봇"입니다.
[역할]
- 사장님이 운영하는 매장의 알바생 출근·근태 추적
- 중요한 항목만 즉시 알림 (과도한 알림 X)
- 친근하고 도움이 되도록
[톤]
- 사장님 호칭: "사장님" 또는 이름
- 신뢰감 있고 전문적
- 그러나 딱딱하지 않게
[알림 우선순위]
1. 즉시 (출근·결근·임금 이상) — Discord 알림 + 카톡 (선택)
2. 매일 09:00 (어제 종합)
3. 주별 (월요일 09:00)
4. 월별 (1일 09:00)
[★ 절대 X 항목]
- 노동법 단정 ("주 52시간 위반입니다" → "주 52시간 임박합니다, 검토 권장")
- 법률 자문 ("이 알바생 해고해도 됩니다" → "근로계약서 검토 권장")
- 임금 계산 단정 ("최저임금 위반입니다" → "최저임금 계산 다시 확인 권장")
- 알바생 평가 단정 ("이 알바생 별로입니다" → 데이터만 제공)
[권장 표현]
- "임박했습니다" / "검토 권장"
- "확인 필요" / "참고하세요"
데이터 소스 (Python)
# albaflow_bot/data.py
from datetime import datetime, time, timedelta
from sqlalchemy import create_engine, text
import os
engine = create_engine(os.getenv("DATABASE_URL"))
def check_today_attendance(store_id: int) -> list:
"""오늘 출근 예정 vs 실제 체크"""
today = datetime.now().date()
with engine.connect() as conn:
result = conn.execute(text("""
SELECT
a.id as alba_id,
a.name,
a.phone,
s.start_time,
s.end_time,
c.checked_in_at,
CASE
WHEN c.checked_in_at IS NULL
AND CURRENT_TIME > s.start_time + INTERVAL '5 minutes'
THEN 'late'
WHEN c.checked_in_at IS NULL
AND CURRENT_TIME > s.start_time + INTERVAL '30 minutes'
THEN 'absent'
WHEN c.checked_in_at IS NOT NULL
THEN 'on_time'
END as status
FROM albas a
JOIN schedules s ON a.id = s.alba_id
LEFT JOIN check_ins c
ON a.id = c.alba_id AND DATE(c.checked_in_at) = :today
WHERE s.store_id = :store_id
AND s.work_date = :today
"""), {"store_id": store_id, "today": today})
return [dict(row) for row in result]
def calculate_weekly_hours(alba_id: int) -> float:
"""이번 주 누적 근무시간 (주 52시간 주의)"""
monday = datetime.now().date() - timedelta(days=datetime.now().weekday())
with engine.connect() as conn:
result = conn.execute(text("""
SELECT SUM(EXTRACT(EPOCH FROM (checked_out_at - checked_in_at))/3600) as hours
FROM check_ins
WHERE alba_id = :alba_id
AND checked_in_at >= :monday
"""), {"alba_id": alba_id, "monday": monday}).scalar() or 0
return round(result, 1)
자동 카톡 발송 (선택)
알바생에게 카톡 발송 시 카카오 비즈메시지 API를 사용합니다. 사업자 인증이 필요합니다.
# albaflow_bot/kakao.py — 선택 항목
import requests
def send_kakao_alert(phone: str, template_id: str, args: dict):
"""카카오 비즈메시지 발송"""
url = "https://kakaoapi.example.com/v1/send"
response = requests.post(url, json={
"phone": phone,
"template_id": template_id,
"template_args": args,
}, headers={
"Authorization": f"Bearer {os.getenv('KAKAO_BIZ_API_KEY')}"
})
return response.json()
# 사용 예시
send_kakao_alert(
phone="01012345678",
template_id="LATE_REMINDER",
args={"name": "철수", "store": "강남역점", "minutes": 8}
)
카카오 비즈메시지는 사업자 등록 + 사전 승인이 필요합니다.
처음에는 Discord/Telegram만으로 시작하는 것을 권장합니다.
본질
알바생이 자기 정보를 빠르게 조회합니다. 출퇴근 체크인·근무시간·예정 시급·휴가 신청 등을 명령어 하나로 처리합니다.
명령어 종류
| 명령어 | 기능 |
|---|---|
/checkin | 출근 체크 |
/checkout | 퇴근 체크 |
/myhours | 이번 달 근무시간 |
/mypay | 이번 달 예상 임금 |
/schedule | 다음 주 근무 예정 |
/leave | 휴가/결근 신청 |
/help | 도움말 |
알바생 응답 예시
[/checkin 입력] ✅ 출근 체크 완료! 매장: 강남역점 출근 시간: 09:00:32 (정시) 오늘 근무: 09:00 ~ 18:00 (9시간) 휴게: 12:00 ~ 13:00 (1시간) [이번 주 누적] 근무시간: 24h / 40h 예상 임금: ₩240,000 수고하세요! 💪
권한 관리 — 데이터 접근 제한
알바생은 자기 데이터만, 사장님은 자기 매장 데이터만 조회할 수 있어야 합니다.
# 알바생은 자기 데이터만 조회 가능
def is_authorized(alba_id: int, requested_alba_id: int) -> bool:
return alba_id == requested_alba_id
# 사장님은 자기 매장 알바생만 조회 가능
def is_owner_authorized(owner_id: int, store_id: int) -> bool:
with engine.connect() as conn:
result = conn.execute(text("""
SELECT 1 FROM stores WHERE id = :store_id AND owner_id = :owner_id
"""), {"store_id": store_id, "owner_id": owner_id}).scalar()
return result is not None
본질
한국 노동법은 복잡합니다. 봇이 단정적 자문을 하면 위험합니다. 그러나 "이 항목에서는 검토가 필요합니다"라고 알려주는 것은 가능합니다. 사장님이 모르고 위반할 항목을 미리 알려줍니다.
검출 항목
[주 52시간 임박]
- 알바생 누적 근무 50h 이상 → "주 52시간 임박, 추가 근무 검토 권장"
- 누적 60h 이상 → "이미 주 52시간 초과, 즉시 검토 필요"
[휴게시간 주의]
- 4시간 근무 시 30분 휴게
- 8시간 근무 시 1시간 휴게
- 봇이 자동 검증 → 휴게 없으면 알림
[야간·휴일 가산]
- 22시~06시 근무 = 50% 가산
- 일요일·법정공휴일 근무 = 50% 가산
- 봇이 자동 계산 + 임금 명세서 항목에 표시
[최저임금 주의]
- 2026년 한국 최저시급 (가입 시 최신 확인 필요)
- 시급이 최저 미만 시 → 알림
[근로계약서 주의]
- 알바생 가입 시 근로계약서 작성 여부 추적
- 미작성 시 → 사장님에게 알림
시스템 프롬프트 — 주의 항목
당신은 "AlbaFlow 노동법 주의 봇"입니다. [중요 — 절대 X 항목] - 법률 자문 (✗) — "이 항목에서 해고 가능합니다" - 노동법 단정 (✗) — "이건 위반입니다" - 법적 책임 (✗) — "이렇게 하시면 됩니다" [O 항목 — 주의 + 권장] - "검토가 필요합니다" - "노무사 자문 권장" - "확인이 필요한 항목입니다" - 데이터 + 사실만 제공 - 결정은 사장님이 (또는 노무사가) [참고 자료 제공] - 고용노동부 공식 사이트 링크 - 노무사 협회 검색 링크 - 무료 노무 상담 항목
알림 예시 (주 52시간 임박)
⚠️ [주 52시간 임박] 강남역점 — 김철수 이번 주 누적 근무: 50h 30m 주 52시간까지: 1h 30m 남음 [추가 근무 검토 권장] - 다음 주 일정 조정 권장 - 또는 5인 미만 사업장 여부 확인 (예외 항목) [참고] - 주 52시간제: https://www.moel.go.kr/... - 5인 미만 사업장 예외 항목: ... [★ 봇 원칙] 이 봇은 노동법 자문이 아닙니다. 단정적 판단이 필요한 항목은 노무사 자문을 권장합니다.
본질
사장님이 매장 운영 종합을 한눈에 보는 봇입니다. 매출·인건비·근태 추세를 숫자로 정리합니다.
매일 리포트 예시
🌅 AlbaFlow 매일 리포트 — 2026-05-09 [매출] 어제: ₩1,250,000 (+5% vs 어제) 이번 달 누적: ₩28,500,000 이번 달 목표: ₩35,000,000 (81% 달성) [인건비] 어제: ₩320,000 (매출 대비 25.6%) 이번 달 누적: ₩7,200,000 권장 비율: 25~30% [알바생] 어제 근무: 8명 / 8명 예정 (100% 출근) 지각: 1건 (김철수, 8분) 결근: 0건 [이번 주 누적] - 알바생별 근무시간 (주 52시간 주의) - 예상 임금 (정산 준비) [알림] ⚠️ 김철수 — 주 52시간 임박 (50h) ✅ 박영희 — 우수 알바 (지각·결근 0)
시스템 프롬프트
당신은 "AlbaFlow 매장 운영 봇"입니다. [역할] - 사장님에게 매장 운영 종합 정보 제공 - 의사결정에 도움이 되는 항목만 강조 - 노동법 주의 항목은 ⚠️ 강조 [톤] - 사장님 호칭 - 경영자 관점 (매출·비용·마진) - 알바생 관점도 균형 (불만 추세·이직 가능성) [데이터 분석 항목] - 매출 추세: 일별·주별·월별 - 인건비 비율: 매출 대비 (권장 25~30%) - 알바생 추세: 출근율·지각율·이직율 - 시즌 항목: 명절·휴가철 영향
// /home/ubuntu/albaflow-bots/ecosystem.config.js
module.exports = {
apps: [
{
name: "albaflow-owner",
script: "owner_bot/main.py",
interpreter: "python3",
autorestart: true,
},
{
name: "albaflow-alba",
script: "alba_bot/main.js",
autorestart: true,
},
{
name: "albaflow-labor-law",
script: "labor_law_bot/main.py",
interpreter: "python3",
cron_restart: "0 0 * * *", // 매일 자정 재시작
},
{
name: "albaflow-store",
script: "store_bot/main.py",
interpreter: "python3",
autorestart: true,
},
],
};
| 항목 | TSV 봇 | AlbaFlow 봇 |
|---|---|---|
| 사용자 | 일반 독자 | 사장님 + 알바생 (권한 다름) |
| 톤 | 분석 미디어 | 사업 운영 보조 |
| Position C | 베팅 X | 노동법 단정 X |
| 알림 시점 | 매일·발행 시 | 즉시·매일·주별·월별 |
| 데이터 | 발행·구독·B2B | 출퇴근·근무·매출 |
| 외부 통합 | 없음 | 카톡·SMS (선택) |
- ☑ 4 봇 모두 안정 작동
- ☑ 출근 알림 즉시 도달 (5분 안)
- ☑ 노동법 주의 알림 정상 작동
- ☑ 알바생 명령어 응답 (3초 안)
- ☑ 일별 리포트 정상 (09:00)
- ☑ 카톡 발송 정상 (사업자 등록 시)
- ☑ 매장 운영 종합 정확
[★ 운영 예상]
- 매장 1개 + 알바생 5명 = 봇 4개 안정 운영
- 다중 매장 (5개 이상) 시 자원 검토
- 1️⃣ 사장님 알림 봇: 출근·지각·결근 즉시 알림 + 일·주·월별 리포트
- 2️⃣ 알바생 보조 봇: 명령어 하나로 출퇴근 체크·근무시간·임금 조회
- 3️⃣ 노동법 주의 봇: 주 52시간·휴게·최저임금 자동 감지 + "검토 권장"만 제공
- 4️⃣ 매장 운영 봇: 매출·인건비·알바생 추세 매일 종합
- 5️⃣ 핵심 원칙: 노동법 단정 X, 법률 자문 X — "검토 권장"만
- 6️⃣ 비용: 약 $30~50/월 (Anthropic + Cloudflare + 카톡 비즈)
AlbaFlow 봇은 사장님의 운영 시간을 절약합니다.
출근·근태·임금을 자동 추적하고, 노동법 주의 항목은 즉시 알려줍니다. TSV 봇과 다른 핵심: 노동법 단정 X, 법률 자문 X.