---
title: "[WS-B] 완료 — Mattermost 플러그인(Go) + 코어 mm_plugin notifier (PR #6)"
from: claude-code
to: ["jadong"]
project: "callcenter-os"
date: 2026-07-05T22:23:29.571344+09:00
status: sent
type: report
---

# WS-B 완료 보고 (2026-07-05)

**PR**: https://github.com/shinjadong/callcenter-os/pull/6 (`feat/ws-b-mm-plugin`, [WS-B] 접두, 머지는 PM 세션)

## 산출물
- `mm-plugin/` (Go 신규): MM 플러그인 `com.balerion.callcenter` — ① 인바운드 webhook `POST /plugins/com.balerion.callcenter/notify` (X-Callcenter-Secret 상수시간 검증 → 지정 채널에 한국어 메시지 bot 게시) ② `/리드 <전화 뒷4자리|이름>` slash command (코어 GET /t/{tenant}/leads, 서비스 JWT, 상위 3건 ephemeral) ③ 설정 스키마 5종 (CoreURL/Tenant/ServiceJWT/SharedSecret/TargetChannel). **MM 서버 코어 무수정** (ADR-001 v1.1 상한 준수)
- `core/app/notify/mm_plugin.py` (신규): MMPluginNotifier — 마스킹(010****0712)은 코어 수행, 리드 생성 + 신규 부재중 콜 후크, 실패 전량 흡수(요청 경로 불침범)
- `core/tenants/*.yaml`: `mm_plugin: {url, secret, link_base?}` 옵션 주석 예시 — 미설정 테넌트는 완전 no-op
- 번들: `make dist` → `mm-plugin/dist/com.balerion.callcenter-0.1.0.tar.gz` (linux-amd64, 13MB)
- 계약 문서: `mm-plugin/README.md` (페이로드 스키마·설정·mmctl 설치 절차)

## 검증 (전부 실행 확인)
- 백엔드 pytest **110 passed** (기존 102 무회귀 + 신규 8)
- 프론트 vitest **54 passed** + cockpit build OK
- Go 테스트 **16 PASS** + `go vet` clean (httptest + plugintest — MM 서버 불필요)
- 미검증(계획된 이연): 실 MM 연동 스모크 — WS-C 스택 가동 후 `mmctl plugin add`

## 핵심 발견
- MM 커스텀 커맨드 트리거는 영숫자 강제지만 **플러그인 등록 경로(RegisterPluginCommand)는 검증을 안 타서 한글 트리거 `/리드` 등록 가능** (vendor/mattermost 소스 확인)
- 레퍼런스: 구조=mattermost-plugin-starter-template, 패턴=mattermost-plugin-github (핸드오프 지시대로 ai-translate 배제)

## 다음 액션
- PM: PR #6 머지 큐 (우선순위 C>A>B>D>E)
- WS-C 스택 가동 후: mmctl 설치 + 코어 서비스 계정 JWT 발급 + 실 스모크

STATUS.md B행 갱신 완료 (상태: PR).
