create-mintly 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,102 @@
1
+ # Mintly
2
+
3
+ > Claude Code가 회의 자료를 읽고, 질문하고, 분석하고, HTML 대시보드까지 만드는 올인원 킷
4
+
5
+ ## 설치
6
+
7
+ ```bash
8
+ # 방법 1: npx
9
+ npx create-mintly my-meetings
10
+
11
+ # 방법 2: git clone
12
+ git clone https://github.com/user/mintly.git
13
+ cd mintly && node bin/init.js my-meetings
14
+ ```
15
+
16
+ ## 사용법
17
+
18
+ ```bash
19
+ cd my-meetings
20
+
21
+ # 1. sources/ 폴더에 회의 파일 넣기 (txt, md)
22
+ # 2. Claude Code 열기
23
+ # 3. "시작해줘" 입력
24
+ ```
25
+
26
+ Claude Code가 자동으로:
27
+
28
+ 1. 파일을 스캔하고 bundle 후보를 정리합니다
29
+ 2. 회의 유형을 자동 감지합니다 (10가지 지원)
30
+ 3. 부족한 정보만 질문합니다
31
+ 4. `brief.md` → `analysis.md` → `dashboard.html` 순서로 생성합니다
32
+
33
+ ## 결과물
34
+
35
+ ```
36
+ outputs/<bundle-id>/
37
+ ├── brief.md # 작업 브리프
38
+ ├── analysis.md # 구조화된 분석 문서
39
+ └── dashboard.html # 시각화 대시보드 (브라우저에서 열기)
40
+ ```
41
+
42
+ ## 지원 회의 유형
43
+
44
+ | 유형 | 추가 섹션 |
45
+ |------|----------|
46
+ | 팀 회의 / 주간회의 | 의사결정, 차단 요소 |
47
+ | 1:1 미팅 | 피드백, 목표 진행상황 |
48
+ | 고객/파트너 미팅 | 파이프라인, 프로파일 |
49
+ | 브레인스토밍 | 아이디어 목록 |
50
+ | 회고 / 리뷰 | 잘한 점/개선할 점/약속 |
51
+ | 프로젝트 킥오프 | 범위, 역할, 마일스톤 |
52
+ | 의사결정 회의 | 선택지 비교, 결정 근거 |
53
+ | 경영/이사회 | KPI, 전략 결정 |
54
+ | 영업/제휴 | 파이프라인, 프로파일, 후속 전략 |
55
+ | 워크숍 / 교육 | 테이크어웨이, 학습 적용 |
56
+
57
+ ## 대시보드 특징
58
+
59
+ - **JSON+JS 하이브리드**: Claude가 JSON 데이터만 교체, JS가 자동 렌더링
60
+ - **조건부 섹션**: 데이터가 있는 섹션만 표시, 빈 섹션은 자동 숨김
61
+ - **Self-contained**: 외부 CDN 없이 단일 HTML 파일로 동작
62
+ - **반응형**: 데스크탑/모바일 자동 대응
63
+ - **인쇄 가능**: 프린트 스타일 내장
64
+
65
+ ## 워크스페이스 구조
66
+
67
+ ```
68
+ my-meetings/
69
+ ├── CLAUDE.md # Claude Code 실행 지침
70
+ ├── sources/ # 회의 파일을 넣는 곳
71
+ │ └── README.md
72
+ ├── outputs/ # 결과물 저장
73
+ │ └── README.md
74
+ ├── config.md # 사용자 설정 (선택)
75
+ └── .mintly/ # 킷 내부 파일
76
+ ├── templates/ # brief, analysis, dashboard 템플릿
77
+ ├── recipes/ # 분석 레시피
78
+ └── schema/ # 데이터 스키마
79
+ ```
80
+
81
+ ## 파일 형식
82
+
83
+ | 형식 | 설명 |
84
+ |------|------|
85
+ | `*.txt` | 녹취 전사본 |
86
+ | `*.md` | 요약본 또는 관련 문서 |
87
+ | `*.m4a` / `*.mp3` | 녹음 파일 (전사본 필요) |
88
+
89
+ 파일명에 `YYMMDD_제목` 형식을 사용하면 자동 인식됩니다.
90
+
91
+ ## 예시 데이터
92
+
93
+ `examples/` 폴더에 4가지 유형의 예시 JSON이 포함되어 있습니다:
94
+
95
+ - `sales-partnership.json` — 영업/제휴 (파이프라인, 프로파일)
96
+ - `product-team.json` — 팀 회의 (의사결정, 액션 아이템)
97
+ - `retrospective.json` — 회고 (잘한 점/개선할 점/약속)
98
+ - `one-on-one.json` — 1:1 미팅 (피드백, 목표 진행상황)
99
+
100
+ ## License
101
+
102
+ MIT
package/bin/init.js ADDED
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require("fs");
4
+ const path = require("path");
5
+
6
+ const targetName = process.argv[2] || "my-meetings";
7
+ const targetDir = path.resolve(process.cwd(), targetName);
8
+ const kitDir = path.resolve(__dirname, "..", "kit");
9
+
10
+ function copyDir(src, dest) {
11
+ fs.mkdirSync(dest, { recursive: true });
12
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
13
+ const srcPath = path.join(src, entry.name);
14
+ const destPath = path.join(dest, entry.name);
15
+ if (entry.isDirectory()) {
16
+ copyDir(srcPath, destPath);
17
+ } else {
18
+ fs.copyFileSync(srcPath, destPath);
19
+ }
20
+ }
21
+ }
22
+
23
+ function createWorkspace() {
24
+ if (fs.existsSync(targetDir)) {
25
+ console.error(`\n 이미 존재하는 폴더입니다: ${targetName}\n`);
26
+ process.exit(1);
27
+ }
28
+
29
+ console.log(`\n Mintly 워크스페이스를 생성합니다...\n`);
30
+
31
+ // 메인 폴더 생성
32
+ fs.mkdirSync(targetDir, { recursive: true });
33
+
34
+ // .mintly/ 에 킷 내부 파일 복사
35
+ const hiddenKit = path.join(targetDir, ".mintly");
36
+ copyDir(path.join(kitDir, "templates"), path.join(hiddenKit, "templates"));
37
+ copyDir(path.join(kitDir, "recipes"), path.join(hiddenKit, "recipes"));
38
+ copyDir(path.join(kitDir, "schema"), path.join(hiddenKit, "schema"));
39
+
40
+ // CLAUDE.md 복사 + 워크스페이스 경로 반영
41
+ let claudeMd = fs.readFileSync(path.join(kitDir, "CLAUDE.md"), "utf-8");
42
+ claudeMd = claudeMd.replace(/\{\{workspace\}\}/g, targetName);
43
+ fs.writeFileSync(path.join(targetDir, "CLAUDE.md"), claudeMd);
44
+
45
+ // sources/ 폴더 + 안내 README
46
+ fs.mkdirSync(path.join(targetDir, "sources"));
47
+ fs.writeFileSync(
48
+ path.join(targetDir, "sources", "README.md"),
49
+ `# sources/
50
+
51
+ 이 폴더에 회의 자료를 넣어주세요.
52
+
53
+ ## 지원 파일 형식
54
+
55
+ - \`.txt\` — 녹취 전사본 (transcript)
56
+ - \`.md\` — 요약본 또는 관련 문서
57
+ - \`.m4a\` / \`.mp3\` — 녹음 파일 (전사본이 함께 필요합니다)
58
+
59
+ ## 파일명 규칙 (권장)
60
+
61
+ \`YYMMDD_제목.확장자\` 형식을 사용하면 Claude가 자동으로 날짜와 제목을 인식합니다.
62
+
63
+ 예시:
64
+ - \`260315_온보딩개선회의.txt\`
65
+ - \`260315_온보딩개선회의_요약.md\`
66
+ - \`260315_온보딩개선회의.m4a\`
67
+
68
+ ## 시작하기
69
+
70
+ 파일을 넣은 후 Claude Code를 열고 **"시작해줘"** 라고 입력하세요.
71
+ `
72
+ );
73
+
74
+ // outputs/ 폴더 + README
75
+ fs.mkdirSync(path.join(targetDir, "outputs"));
76
+ fs.writeFileSync(
77
+ path.join(targetDir, "outputs", "README.md"),
78
+ `# outputs/
79
+
80
+ Claude Code가 생성한 결과물이 저장되는 폴더입니다.
81
+
82
+ ## 결과물 구조
83
+
84
+ \`\`\`
85
+ outputs/<bundle-id>/
86
+ ├── brief.md ← 작업 브리프
87
+ ├── analysis.md ← 분석 문서
88
+ └── dashboard.html ← 시각화 대시보드
89
+ \`\`\`
90
+
91
+ \`<bundle-id>\`는 원본 파일의 공통 prefix를 기반으로 자동 생성됩니다.
92
+ `
93
+ );
94
+
95
+ // 완료 메시지
96
+ console.log(` ${targetName}/ 워크스페이스가 생성되었습니다.\n`);
97
+ console.log(` 다음 단계:`);
98
+ console.log(` 1. cd ${targetName}`);
99
+ console.log(` 2. sources/ 폴더에 회의 파일 넣기`);
100
+ console.log(` 3. Claude Code를 열고 "시작해줘" 입력\n`);
101
+ }
102
+
103
+ createWorkspace();
@@ -0,0 +1,119 @@
1
+ {
2
+ "meta": {
3
+ "title": "주니어 개발자 1:1 면담",
4
+ "subtitle": "Q1 성과 리뷰 및 성장 목표 점검",
5
+ "type": "one-on-one",
6
+ "date": "2026-03-12",
7
+ "sources": ["260312_1on1_김주니어.txt"]
8
+ },
9
+ "summary": {
10
+ "conclusion": "코드 리뷰 스킬과 독립적 태스크 수행 능력이 눈에 띄게 향상됨. API 설계 역량을 다음 분기 성장 목표로 설정.",
11
+ "status": "정기 면담 완료",
12
+ "next_action": "API 설계 학습 자료 공유 + 다음 프로젝트에서 API 설계 리드 기회 배정"
13
+ },
14
+ "signals": [
15
+ {
16
+ "title": "코드 리뷰 품질이 동료 평가에서 긍정적으로 언급됨",
17
+ "severity": "low",
18
+ "evidence": "지난 스프린트에서 리뷰 코멘트 품질에 대한 팀원 2명의 긍정 피드백"
19
+ },
20
+ {
21
+ "title": "독립적으로 완료한 태스크 비율이 60%→85%로 상승",
22
+ "severity": "low",
23
+ "evidence": "Q4 대비 시니어 도움 요청 빈도 감소"
24
+ }
25
+ ],
26
+ "risks": [
27
+ {
28
+ "title": "새로운 도전 과제 없으면 성장 정체 가능",
29
+ "severity": "medium",
30
+ "evidence": "본인이 현재 업무가 반복적으로 느껴진다고 표현"
31
+ }
32
+ ],
33
+ "timeline": [
34
+ {
35
+ "date": "2026-01-15",
36
+ "title": "Q1 목표 설정",
37
+ "type": "milestone",
38
+ "note": "코드 리뷰 + 독립 태스크 수행 목표"
39
+ },
40
+ {
41
+ "date": "2026-03-12",
42
+ "title": "Q1 1:1 면담",
43
+ "type": "meeting",
44
+ "note": "성과 리뷰 및 Q2 목표 논의"
45
+ },
46
+ {
47
+ "date": "2026-04-01",
48
+ "title": "Q2 목표 시작",
49
+ "type": "target",
50
+ "note": "API 설계 역량 강화"
51
+ }
52
+ ],
53
+ "actions": [
54
+ {
55
+ "title": "API 설계 학습 자료 공유",
56
+ "owner": "팀 리드",
57
+ "due_date": "2026-03-15",
58
+ "priority": "medium",
59
+ "status": "todo"
60
+ },
61
+ {
62
+ "title": "다음 프로젝트에서 API 설계 리드 기회 배정",
63
+ "owner": "팀 리드",
64
+ "due_date": "2026-04-01",
65
+ "priority": "high",
66
+ "status": "todo"
67
+ },
68
+ {
69
+ "title": "Q2 성장 목표 문서화",
70
+ "owner": "김주니어",
71
+ "due_date": "2026-03-19",
72
+ "priority": "medium",
73
+ "status": "todo"
74
+ }
75
+ ],
76
+ "feedback": {
77
+ "given": [
78
+ {
79
+ "topic": "코드 리뷰 품질",
80
+ "content": "리뷰 코멘트가 구체적이고 건설적으로 발전함. 특히 성능 관련 코멘트가 팀에 도움이 되고 있음.",
81
+ "tone": "긍정"
82
+ },
83
+ {
84
+ "topic": "커뮤니케이션",
85
+ "content": "기술적 설명을 비개발 직군에게 전달할 때 좀 더 쉬운 비유를 사용하면 좋겠음.",
86
+ "tone": "건설적"
87
+ }
88
+ ],
89
+ "received": [
90
+ {
91
+ "topic": "업무 환경",
92
+ "content": "현재 업무가 반복적으로 느껴지기 시작함. 새로운 도전 기회가 있으면 좋겠음.",
93
+ "tone": "솔직"
94
+ },
95
+ {
96
+ "topic": "팀 문화",
97
+ "content": "코드 리뷰 문화가 잘 정착되어 있어서 배우기 좋은 환경이라고 생각함.",
98
+ "tone": "긍정"
99
+ }
100
+ ],
101
+ "goals_progress": [
102
+ {
103
+ "goal": "코드 리뷰 참여율 주 3회 이상",
104
+ "status": "done",
105
+ "note": "평균 주 4.2회 달성"
106
+ },
107
+ {
108
+ "goal": "독립적 태스크 완료율 80% 이상",
109
+ "status": "done",
110
+ "note": "85% 달성 (Q4: 60%)"
111
+ },
112
+ {
113
+ "goal": "기술 공유 세션 1회 발표",
114
+ "status": "doing",
115
+ "note": "3월 말 발표 예정"
116
+ }
117
+ ]
118
+ }
119
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "meta": {
3
+ "title": "모바일 온보딩 개선 회의",
4
+ "subtitle": "활성화율 개선을 위한 실험안 정리",
5
+ "type": "team-sync",
6
+ "date": "2026-03-15",
7
+ "sources": ["onboarding-review.txt", "onboarding-summary.md"]
8
+ },
9
+ "summary": {
10
+ "conclusion": "신규 온보딩 플로우를 A/B 2가지 버전으로 실험하기로 합의",
11
+ "status": "planning",
12
+ "next_action": "QA 범위 확정 후 실험 시작"
13
+ },
14
+ "signals": [
15
+ {
16
+ "title": "첫 화면 복잡성이 이탈의 주요 원인으로 확인됨",
17
+ "severity": "high",
18
+ "evidence": "사용자 피드백과 회의 내 반복 발언이 일치"
19
+ },
20
+ {
21
+ "title": "실험 자체에는 전원 합의",
22
+ "severity": "low",
23
+ "evidence": "팀 전체가 A/B 테스트 방식에 동의"
24
+ }
25
+ ],
26
+ "risks": [
27
+ {
28
+ "title": "QA 일정 부족으로 실험 일정이 밀릴 수 있음",
29
+ "severity": "high",
30
+ "evidence": "QA 범위 확정이 모든 후속 일정의 선행 조건으로 언급됨"
31
+ }
32
+ ],
33
+ "timeline": [
34
+ {
35
+ "date": "2026-03-15",
36
+ "title": "온보딩 개선 회의",
37
+ "type": "meeting",
38
+ "note": "핵심 이탈 지점과 실험안 2개 도출"
39
+ },
40
+ {
41
+ "date": "2026-03-18",
42
+ "title": "QA 범위 확정",
43
+ "type": "milestone",
44
+ "note": "테스트 범위와 릴리즈 조건 정리"
45
+ },
46
+ {
47
+ "date": "2026-03-22",
48
+ "title": "A/B 테스트 시작",
49
+ "type": "target",
50
+ "note": "실험 배포 목표일"
51
+ }
52
+ ],
53
+ "actions": [
54
+ {
55
+ "title": "실험안 A/B 화면 확정",
56
+ "owner": "디자이너",
57
+ "due_date": "2026-03-17",
58
+ "priority": "high",
59
+ "status": "doing"
60
+ },
61
+ {
62
+ "title": "활성화 지표 정의",
63
+ "owner": "PM",
64
+ "due_date": "2026-03-18",
65
+ "priority": "high",
66
+ "status": "todo"
67
+ },
68
+ {
69
+ "title": "QA 범위 협의",
70
+ "owner": "QA",
71
+ "due_date": "2026-03-18",
72
+ "priority": "medium",
73
+ "status": "todo"
74
+ }
75
+ ],
76
+ "decisions": [
77
+ {
78
+ "topic": "실험 방식 결정",
79
+ "options": ["A/B 테스트", "단계적 롤아웃", "카나리 배포"],
80
+ "chosen": "A/B 테스트",
81
+ "rationale": "가장 빠르게 통계적 유의성 확보 가능"
82
+ }
83
+ ],
84
+ "unresolved": [
85
+ {
86
+ "title": "활성화 지표를 어디까지 제품 목표로 볼지 확정 필요",
87
+ "owner": "PM",
88
+ "status": "pending"
89
+ }
90
+ ],
91
+ "blockers": [
92
+ {
93
+ "title": "QA 슬롯 확정 전 릴리즈 날짜를 잠글 수 없음",
94
+ "owner": "QA",
95
+ "status": "active",
96
+ "note": "테스트 범위와 회귀 범위 확인 필요"
97
+ }
98
+ ]
99
+ }
@@ -0,0 +1,112 @@
1
+ {
2
+ "meta": {
3
+ "title": "Q1 스프린트 회고",
4
+ "subtitle": "지난 분기 스프린트 운영에 대한 팀 회고",
5
+ "type": "retrospective",
6
+ "date": "2026-03-14",
7
+ "sources": ["260314_Q1회고.txt", "260314_Q1회고_요약.md"]
8
+ },
9
+ "summary": {
10
+ "conclusion": "배포 프로세스와 코드 리뷰 품질은 개선되었으나, 스프린트 스코프 관리와 QA 리소스 배분에 지속적 개선이 필요",
11
+ "status": "회고 완료 → 개선 약속 확정",
12
+ "next_action": "스코프 관리 가이드라인 작성 및 다음 스프린트에서 시범 적용"
13
+ },
14
+ "signals": [
15
+ {
16
+ "title": "배포 프로세스 자동화로 배포 시간 40% 단축",
17
+ "severity": "low",
18
+ "evidence": "CI/CD 파이프라인 도입 후 배포 시간 평균 15분→9분"
19
+ },
20
+ {
21
+ "title": "코드 리뷰 문화가 정착되면서 프로덕션 버그 감소",
22
+ "severity": "low",
23
+ "evidence": "Q4 대비 프로덕션 핫픽스 30% 감소"
24
+ },
25
+ {
26
+ "title": "스프린트 후반부 스코프 변경이 반복됨",
27
+ "severity": "high",
28
+ "evidence": "3번의 스프린트 중 2번에서 후반부 스코프 추가 발생"
29
+ }
30
+ ],
31
+ "risks": [
32
+ {
33
+ "title": "QA 리소스 부족으로 테스트 커버리지가 낮아질 수 있음",
34
+ "severity": "high",
35
+ "evidence": "QA 1명이 3개 프로젝트를 동시에 담당 중"
36
+ },
37
+ {
38
+ "title": "스코프 관리 실패가 팀 번아웃으로 이어질 수 있음",
39
+ "severity": "medium",
40
+ "evidence": "스프린트 마지막 주에 야근이 집중됨"
41
+ }
42
+ ],
43
+ "timeline": [
44
+ {
45
+ "date": "2026-01-06",
46
+ "title": "Q1 스프린트 시작",
47
+ "type": "milestone",
48
+ "note": "3개 스프린트 계획"
49
+ },
50
+ {
51
+ "date": "2026-02-14",
52
+ "title": "CI/CD 파이프라인 도입",
53
+ "type": "milestone",
54
+ "note": "배포 자동화 완료"
55
+ },
56
+ {
57
+ "date": "2026-03-14",
58
+ "title": "Q1 회고",
59
+ "type": "meeting",
60
+ "note": "전체 팀 참여"
61
+ },
62
+ {
63
+ "date": "2026-03-17",
64
+ "title": "스코프 관리 가이드라인 작성",
65
+ "type": "follow-up",
66
+ "note": "PM 주도"
67
+ }
68
+ ],
69
+ "actions": [
70
+ {
71
+ "title": "스프린트 스코프 관리 가이드라인 작성",
72
+ "owner": "PM",
73
+ "due_date": "2026-03-17",
74
+ "priority": "high",
75
+ "status": "todo"
76
+ },
77
+ {
78
+ "title": "QA 리소스 추가 배정 요청",
79
+ "owner": "팀 리드",
80
+ "due_date": "2026-03-21",
81
+ "priority": "high",
82
+ "status": "todo"
83
+ },
84
+ {
85
+ "title": "스프린트 중간 체크포인트 도입",
86
+ "owner": "PM",
87
+ "due_date": "2026-03-24",
88
+ "priority": "medium",
89
+ "status": "todo"
90
+ }
91
+ ],
92
+ "retrospective": {
93
+ "went_well": [
94
+ "CI/CD 파이프라인 도입으로 배포 시간 40% 단축",
95
+ "코드 리뷰 참여율이 95%로 안정화",
96
+ "프로덕션 핫픽스가 Q4 대비 30% 감소",
97
+ "팀 내 기술 공유 세션이 주 1회로 정착"
98
+ ],
99
+ "to_improve": [
100
+ "스프린트 후반부 스코프 변경이 3번 중 2번 발생 — 스코프 확정 기준이 불명확",
101
+ "QA 리소스가 부족해 테스트가 병목이 됨 — 1명이 3개 프로젝트 동시 담당",
102
+ "기술 부채 해소 시간이 계획의 50%만 사용됨 — 기능 개발에 밀림",
103
+ "스프린트 마지막 주에 야근이 집중됨 — 추정 정확도 개선 필요"
104
+ ],
105
+ "commitments": [
106
+ "스프린트 스코프 확정 후 변경 시 팀 리드 승인 필수 (PM, 즉시 적용)",
107
+ "QA 리소스 1명 추가 배정 요청 (팀 리드, 3/21까지)",
108
+ "스프린트 중간 체크포인트 도입해서 진행률 점검 (PM, 3/24부터)",
109
+ "기술 부채 해소를 스프린트 목표에 명시적으로 포함 (전원, 다음 스프린트부터)"
110
+ ]
111
+ }
112
+ }
@@ -0,0 +1,127 @@
1
+ {
2
+ "meta": {
3
+ "title": "어수(ES) 파트너십 미팅",
4
+ "subtitle": "프랜차이즈 대회 티켓 및 운영 솔루션 제휴 논의",
5
+ "type": "sales",
6
+ "date": "2026-03-04",
7
+ "sources": ["260304_어수.txt", "260304_어수_요약.md"]
8
+ },
9
+ "summary": {
10
+ "conclusion": "10개 직영점 프랜차이즈와 대회 티켓 및 운영 솔루션 제휴를 논의. 본사 통합 관리에 높은 관심 확인.",
11
+ "status": "meeting 완료 → 내부 검토 중",
12
+ "next_action": "테스트 계정 제공 + 운영 계획서 초안 작성"
13
+ },
14
+ "signals": [
15
+ {
16
+ "title": "본사 통합 관리에 높은 관심",
17
+ "severity": "high",
18
+ "evidence": "본사/지점 관리, 비용 처리, 티켓 유통 방지 질문이 반복됨"
19
+ },
20
+ {
21
+ "title": "테스트 계정 적극 요청",
22
+ "severity": "medium",
23
+ "evidence": "운영 시스템 직접 확인 의향을 표현"
24
+ },
25
+ {
26
+ "title": "영상/사례 기반 실증 자료가 신뢰 확보에 효과적",
27
+ "severity": "medium",
28
+ "evidence": "기존 행사 영상과 설문 결과가 제안 설명의 신뢰를 보강함"
29
+ }
30
+ ],
31
+ "risks": [
32
+ {
33
+ "title": "비용 처리 방식이 내부 승인 과정에서 지연될 수 있음",
34
+ "severity": "high",
35
+ "evidence": "구독료 처리와 분할 비용 문의가 핵심 쟁점으로 반복됨"
36
+ },
37
+ {
38
+ "title": "매장별 운영 통제 방식 미확정",
39
+ "severity": "medium",
40
+ "evidence": "본사 통합 관리와 개별 매장 운영 비교 검토 필요"
41
+ }
42
+ ],
43
+ "timeline": [
44
+ {
45
+ "date": "2026-03-04",
46
+ "title": "파트너십 제안 미팅",
47
+ "type": "meeting",
48
+ "note": "프랜차이즈 운영과 티켓 구조 설명"
49
+ },
50
+ {
51
+ "date": "2026-03-10",
52
+ "title": "테스트 계정 제공 예정",
53
+ "type": "follow-up",
54
+ "note": "내부 검토 이후 진행"
55
+ },
56
+ {
57
+ "date": "2026-03-31",
58
+ "title": "티켓 수량 최종 결정",
59
+ "type": "deadline",
60
+ "note": "내부 의사결정 완료 목표"
61
+ }
62
+ ],
63
+ "actions": [
64
+ {
65
+ "title": "관리자용 테스트 계정 제공",
66
+ "owner": "루루",
67
+ "due_date": "2026-03-10",
68
+ "priority": "high",
69
+ "status": "todo"
70
+ },
71
+ {
72
+ "title": "티켓 구매 수량 내부 결정",
73
+ "owner": "어수",
74
+ "due_date": "2026-03-31",
75
+ "priority": "high",
76
+ "status": "todo"
77
+ },
78
+ {
79
+ "title": "운영 계획서 공동 작성",
80
+ "owner": "양측",
81
+ "due_date": "2026-03-31",
82
+ "priority": "medium",
83
+ "status": "todo"
84
+ }
85
+ ],
86
+ "pipeline": [
87
+ {
88
+ "id": "eosu",
89
+ "label": "어수(ES)",
90
+ "stage": "meeting",
91
+ "confidence": "high",
92
+ "key_issue": "비용 처리와 통합 운영 방식",
93
+ "owner": "루루",
94
+ "volume": "~40장"
95
+ }
96
+ ],
97
+ "profiles": [
98
+ {
99
+ "id": "eosu-profile",
100
+ "name": "어수(ES)",
101
+ "type": "company",
102
+ "status": "active",
103
+ "owner": "루루",
104
+ "summary": "10개 직영점을 운영하는 홀덤펍 프랜차이즈. 법률/기술 역량이 높고 통합 관리 니즈가 강함."
105
+ }
106
+ ],
107
+ "unresolved": [
108
+ {
109
+ "title": "초기 티켓 볼륨을 몇 장으로 시작할지 확정 필요",
110
+ "owner": "어수",
111
+ "status": "pending"
112
+ }
113
+ ],
114
+ "blockers": [
115
+ {
116
+ "title": "내부 의사결정 완료 전 운영 계획서 범위 확정 불가",
117
+ "owner": "양측",
118
+ "status": "active",
119
+ "note": "티켓 수량과 비용 처리 방식이 먼저 정리돼야 함"
120
+ }
121
+ ],
122
+ "follow_up": {
123
+ "channel": "message",
124
+ "subject": "어수 파트너십 후속 자료 전달",
125
+ "body": "테스트 계정, 운영 계획서 초안, 비용 처리 옵션을 함께 전달하고 내부 검토 일정 회신을 요청합니다."
126
+ }
127
+ }