project
자동 보고서 생성 및 공유 기능 구현
octo54
2025. 3. 31. 09:46
반응형
자동 보고서 생성 및 공유 기능 구현
이전 글에서는 실습 데이터를 기반으로 한 대시보드 최적화 및 비교 분석 기능을 다루었습니다. 이번 글에서는 그 연장선으로, 실습 결과를 PDF 보고서 또는 공유 가능한 URL로 자동 생성하는 기능을 구현하는 방법을 설명합니다.
이 기능은 실습자 또는 마케터가 분석 결과를 외부로 공유하거나 문서화하여 보고하는 데 매우 유용합니다.
1. 자동 보고서 생성 기능 개요
기능 설명
PDF 보고서 생성 | 실습 결과를 시각화하여 PDF로 저장 |
공유 가능한 링크 생성 | 누구나 접근 가능한 리포트 페이지 URL 제공 |
실습 보고서 자동 생성 시점 | 미션 완료 시점, 버튼 클릭 시 등 조건부 생성 |
2. PDF 보고서 생성 기능 구현
2-1. jsPDF 라이브러리 활용 예시
반응형
import jsPDF from "jspdf";
const generatePDF = (reportData) => {
const doc = new jsPDF();
doc.setFontSize(14);
doc.text("🎯 실습 보고서", 20, 20);
doc.setFontSize(11);
reportData.events.forEach((e, idx) => {
doc.text(`${idx + 1}. 이벤트: ${e.name}, 횟수: ${e.count}`, 20, 30 + idx * 10);
});
doc.save("practice-report.pdf");
};
2-2. PDF 버튼 트리거 UI
<button onClick={() => generatePDF(reportData)} className="btn btn-primary">
PDF로 저장하기
</button>
3. 공유 가능한 리포트 링크 생성
3-1. 서버에서 리포트 저장 및 UUID 발급
import { v4 as uuidv4 } from 'uuid';
const saveSharedReport = async (userId, reportData) => {
const shareId = uuidv4();
await supabase.from("shared_reports").insert({
user_id: userId,
share_id: shareId,
data: reportData,
created_at: new Date()
});
return `https://analytics-playground.com/shared/${shareId}`;
};
3-2. 공유된 리포트 페이지 구성
export async function getServerSideProps(context) {
const { shareId } = context.params;
const { data } = await supabase
.from("shared_reports")
.select("*")
.eq("share_id", shareId)
.single();
return { props: { reportData: data } };
}
4. 리포트 항목 예시 구성
항목 데이터 예시
분석 기간 | 2024.03.01 ~ 2024.03.07 |
전환 퍼널 | PAGE_VIEW → CTA_CLICK → FORM_SUBMIT |
각 단계 이벤트 수 | 1000 → 620 → 150 |
전환율 | 15% |
AI 인사이트 요약 | “이탈 구간은 회원가입 전. UI 개선 필요” |
5. 보고서 자동화 확장 전략
기능 설명
이메일 전송 | 보고서를 PDF로 자동 첨부하여 사용자에게 발송 |
Slack 공유 | 버튼 클릭 시 슬랙 채널로 리포트 요약 공유 |
자동 생성 주기 설정 | 실습 완료 시 자동 생성, 주간 보고서 등 |
다음 글에서는 시리즈의 마무리로 프로젝트 전체 정리 및 확장 방향을 설명합니다.
→ 12편. Analytics Playground 프로젝트 마무리 및 향후 확장 계획