Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
통화 기록을 조회·분석하고 백업·알림을 관리할 수 있는 대시보드
Translation pending
AI summary · website content
BusinessPython · JavaScriptGitHub @seongjoo-cmdOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗아웃바운드 에이전트의 발신 통화 기록(CTI)을 집계해 보여주는 웹 대시보드입니다. Python 표준 라이브러리와 SQLite만 사용하며 별도 설치가 필요 없습니다(Python 3.10+). 차트는 static/vendor/chart.umd.js(Chart.js 4.4.1, MIT)를 내장해 오프라인에서도 동작합니다.
Cti) Import → 설정은 그대로 두고 Deployhttps://….vercel.app)로 접속 → admin / admin1234 로 로그인지금 Vercel 버전은 가짜 데이터로 화면을 확인하는 용도입니다(화면 위에 "데모 데이터" 표시).
CTI_ADMIN_PASSWORD(와 CTI_ADMIN_USER)를 넣으면 데모 계정 대신 그 관리자 계정이 만들어집니다.CTI_TZ, 기본 Asia/Seoul).녹취 파일이 있는 구글 드라이브 공유 폴더를 컴퓨터 폴더처럼 연결해서 읽습니다. 컴퓨터 한 대에만 설치하면 됩니다.
G: 드라이브가 생기고, 그 안에서 녹취 폴더를 찾을 수 있습니다(예: G:\공유 드라이브\녹취).Code → Download ZIP 후 원하는 곳(예: C:\CTI)에 압축을 풉니다.start.bat 더블클릭
CTI_SYNC_ROOT= 뒤를 녹취 폴더 경로로 바꾸고 저장합니다.
탐색기 주소창에서 경로를 복사해 붙여 넣으면 정확합니다.start.bat 을 실행하면 관리자 아이디·비밀번호를 만들고, 브라우저에 대시보드가 열립니다.Win + R → shell:startup 입력 → 열린 폴더에 start.bat 바로 가기를 넣습니다.config.bat 의 CTI_HOST=0.0.0.0(기본값)이면 휴대폰에서도 접속할 수 있습니다. 처음 실행 때 Windows 방화벽 창이 뜨면 허용을 누르세요. 검은 창에 휴대폰·다른 컴퓨터에서: http://… 주소가 나옵니다.
http://<컴퓨터의 Tailscale 주소 100.x.x.x>:8080 으로 어디서나 접속됩니다. 인터넷에 공개되지 않고 Tailscale에 로그인한 기기에서만 보여서, 고객 데이터를 외부에 노출하지 않습니다.계정 추가·비밀번호 변경: 프로그램 폴더에서 py -m scripts.create_user
사무실 다른 컴퓨터에서도 보려면 config.bat 에서 CTI_HOST=0.0.0.0 으로 바꾸고, 다른 컴퓨터에서 http://<설치한 컴퓨터 IP>:8080 으로 접속합니다(Windows 방화벽 허용 필요).
python -m scripts.seed_demo --reset # 데모 데이터(에이전트 6명, 최근 70일 통화, 오늘 녹취 WAV 24개)
python -m cti.app # http://127.0.0.1:8080
데모 계정: admin / admin1234(관리자), viewer / viewer1234(조회 전용)
| 환경 변수 | 기본값 | 설명 |
|---|---|---|
CTI_DB | data/cti.db | SQLite 파일 |
CTI_SYNC_ROOT | data/sync | 녹취 동기화 폴더 루트 (<루트>/<에이전트 이름>/...) |
CTI_BACKUP_ROOT | data/backup | 백업 zip 저장 위치 (<루트>/<에이전트ID>/<시각>.zip) |
CTI_HOST, CTI_PORT | 127.0.0.1, 8080 | 바인드 주소 |
CTI_INGEST_INTERVAL | 300 | 녹취 폴더 자동 적재 주기(초), 0이면 끔 |
settings.min_call_sec, 기본 10초)
duration_sec 평균duration_sec < min_call_sec (짧은 통화 비율과 통화 목록 필터에만 쓰임)min_call_sec(0~600초), 용량 기반 추정 비트레이트 변경, 녹취 적재 현황과 "지금 가져오기". 관리자만 저장할 수 있고 조회 계정은 읽기 전용입니다. 바꾸면 짧은 통화 비율과 통화 목록의 '짧은 통화 빼기'에 바로 적용됩니다(처리 건수·ATT 는 짧은 통화도 포함).testzip)과 파일 수를 검증동기화 폴더가 CTI_SYNC_ROOT 밖을 가리키면 거부합니다. 같은 에이전트에 대한 동시 실행도 막습니다.
● 연결됨 · 3분 전 동기화 처럼 보입니다.
Apps Script 가 대시보드에 들를 때마다 시각을 남기고, 회차가 끝나면 결과(POST /api/drive/run)를 알려 줍니다.
25분 넘게 소식이 없으면 "멈춘 것 같아요", 마지막 회차가 실패했으면 "오류"와 그 메시지를 보여 줍니다.
(결과·오류 알림과 빈 에이전트 폴더 등록은 새 스크립트부터라서, 설정에서 스크립트 복사로 한 번 다시 붙여넣어 주세요.)chat:write, users:read, users:read.email 추가 → Install to Workspacexoxb-…)을 설정 > 슬랙 알림의 봇 토큰에 저장(또는 서버 환경 변수 SLACK_BOT_TOKEN)U…), 채널 ID(C…) 또는 #채널이름(봇을 채널에 초대해야 함)녹취 파일 1개 = 통화 1건입니다.
CTI_SYNC_ROOT/
김민지/ ← 최상위 폴더 이름 = 에이전트 (처음 보면 자동 등록)
통화 녹음 010-1234-5678_261012_103015.m4a
01098765432_20261012_104500.wav
YYYYMMDD_HHMMSS, YYMMDD_HHMMSS, YYYY-MM-DD HH-MM-SS, YYYYMMDDHHMMSS010-1234-5678, 01012345678, +82 10 …, 지역번호)파일 크기 ÷ 비트레이트(설정에서 변경)customer_masked: 화면 표시용 010-****-5678customer_phone: 전체 번호 010-1234-5678 — 관리자에게만 화면·API 로 보여 줍니다(뷰어는 가린 번호)customer_key: DB별 비밀키로 만든 HMAC — 고객 수(중복 제외) 집계용, 원래 번호로 되돌릴 수 없음source_key)으로만 저장하고, 화면의 실패 목록도 마스킹합니다.단, 녹취 파일 자체(동기화 폴더·백업 zip)의 파일 이름에는 원래 번호가 남아 있으니 폴더 접근 권한은 따로 관리해야 합니다.
cti/db.py 참고.
python -m unittest discover -s tests -t .