docs: 보고서 도식 6종 SVG 생성
실현가능성: BMC 캔버스, 3단계 마일스톤, As-Is vs To-Be 플로우 기술성: 기술 아키텍처, 경쟁사 비교표, 복습 엔진 작동 원리 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
76
docs/assets/asis-tobe-flow.svg
Normal file
76
docs/assets/asis-tobe-flow.svg
Normal file
@@ -0,0 +1,76 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 400" font-family="'Pretendard','Inter',-apple-system,sans-serif">
|
||||
<rect width="900" height="400" rx="16" fill="#0f0f17"/>
|
||||
<text x="450" y="36" text-anchor="middle" fill="#e0e7ff" font-size="18" font-weight="700">As-Is vs To-Be 사용자 플로우 비교</text>
|
||||
|
||||
<!-- As-Is -->
|
||||
<text x="450" y="78" text-anchor="middle" fill="#f87171" font-size="14" font-weight="700">As-Is: 기존 학습 방식</text>
|
||||
<rect x="30" y="90" width="840" height="110" rx="12" fill="rgba(239,68,68,0.06)" stroke="rgba(239,68,68,0.2)" stroke-width="1"/>
|
||||
|
||||
<!-- As-Is flow boxes -->
|
||||
<rect x="50" y="110" width="130" height="50" rx="8" fill="rgba(239,68,68,0.12)" stroke="rgba(239,68,68,0.3)"/>
|
||||
<text x="115" y="140" text-anchor="middle" fill="#fca5a5" font-size="12" font-weight="600">문제 풀기</text>
|
||||
|
||||
<text x="200" y="138" fill="#64748b" font-size="16">→</text>
|
||||
|
||||
<rect x="220" y="110" width="130" height="50" rx="8" fill="rgba(239,68,68,0.12)" stroke="rgba(239,68,68,0.3)"/>
|
||||
<text x="285" y="140" text-anchor="middle" fill="#fca5a5" font-size="12" font-weight="600">오답노트 작성</text>
|
||||
|
||||
<text x="370" y="138" fill="#64748b" font-size="16">→</text>
|
||||
|
||||
<rect x="390" y="110" width="130" height="50" rx="8" fill="rgba(239,68,68,0.12)" stroke="rgba(239,68,68,0.3)"/>
|
||||
<text x="455" y="133" text-anchor="middle" fill="#fca5a5" font-size="12" font-weight="600">시험 직전에</text>
|
||||
<text x="455" y="149" text-anchor="middle" fill="#fca5a5" font-size="12" font-weight="600">몰아서 복습</text>
|
||||
|
||||
<text x="540" y="138" fill="#64748b" font-size="16">→</text>
|
||||
|
||||
<rect x="560" y="110" width="130" height="50" rx="8" fill="rgba(239,68,68,0.2)" stroke="rgba(239,68,68,0.4)"/>
|
||||
<text x="625" y="133" text-anchor="middle" fill="#fca5a5" font-size="12" font-weight="700">이미 잊어버림</text>
|
||||
<text x="625" y="149" text-anchor="middle" fill="#f87171" font-size="10">(기억 보유율 25%)</text>
|
||||
|
||||
<text x="710" y="138" fill="#64748b" font-size="16">→</text>
|
||||
|
||||
<rect x="730" y="110" width="130" height="50" rx="8" fill="rgba(239,68,68,0.15)" stroke="rgba(239,68,68,0.35)"/>
|
||||
<text x="795" y="133" text-anchor="middle" fill="#fca5a5" font-size="12" font-weight="600">같은 유형</text>
|
||||
<text x="795" y="149" text-anchor="middle" fill="#fca5a5" font-size="12" font-weight="600">또 틀림 반복</text>
|
||||
|
||||
<text x="450" y="183" text-anchor="middle" fill="#f87171" font-size="11">복습 시점을 모르기 때문에 비효율적인 학습이 반복됨</text>
|
||||
|
||||
<!-- Divider -->
|
||||
<line x1="100" y1="220" x2="800" y2="220" stroke="rgba(255,255,255,0.08)" stroke-dasharray="6,4"/>
|
||||
<rect x="410" y="210" width="80" height="20" rx="10" fill="#0f0f17"/>
|
||||
<text x="450" y="224" text-anchor="middle" fill="#64748b" font-size="11" font-weight="600">VS</text>
|
||||
|
||||
<!-- To-Be -->
|
||||
<text x="450" y="260" text-anchor="middle" fill="#4ade80" font-size="14" font-weight="700">To-Be: ReLoop 방식</text>
|
||||
<rect x="30" y="272" width="840" height="110" rx="12" fill="rgba(34,197,94,0.06)" stroke="rgba(34,197,94,0.2)" stroke-width="1"/>
|
||||
|
||||
<!-- To-Be flow boxes -->
|
||||
<rect x="50" y="292" width="130" height="50" rx="8" fill="rgba(34,197,94,0.12)" stroke="rgba(34,197,94,0.3)"/>
|
||||
<text x="115" y="322" text-anchor="middle" fill="#86efac" font-size="12" font-weight="600">문제 풀기</text>
|
||||
|
||||
<text x="200" y="320" fill="#4ade80" font-size="16">→</text>
|
||||
|
||||
<rect x="220" y="292" width="130" height="50" rx="8" fill="rgba(34,197,94,0.12)" stroke="rgba(34,197,94,0.3)"/>
|
||||
<text x="285" y="315" text-anchor="middle" fill="#86efac" font-size="12" font-weight="600">체감 난이도</text>
|
||||
<text x="285" y="331" text-anchor="middle" fill="#86efac" font-size="12" font-weight="600">3단계 평가</text>
|
||||
|
||||
<text x="370" y="320" fill="#4ade80" font-size="16">→</text>
|
||||
|
||||
<rect x="390" y="292" width="130" height="50" rx="8" fill="rgba(99,102,241,0.15)" stroke="rgba(99,102,241,0.3)"/>
|
||||
<text x="455" y="315" text-anchor="middle" fill="#c7d2fe" font-size="12" font-weight="700">AI가 최적 시점</text>
|
||||
<text x="455" y="331" text-anchor="middle" fill="#c7d2fe" font-size="12" font-weight="700">자동 계산</text>
|
||||
|
||||
<text x="540" y="320" fill="#4ade80" font-size="16">→</text>
|
||||
|
||||
<rect x="560" y="292" width="130" height="50" rx="8" fill="rgba(34,197,94,0.12)" stroke="rgba(34,197,94,0.3)"/>
|
||||
<text x="625" y="315" text-anchor="middle" fill="#86efac" font-size="12" font-weight="600">캘린더에</text>
|
||||
<text x="625" y="331" text-anchor="middle" fill="#86efac" font-size="12" font-weight="600">자동 예약</text>
|
||||
|
||||
<text x="710" y="320" fill="#4ade80" font-size="16">→</text>
|
||||
|
||||
<rect x="730" y="292" width="130" height="50" rx="8" fill="rgba(34,197,94,0.2)" stroke="rgba(34,197,94,0.4)"/>
|
||||
<text x="795" y="315" text-anchor="middle" fill="#86efac" font-size="12" font-weight="700">기억 유지 90%+</text>
|
||||
<text x="795" y="331" text-anchor="middle" fill="#4ade80" font-size="10">장기기억 형성</text>
|
||||
|
||||
<text x="450" y="365" text-anchor="middle" fill="#4ade80" font-size="11">"복습을 까먹는 문제" 자체를 제거 → 같은 시간, 2배 이상의 학습 효율</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.1 KiB |
100
docs/assets/bmc-canvas.svg
Normal file
100
docs/assets/bmc-canvas.svg
Normal file
@@ -0,0 +1,100 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 600" font-family="'Pretendard','Inter',-apple-system,sans-serif">
|
||||
<rect width="960" height="600" rx="16" fill="#0f0f17"/>
|
||||
<text x="480" y="36" text-anchor="middle" fill="#e0e7ff" font-size="18" font-weight="700">Business Model Canvas — ReLoop</text>
|
||||
|
||||
<!-- Grid: 5 cols top, 2 cols bottom -->
|
||||
<!-- Row 1: KP / KA / VP / CR / CS -->
|
||||
<rect x="12" y="52" width="185" height="300" rx="10" fill="rgba(99,102,241,0.08)" stroke="rgba(99,102,241,0.2)" stroke-width="1"/>
|
||||
<rect x="201" y="52" width="185" height="145" rx="10" fill="rgba(16,185,129,0.08)" stroke="rgba(16,185,129,0.2)" stroke-width="1"/>
|
||||
<rect x="201" y="201" width="185" height="151" rx="10" fill="rgba(245,158,11,0.08)" stroke="rgba(245,158,11,0.2)" stroke-width="1"/>
|
||||
<rect x="390" y="52" width="185" height="300" rx="10" fill="rgba(236,72,153,0.12)" stroke="rgba(236,72,153,0.25)" stroke-width="1"/>
|
||||
<rect x="579" y="52" width="185" height="145" rx="10" fill="rgba(59,130,246,0.08)" stroke="rgba(59,130,246,0.2)" stroke-width="1"/>
|
||||
<rect x="579" y="201" width="185" height="151" rx="10" fill="rgba(168,85,247,0.08)" stroke="rgba(168,85,247,0.2)" stroke-width="1"/>
|
||||
<rect x="768" y="52" width="180" height="300" rx="10" fill="rgba(34,197,94,0.08)" stroke="rgba(34,197,94,0.2)" stroke-width="1"/>
|
||||
|
||||
<!-- Row 2: Cost Structure / Revenue Streams -->
|
||||
<rect x="12" y="356" width="468" height="232" rx="10" fill="rgba(239,68,68,0.08)" stroke="rgba(239,68,68,0.2)" stroke-width="1"/>
|
||||
<rect x="484" y="356" width="464" height="232" rx="10" fill="rgba(34,197,94,0.08)" stroke="rgba(34,197,94,0.2)" stroke-width="1"/>
|
||||
|
||||
<!-- Labels -->
|
||||
<text x="104" y="72" text-anchor="middle" fill="#a5b4fc" font-size="10" font-weight="700" letter-spacing="0.08em">KEY PARTNERS</text>
|
||||
<text x="104" y="86" text-anchor="middle" fill="#818cf8" font-size="9">핵심 파트너</text>
|
||||
<text x="24" y="110" fill="#cbd5e1" font-size="11">- 문제집 출판사 (B2B 제휴)</text>
|
||||
<text x="24" y="128" fill="#cbd5e1" font-size="11">- EBS / KICE 기출 데이터</text>
|
||||
<text x="24" y="146" fill="#cbd5e1" font-size="11">- 학교/학원 (파일럿 채널)</text>
|
||||
<text x="24" y="164" fill="#cbd5e1" font-size="11">- 클라우드 인프라 (서버)</text>
|
||||
|
||||
<text x="293" y="72" text-anchor="middle" fill="#6ee7b7" font-size="10" font-weight="700" letter-spacing="0.08em">KEY ACTIVITIES</text>
|
||||
<text x="293" y="86" text-anchor="middle" fill="#34d399" font-size="9">핵심 활동</text>
|
||||
<text x="213" y="110" fill="#cbd5e1" font-size="11">- 복습 알고리즘 R&D</text>
|
||||
<text x="213" y="128" fill="#cbd5e1" font-size="11">- PDF 파싱 엔진 개선</text>
|
||||
<text x="213" y="146" fill="#cbd5e1" font-size="11">- B2B 학원 영업</text>
|
||||
|
||||
<text x="293" y="221" text-anchor="middle" fill="#fcd34d" font-size="10" font-weight="700" letter-spacing="0.08em">KEY RESOURCES</text>
|
||||
<text x="293" y="235" text-anchor="middle" fill="#fbbf24" font-size="9">핵심 자원</text>
|
||||
<text x="213" y="259" fill="#cbd5e1" font-size="11">- SM-2+망각곡선 엔진</text>
|
||||
<text x="213" y="277" fill="#cbd5e1" font-size="11">- 45,641줄 프로덕션 코드</text>
|
||||
<text x="213" y="295" fill="#cbd5e1" font-size="11">- 기출+샘플 문제 DB</text>
|
||||
<text x="213" y="313" fill="#cbd5e1" font-size="11">- 학습 데이터 축적</text>
|
||||
|
||||
<text x="482" y="72" text-anchor="middle" fill="#f9a8d4" font-size="10" font-weight="700" letter-spacing="0.08em">VALUE PROPOSITIONS</text>
|
||||
<text x="482" y="86" text-anchor="middle" fill="#f472b6" font-size="9">가치 제안</text>
|
||||
<text x="402" y="114" fill="#ffffff" font-size="12" font-weight="700">"틀린 문제를 언제 다시</text>
|
||||
<text x="402" y="132" fill="#ffffff" font-size="12" font-weight="700"> 풀어야 하는지 AI가 알려줌"</text>
|
||||
<text x="402" y="158" fill="#cbd5e1" font-size="11">- 최적 복습 시점 자동 계산</text>
|
||||
<text x="402" y="176" fill="#cbd5e1" font-size="11">- 4 페르소나 개인화</text>
|
||||
<text x="402" y="194" fill="#cbd5e1" font-size="11">- PDF 30초 문제집 변환</text>
|
||||
<text x="402" y="212" fill="#cbd5e1" font-size="11">- 학교/학원 자동 관리</text>
|
||||
<text x="402" y="230" fill="#cbd5e1" font-size="11">- 월 2,900원 저가 구독</text>
|
||||
|
||||
<text x="671" y="72" text-anchor="middle" fill="#93c5fd" font-size="10" font-weight="700" letter-spacing="0.08em">CUSTOMER REL.</text>
|
||||
<text x="671" y="86" text-anchor="middle" fill="#60a5fa" font-size="9">고객 관계</text>
|
||||
<text x="591" y="110" fill="#cbd5e1" font-size="11">- 자동 복습 알림</text>
|
||||
<text x="591" y="128" fill="#cbd5e1" font-size="11">- 커뮤니티 바이럴</text>
|
||||
<text x="591" y="146" fill="#cbd5e1" font-size="11">- B2B 파일럿 → 유료</text>
|
||||
|
||||
<text x="671" y="221" text-anchor="middle" fill="#c4b5fd" font-size="10" font-weight="700" letter-spacing="0.08em">CHANNELS</text>
|
||||
<text x="671" y="235" text-anchor="middle" fill="#a78bfa" font-size="9">채널</text>
|
||||
<text x="591" y="259" fill="#cbd5e1" font-size="11">- 웹앱 (PWA)</text>
|
||||
<text x="591" y="277" fill="#cbd5e1" font-size="11">- 수능 커뮤니티 (오르비)</text>
|
||||
<text x="591" y="295" fill="#cbd5e1" font-size="11">- 학원 B2B 영업</text>
|
||||
<text x="591" y="313" fill="#cbd5e1" font-size="11">- 출판사 QR 연동</text>
|
||||
|
||||
<text x="858" y="72" text-anchor="middle" fill="#86efac" font-size="10" font-weight="700" letter-spacing="0.08em">CUSTOMER SEG.</text>
|
||||
<text x="858" y="86" text-anchor="middle" fill="#4ade80" font-size="9">고객 세그먼트</text>
|
||||
<text x="780" y="114" fill="#86efac" font-size="10" font-weight="700">1차: B2C</text>
|
||||
<text x="780" y="132" fill="#cbd5e1" font-size="11">수능 수학 고등학생</text>
|
||||
<text x="780" y="150" fill="#cbd5e1" font-size="11">(자기주도학습형)</text>
|
||||
<text x="780" y="178" fill="#86efac" font-size="10" font-weight="700">2차: B2B</text>
|
||||
<text x="780" y="196" fill="#cbd5e1" font-size="11">학원 / 학교</text>
|
||||
<text x="780" y="214" fill="#cbd5e1" font-size="11">(학생 관리 효율화)</text>
|
||||
<text x="780" y="242" fill="#86efac" font-size="10" font-weight="700">3차: B2B2C</text>
|
||||
<text x="780" y="260" fill="#cbd5e1" font-size="11">출판사 / EBS</text>
|
||||
<text x="780" y="278" fill="#cbd5e1" font-size="11">(복습 엔진 OEM)</text>
|
||||
|
||||
<!-- Cost Structure -->
|
||||
<text x="246" y="376" text-anchor="middle" fill="#fca5a5" font-size="10" font-weight="700" letter-spacing="0.08em">COST STRUCTURE</text>
|
||||
<text x="246" y="390" text-anchor="middle" fill="#f87171" font-size="9">비용 구조</text>
|
||||
<text x="24" y="418" fill="#cbd5e1" font-size="12" font-weight="600">고정비 (월)</text>
|
||||
<text x="24" y="438" fill="#cbd5e1" font-size="11">- 서버 인프라: 약 50만 원</text>
|
||||
<text x="24" y="456" fill="#cbd5e1" font-size="11">- 마케팅: 약 150만 원</text>
|
||||
<text x="24" y="474" fill="#cbd5e1" font-size="11">- 월 운영비 합계: 약 200만 원</text>
|
||||
<text x="250" y="418" fill="#cbd5e1" font-size="12" font-weight="600">변동비</text>
|
||||
<text x="250" y="438" fill="#cbd5e1" font-size="11">- AI API 호출 (향후)</text>
|
||||
<text x="250" y="456" fill="#cbd5e1" font-size="11">- 문제 DB 라이선스</text>
|
||||
<text x="250" y="474" fill="#cbd5e1" font-size="11">- 결제 수수료 (PG 3.5%)</text>
|
||||
<text x="24" y="504" fill="#94a3b8" font-size="11">초기 자금: 예비창업패키지 (최대 1억 원)</text>
|
||||
<text x="24" y="522" fill="#94a3b8" font-size="11">6개월 최소 운영비: 약 1,200만 원</text>
|
||||
|
||||
<!-- Revenue Streams -->
|
||||
<text x="716" y="376" text-anchor="middle" fill="#86efac" font-size="10" font-weight="700" letter-spacing="0.08em">REVENUE STREAMS</text>
|
||||
<text x="716" y="390" text-anchor="middle" fill="#4ade80" font-size="9">수익원</text>
|
||||
<text x="496" y="418" fill="#86efac" font-size="12" font-weight="700">B2C Pro 구독</text>
|
||||
<text x="496" y="438" fill="#cbd5e1" font-size="11">월 2,900원 / 연 24,900원</text>
|
||||
<text x="496" y="462" fill="#86efac" font-size="12" font-weight="700">B2B School 라이선스</text>
|
||||
<text x="496" y="482" fill="#cbd5e1" font-size="11">학생당 월 2,900원</text>
|
||||
<text x="496" y="506" fill="#86efac" font-size="12" font-weight="700">B2B2C 출판사 제휴</text>
|
||||
<text x="496" y="526" fill="#cbd5e1" font-size="11">QR → 디지털 풀이 모델</text>
|
||||
<text x="496" y="556" fill="#e0e7ff" font-size="12" font-weight="700">1년차 예상 매출: 약 2,100만 원</text>
|
||||
<text x="496" y="574" fill="#e0e7ff" font-size="12" font-weight="700">2년차 예상 매출: 약 2.4억 원</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.4 KiB |
84
docs/assets/competitor-comparison.svg
Normal file
84
docs/assets/competitor-comparison.svg
Normal file
@@ -0,0 +1,84 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 420" font-family="'Pretendard','Inter',-apple-system,sans-serif">
|
||||
<rect width="900" height="420" rx="16" fill="#0f0f17"/>
|
||||
<text x="450" y="36" text-anchor="middle" fill="#e0e7ff" font-size="18" font-weight="700">경쟁사 구조 비교표</text>
|
||||
|
||||
<!-- Table Header -->
|
||||
<rect x="20" y="55" width="860" height="40" rx="8" fill="rgba(99,102,241,0.1)"/>
|
||||
<text x="110" y="80" text-anchor="middle" fill="#94a3b8" font-size="12" font-weight="700">비교 항목</text>
|
||||
<text x="270" y="80" text-anchor="middle" fill="#94a3b8" font-size="12" font-weight="700">Anki</text>
|
||||
<text x="410" y="80" text-anchor="middle" fill="#94a3b8" font-size="12" font-weight="700">Quizlet</text>
|
||||
<text x="550" y="80" text-anchor="middle" fill="#94a3b8" font-size="12" font-weight="700">콴다</text>
|
||||
<text x="690" y="80" text-anchor="middle" fill="#94a3b8" font-size="12" font-weight="700">매쓰플랫</text>
|
||||
<rect x="760" y="55" width="120" height="40" rx="0" fill="rgba(99,102,241,0.2)"/>
|
||||
<text x="820" y="80" text-anchor="middle" fill="#c7d2fe" font-size="12" font-weight="800">ReLoop</text>
|
||||
|
||||
<!-- Row backgrounds (alternating) -->
|
||||
<rect x="20" y="100" width="860" height="42" rx="0" fill="rgba(255,255,255,0.02)"/>
|
||||
<rect x="20" y="142" width="860" height="42" rx="0" fill="rgba(255,255,255,0.04)"/>
|
||||
<rect x="20" y="184" width="860" height="42" rx="0" fill="rgba(255,255,255,0.02)"/>
|
||||
<rect x="20" y="226" width="860" height="42" rx="0" fill="rgba(255,255,255,0.04)"/>
|
||||
<rect x="20" y="268" width="860" height="42" rx="0" fill="rgba(255,255,255,0.02)"/>
|
||||
<rect x="20" y="310" width="860" height="42" rx="0" fill="rgba(255,255,255,0.04)"/>
|
||||
<rect x="20" y="352" width="860" height="42" rx="0" fill="rgba(255,255,255,0.02)"/>
|
||||
|
||||
<!-- ReLoop column highlight -->
|
||||
<rect x="760" y="100" width="120" height="294" fill="rgba(99,102,241,0.06)"/>
|
||||
|
||||
<!-- Row 1: 복습 시점 최적화 -->
|
||||
<text x="110" y="126" text-anchor="middle" fill="#cbd5e1" font-size="11" font-weight="600">복습 시점 최적화</text>
|
||||
<text x="270" y="126" text-anchor="middle" fill="#fbbf24" font-size="11">단순 간격 반복</text>
|
||||
<text x="410" y="126" text-anchor="middle" fill="#f87171" font-size="11">없음</text>
|
||||
<text x="550" y="126" text-anchor="middle" fill="#f87171" font-size="11">없음</text>
|
||||
<text x="690" y="126" text-anchor="middle" fill="#f87171" font-size="11">없음</text>
|
||||
<text x="820" y="126" text-anchor="middle" fill="#4ade80" font-size="11" font-weight="700">AI 정답확률 예측</text>
|
||||
|
||||
<!-- Row 2: 학습자 유형 반영 -->
|
||||
<text x="110" y="168" text-anchor="middle" fill="#cbd5e1" font-size="11" font-weight="600">학습자 유형 반영</text>
|
||||
<text x="270" y="168" text-anchor="middle" fill="#f87171" font-size="11">없음</text>
|
||||
<text x="410" y="168" text-anchor="middle" fill="#f87171" font-size="11">없음</text>
|
||||
<text x="550" y="168" text-anchor="middle" fill="#f87171" font-size="11">없음</text>
|
||||
<text x="690" y="168" text-anchor="middle" fill="#f87171" font-size="11">없음</text>
|
||||
<text x="820" y="168" text-anchor="middle" fill="#4ade80" font-size="11" font-weight="700">4 페르소나 x 3 강도</text>
|
||||
|
||||
<!-- Row 3: 문제풀이 최적화 -->
|
||||
<text x="110" y="210" text-anchor="middle" fill="#cbd5e1" font-size="11" font-weight="600">문제풀이 최적화</text>
|
||||
<text x="270" y="210" text-anchor="middle" fill="#fbbf24" font-size="11">암기 전용</text>
|
||||
<text x="410" y="210" text-anchor="middle" fill="#fbbf24" font-size="11">암기 위주</text>
|
||||
<text x="550" y="210" text-anchor="middle" fill="#fbbf24" font-size="11">해설만</text>
|
||||
<text x="690" y="210" text-anchor="middle" fill="#fbbf24" font-size="11">생성만</text>
|
||||
<text x="820" y="210" text-anchor="middle" fill="#4ade80" font-size="11" font-weight="700">난이도+정답률 반영</text>
|
||||
|
||||
<!-- Row 4: PDF 문제집 변환 -->
|
||||
<text x="110" y="252" text-anchor="middle" fill="#cbd5e1" font-size="11" font-weight="600">PDF 문제집 변환</text>
|
||||
<text x="270" y="252" text-anchor="middle" fill="#f87171" font-size="11">불가</text>
|
||||
<text x="410" y="252" text-anchor="middle" fill="#f87171" font-size="11">불가</text>
|
||||
<text x="550" y="252" text-anchor="middle" fill="#fbbf24" font-size="11">사진 인식만</text>
|
||||
<text x="690" y="252" text-anchor="middle" fill="#f87171" font-size="11">불가</text>
|
||||
<text x="820" y="252" text-anchor="middle" fill="#4ade80" font-size="11" font-weight="700">자동 크롭+정답추출</text>
|
||||
|
||||
<!-- Row 5: B2B 기관 관리 -->
|
||||
<text x="110" y="294" text-anchor="middle" fill="#cbd5e1" font-size="11" font-weight="600">B2B 기관 관리</text>
|
||||
<text x="270" y="294" text-anchor="middle" fill="#f87171" font-size="11">없음</text>
|
||||
<text x="410" y="294" text-anchor="middle" fill="#fbbf24" font-size="11">제한적</text>
|
||||
<text x="550" y="294" text-anchor="middle" fill="#f87171" font-size="11">없음</text>
|
||||
<text x="690" y="294" text-anchor="middle" fill="#fbbf24" font-size="11">일부</text>
|
||||
<text x="820" y="294" text-anchor="middle" fill="#4ade80" font-size="11" font-weight="700">학급/과제/리포트</text>
|
||||
|
||||
<!-- Row 6: 가격 -->
|
||||
<text x="110" y="336" text-anchor="middle" fill="#cbd5e1" font-size="11" font-weight="600">가격</text>
|
||||
<text x="270" y="336" text-anchor="middle" fill="#cbd5e1" font-size="11">무료 (PC)</text>
|
||||
<text x="410" y="336" text-anchor="middle" fill="#cbd5e1" font-size="11">$7.99/월</text>
|
||||
<text x="550" y="336" text-anchor="middle" fill="#cbd5e1" font-size="11">7,900원/월</text>
|
||||
<text x="690" y="336" text-anchor="middle" fill="#cbd5e1" font-size="11">기관별 문의</text>
|
||||
<text x="820" y="336" text-anchor="middle" fill="#4ade80" font-size="11" font-weight="700">2,900원/월</text>
|
||||
|
||||
<!-- Row 7: 진입 장벽 -->
|
||||
<text x="110" y="378" text-anchor="middle" fill="#cbd5e1" font-size="11" font-weight="600">UX 진입 장벽</text>
|
||||
<text x="270" y="378" text-anchor="middle" fill="#f87171" font-size="11">매우 높음</text>
|
||||
<text x="410" y="378" text-anchor="middle" fill="#4ade80" font-size="11">낮음</text>
|
||||
<text x="550" y="378" text-anchor="middle" fill="#4ade80" font-size="11">낮음</text>
|
||||
<text x="690" y="378" text-anchor="middle" fill="#fbbf24" font-size="11">보통</text>
|
||||
<text x="820" y="378" text-anchor="middle" fill="#4ade80" font-size="11" font-weight="700">낮음</text>
|
||||
|
||||
<text x="450" y="410" text-anchor="middle" fill="#475569" font-size="10">Competitive Landscape Analysis | 2026.04</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.4 KiB |
52
docs/assets/milestone-timeline.svg
Normal file
52
docs/assets/milestone-timeline.svg
Normal file
@@ -0,0 +1,52 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 340" font-family="'Pretendard','Inter',-apple-system,sans-serif">
|
||||
<rect width="900" height="340" rx="16" fill="#0f0f17"/>
|
||||
<text x="450" y="36" text-anchor="middle" fill="#e0e7ff" font-size="18" font-weight="700">3단계 사업화 마일스톤</text>
|
||||
|
||||
<!-- Timeline line -->
|
||||
<line x1="80" y1="140" x2="820" y2="140" stroke="rgba(99,102,241,0.3)" stroke-width="2"/>
|
||||
|
||||
<!-- Phase 1 -->
|
||||
<circle cx="200" cy="140" r="16" fill="#4338ca" stroke="#818cf8" stroke-width="2"/>
|
||||
<text x="200" y="145" text-anchor="middle" fill="#fff" font-size="11" font-weight="800">1</text>
|
||||
<rect x="110" y="80" width="180" height="36" rx="8" fill="rgba(99,102,241,0.15)" stroke="rgba(99,102,241,0.3)" stroke-width="1"/>
|
||||
<text x="200" y="103" text-anchor="middle" fill="#c7d2fe" font-size="13" font-weight="700">베타 검증</text>
|
||||
<text x="200" y="170" text-anchor="middle" fill="#94a3b8" font-size="11">0 ~ 6개월</text>
|
||||
|
||||
<rect x="110" y="190" width="180" height="130" rx="10" fill="rgba(255,255,255,0.03)" stroke="rgba(255,255,255,0.06)" stroke-width="1"/>
|
||||
<text x="125" y="212" fill="#a5b4fc" font-size="10" font-weight="700">KPI</text>
|
||||
<text x="125" y="232" fill="#cbd5e1" font-size="11">MAU 2,000명</text>
|
||||
<text x="125" y="250" fill="#cbd5e1" font-size="11">복습 이행률 50%+</text>
|
||||
<text x="125" y="268" fill="#cbd5e1" font-size="11">B2B 파일럿 5곳</text>
|
||||
<text x="125" y="286" fill="#cbd5e1" font-size="11">베타 사용자 500명</text>
|
||||
<text x="125" y="308" fill="#94a3b8" font-size="10">자금: 예비창업패키지</text>
|
||||
|
||||
<!-- Phase 2 -->
|
||||
<circle cx="450" cy="140" r="16" fill="#6366f1" stroke="#a5b4fc" stroke-width="2"/>
|
||||
<text x="450" y="145" text-anchor="middle" fill="#fff" font-size="11" font-weight="800">2</text>
|
||||
<rect x="360" y="80" width="180" height="36" rx="8" fill="rgba(99,102,241,0.2)" stroke="rgba(129,140,248,0.4)" stroke-width="1"/>
|
||||
<text x="450" y="103" text-anchor="middle" fill="#e0e7ff" font-size="13" font-weight="700">수익화</text>
|
||||
<text x="450" y="170" text-anchor="middle" fill="#94a3b8" font-size="11">7 ~ 18개월</text>
|
||||
|
||||
<rect x="360" y="190" width="180" height="130" rx="10" fill="rgba(255,255,255,0.03)" stroke="rgba(255,255,255,0.06)" stroke-width="1"/>
|
||||
<text x="375" y="212" fill="#a5b4fc" font-size="10" font-weight="700">KPI</text>
|
||||
<text x="375" y="232" fill="#cbd5e1" font-size="11">MAU 5,000명</text>
|
||||
<text x="375" y="250" fill="#cbd5e1" font-size="11">유료 전환율 5~7%</text>
|
||||
<text x="375" y="268" fill="#cbd5e1" font-size="11">B2B 계약 10곳</text>
|
||||
<text x="375" y="286" fill="#cbd5e1" font-size="11">연 매출 2,100만 원</text>
|
||||
<text x="375" y="308" fill="#94a3b8" font-size="10">자금: 초기창업패키지+매출</text>
|
||||
|
||||
<!-- Phase 3 -->
|
||||
<circle cx="700" cy="140" r="16" fill="#818cf8" stroke="#c7d2fe" stroke-width="2"/>
|
||||
<text x="700" y="145" text-anchor="middle" fill="#fff" font-size="11" font-weight="800">3</text>
|
||||
<rect x="610" y="80" width="180" height="36" rx="8" fill="rgba(129,140,248,0.2)" stroke="rgba(199,210,254,0.3)" stroke-width="1"/>
|
||||
<text x="700" y="103" text-anchor="middle" fill="#e0e7ff" font-size="13" font-weight="700">확장</text>
|
||||
<text x="700" y="170" text-anchor="middle" fill="#94a3b8" font-size="11">19 ~ 36개월</text>
|
||||
|
||||
<rect x="610" y="190" width="180" height="130" rx="10" fill="rgba(255,255,255,0.03)" stroke="rgba(255,255,255,0.06)" stroke-width="1"/>
|
||||
<text x="625" y="212" fill="#a5b4fc" font-size="10" font-weight="700">KPI</text>
|
||||
<text x="625" y="232" fill="#cbd5e1" font-size="11">다과목 확장 (영어,과학)</text>
|
||||
<text x="625" y="250" fill="#cbd5e1" font-size="11">B2B 50곳+</text>
|
||||
<text x="625" y="268" fill="#cbd5e1" font-size="11">출판사 제휴 3곳</text>
|
||||
<text x="625" y="286" fill="#cbd5e1" font-size="11">연 매출 2.4억 원</text>
|
||||
<text x="625" y="308" fill="#94a3b8" font-size="10">전략: B2B2C OEM 공급</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
108
docs/assets/review-engine-flow.svg
Normal file
108
docs/assets/review-engine-flow.svg
Normal file
@@ -0,0 +1,108 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 440" font-family="'Pretendard','Inter',-apple-system,sans-serif">
|
||||
<defs>
|
||||
<marker id="arrow" markerWidth="10" markerHeight="10" refX="9" refY="5" orient="auto">
|
||||
<path d="M0,1 L9,5 L0,9 Z" fill="#6366f1"/>
|
||||
</marker>
|
||||
<marker id="arrowGreen" markerWidth="10" markerHeight="10" refX="9" refY="5" orient="auto">
|
||||
<path d="M0,1 L9,5 L0,9 Z" fill="#4ade80"/>
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<rect width="900" height="440" rx="16" fill="#0f0f17"/>
|
||||
<text x="450" y="36" text-anchor="middle" fill="#e0e7ff" font-size="18" font-weight="700">복습 엔진 작동 원리</text>
|
||||
<text x="450" y="56" text-anchor="middle" fill="#94a3b8" font-size="11">SM-2 하이브리드 + 에빙하우스 망각곡선 이중 경로</text>
|
||||
|
||||
<!-- Step 1: 문제 풀기 -->
|
||||
<rect x="30" y="85" width="150" height="70" rx="12" fill="rgba(59,130,246,0.12)" stroke="rgba(59,130,246,0.3)" stroke-width="1.5"/>
|
||||
<text x="105" y="112" text-anchor="middle" fill="#93c5fd" font-size="11" font-weight="700">STEP 1</text>
|
||||
<text x="105" y="132" text-anchor="middle" fill="#e0e7ff" font-size="14" font-weight="700">문제 풀기</text>
|
||||
|
||||
<line x1="180" y1="120" x2="220" y2="120" stroke="#6366f1" stroke-width="2" marker-end="url(#arrow)"/>
|
||||
|
||||
<!-- Step 2: 난이도 평가 -->
|
||||
<rect x="220" y="85" width="150" height="70" rx="12" fill="rgba(245,158,11,0.12)" stroke="rgba(245,158,11,0.3)" stroke-width="1.5"/>
|
||||
<text x="295" y="112" text-anchor="middle" fill="#fcd34d" font-size="11" font-weight="700">STEP 2</text>
|
||||
<text x="295" y="132" text-anchor="middle" fill="#e0e7ff" font-size="14" font-weight="700">체감 난이도 평가</text>
|
||||
|
||||
<!-- Branch -->
|
||||
<line x1="370" y1="120" x2="420" y2="120" stroke="#6366f1" stroke-width="2"/>
|
||||
|
||||
<!-- Branch point -->
|
||||
<circle cx="420" cy="120" r="8" fill="#4338ca" stroke="#818cf8" stroke-width="2"/>
|
||||
<text x="420" y="124" text-anchor="middle" fill="#fff" font-size="8" font-weight="800">?</text>
|
||||
|
||||
<!-- Branch to SM-2 (top) -->
|
||||
<line x1="428" y1="114" x2="490" y2="80" stroke="#818cf8" stroke-width="1.5" stroke-dasharray="4,3"/>
|
||||
<text x="460" y="82" fill="#a5b4fc" font-size="9">어려움/보통/쉬움</text>
|
||||
|
||||
<!-- Branch to Forgetting Curve (bottom) -->
|
||||
<line x1="428" y1="126" x2="490" y2="220" stroke="#f472b6" stroke-width="1.5" stroke-dasharray="4,3"/>
|
||||
<text x="448" y="175" fill="#f9a8d4" font-size="9" transform="rotate(50, 448, 175)">결과만 (legacy)</text>
|
||||
|
||||
<!-- SM-2 Path -->
|
||||
<rect x="490" y="55" width="200" height="90" rx="12" fill="rgba(99,102,241,0.12)" stroke="rgba(99,102,241,0.3)" stroke-width="1.5"/>
|
||||
<text x="590" y="78" text-anchor="middle" fill="#a5b4fc" font-size="11" font-weight="700">경로 1: SM-2 하이브리드</text>
|
||||
<text x="505" y="100" fill="#cbd5e1" font-size="10">EF 업데이트 (1.3 ~ 4.0)</text>
|
||||
<text x="505" y="116" fill="#cbd5e1" font-size="10">간격 = 6 × EF^(n-1) × pf × if</text>
|
||||
<text x="505" y="132" fill="#94a3b8" font-size="9">+ 망각곡선 안전장치 (P < 30% → 축소)</text>
|
||||
|
||||
<!-- Forgetting Curve Path -->
|
||||
<rect x="490" y="190" width="200" height="90" rx="12" fill="rgba(236,72,153,0.12)" stroke="rgba(236,72,153,0.3)" stroke-width="1.5"/>
|
||||
<text x="590" y="213" text-anchor="middle" fill="#f9a8d4" font-size="11" font-weight="700">경로 2: 망각곡선</text>
|
||||
<text x="505" y="235" fill="#cbd5e1" font-size="10">S(t) = S₀ × e^(-λ × t)</text>
|
||||
<text x="505" y="251" fill="#cbd5e1" font-size="10">P = sigmoid(k × (S(t) - D))</text>
|
||||
<text x="505" y="267" fill="#94a3b8" font-size="9">P < threshold → 복습 시점</text>
|
||||
|
||||
<!-- Merge -->
|
||||
<line x1="690" y1="100" x2="730" y2="160" stroke="#818cf8" stroke-width="1.5"/>
|
||||
<line x1="690" y1="235" x2="730" y2="160" stroke="#f472b6" stroke-width="1.5"/>
|
||||
<circle cx="730" cy="160" r="6" fill="#6366f1"/>
|
||||
|
||||
<line x1="736" y1="160" x2="770" y2="160" stroke="#6366f1" stroke-width="2" marker-end="url(#arrow)"/>
|
||||
|
||||
<!-- Step 3: 캘린더 예약 -->
|
||||
<rect x="770" y="130" width="110" height="60" rx="12" fill="rgba(34,197,94,0.12)" stroke="rgba(34,197,94,0.3)" stroke-width="1.5"/>
|
||||
<text x="825" y="155" text-anchor="middle" fill="#86efac" font-size="11" font-weight="700">STEP 3</text>
|
||||
<text x="825" y="175" text-anchor="middle" fill="#e0e7ff" font-size="13" font-weight="700">캘린더 예약</text>
|
||||
|
||||
<!-- Persona Section (bottom) -->
|
||||
<rect x="30" y="300" width="400" height="120" rx="12" fill="rgba(168,85,247,0.08)" stroke="rgba(168,85,247,0.2)" stroke-width="1"/>
|
||||
<text x="230" y="324" text-anchor="middle" fill="#c4b5fd" font-size="12" font-weight="700">4가지 학습자 페르소나</text>
|
||||
|
||||
<rect x="50" y="340" width="80" height="55" rx="8" fill="rgba(34,197,94,0.1)" stroke="rgba(34,197,94,0.2)"/>
|
||||
<text x="90" y="360" text-anchor="middle" fill="#86efac" font-size="11" font-weight="700">상위권</text>
|
||||
<text x="90" y="376" text-anchor="middle" fill="#94a3b8" font-size="9">λ=0.1</text>
|
||||
<text x="90" y="389" text-anchor="middle" fill="#94a3b8" font-size="9">×1.3 넓은</text>
|
||||
|
||||
<rect x="140" y="340" width="80" height="55" rx="8" fill="rgba(59,130,246,0.1)" stroke="rgba(59,130,246,0.2)"/>
|
||||
<text x="180" y="360" text-anchor="middle" fill="#93c5fd" font-size="11" font-weight="700">중위권</text>
|
||||
<text x="180" y="376" text-anchor="middle" fill="#94a3b8" font-size="9">λ=0.2</text>
|
||||
<text x="180" y="389" text-anchor="middle" fill="#94a3b8" font-size="9">×1.0 기본</text>
|
||||
|
||||
<rect x="230" y="340" width="80" height="55" rx="8" fill="rgba(245,158,11,0.1)" stroke="rgba(245,158,11,0.2)"/>
|
||||
<text x="270" y="360" text-anchor="middle" fill="#fcd34d" font-size="11" font-weight="700">하위권</text>
|
||||
<text x="270" y="376" text-anchor="middle" fill="#94a3b8" font-size="9">λ=0.4</text>
|
||||
<text x="270" y="389" text-anchor="middle" fill="#94a3b8" font-size="9">×0.8 조밀</text>
|
||||
|
||||
<rect x="320" y="340" width="80" height="55" rx="8" fill="rgba(239,68,68,0.1)" stroke="rgba(239,68,68,0.2)"/>
|
||||
<text x="360" y="360" text-anchor="middle" fill="#fca5a5" font-size="11" font-weight="700">벼락치기</text>
|
||||
<text x="360" y="376" text-anchor="middle" fill="#94a3b8" font-size="9">λ=0.6</text>
|
||||
<text x="360" y="389" text-anchor="middle" fill="#94a3b8" font-size="9">×0.6 초조밀</text>
|
||||
|
||||
<!-- Cycle arrow -->
|
||||
<rect x="480" y="300" width="390" height="120" rx="12" fill="rgba(34,197,94,0.06)" stroke="rgba(34,197,94,0.15)" stroke-width="1"/>
|
||||
<text x="675" y="324" text-anchor="middle" fill="#86efac" font-size="12" font-weight="700">반복 학습 사이클</text>
|
||||
|
||||
<text x="500" y="352" fill="#cbd5e1" font-size="11">1회차: 어려움 → 1일 후 복습</text>
|
||||
<text x="500" y="372" fill="#cbd5e1" font-size="11">2회차: 보통 → 6일 후 (mid 기준)</text>
|
||||
<text x="500" y="392" fill="#cbd5e1" font-size="11">3회차: 쉬움 → 15일 후 (EF=2.5)</text>
|
||||
<text x="500" y="412" fill="#94a3b8" font-size="10">... 간격이 기하급수적으로 확대 (최대 60일)</text>
|
||||
|
||||
<text x="780" y="352" fill="#4ade80" font-size="24" font-weight="800">→</text>
|
||||
<text x="810" y="352" fill="#e0e7ff" font-size="12" font-weight="700">장기기억</text>
|
||||
<text x="810" y="370" fill="#e0e7ff" font-size="12" font-weight="700">형성</text>
|
||||
<text x="810" y="392" fill="#4ade80" font-size="11">기억 보유율</text>
|
||||
<text x="810" y="408" fill="#4ade80" font-size="16" font-weight="800">90%+</text>
|
||||
|
||||
<text x="450" y="435" text-anchor="middle" fill="#475569" font-size="10">ReLoop v2 Review Engine Architecture | SM-2 + Ebbinghaus Hybrid</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.4 KiB |
93
docs/assets/tech-architecture.svg
Normal file
93
docs/assets/tech-architecture.svg
Normal file
@@ -0,0 +1,93 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 480" font-family="'Pretendard','Inter',-apple-system,sans-serif">
|
||||
<rect width="900" height="480" rx="16" fill="#0f0f17"/>
|
||||
<text x="450" y="36" text-anchor="middle" fill="#e0e7ff" font-size="18" font-weight="700">기술 아키텍처 — ReLoop v2</text>
|
||||
<text x="450" y="56" text-anchor="middle" fill="#94a3b8" font-size="11">45,641줄 프로덕션 코드 · 71 API · 15 DB 모델 · 26 페이지</text>
|
||||
|
||||
<!-- Client Layer -->
|
||||
<rect x="30" y="75" width="200" height="180" rx="12" fill="rgba(59,130,246,0.08)" stroke="rgba(59,130,246,0.25)" stroke-width="1"/>
|
||||
<text x="130" y="97" text-anchor="middle" fill="#93c5fd" font-size="11" font-weight="700" letter-spacing="0.08em">CLIENT</text>
|
||||
<rect x="50" y="110" width="160" height="32" rx="6" fill="rgba(59,130,246,0.15)" stroke="rgba(59,130,246,0.3)"/>
|
||||
<text x="130" y="131" text-anchor="middle" fill="#bfdbfe" font-size="12" font-weight="600">Next.js 14 (26 pages)</text>
|
||||
<rect x="50" y="150" width="160" height="26" rx="6" fill="rgba(255,255,255,0.04)" stroke="rgba(255,255,255,0.08)"/>
|
||||
<text x="130" y="168" text-anchor="middle" fill="#cbd5e1" font-size="10">React 18 + styled-components</text>
|
||||
<rect x="50" y="182" width="160" height="26" rx="6" fill="rgba(255,255,255,0.04)" stroke="rgba(255,255,255,0.08)"/>
|
||||
<text x="130" y="200" text-anchor="middle" fill="#cbd5e1" font-size="10">Recharts + Phosphor Icons</text>
|
||||
<rect x="50" y="214" width="160" height="26" rx="6" fill="rgba(255,255,255,0.04)" stroke="rgba(255,255,255,0.08)"/>
|
||||
<text x="130" y="232" text-anchor="middle" fill="#cbd5e1" font-size="10">Canvas (필기모드)</text>
|
||||
|
||||
<!-- Arrow Client → API -->
|
||||
<line x1="230" y1="165" x2="290" y2="165" stroke="#6366f1" stroke-width="2" marker-end="url(#arrowIndigo)"/>
|
||||
<text x="260" y="155" text-anchor="middle" fill="#94a3b8" font-size="9">HTTPS</text>
|
||||
|
||||
<!-- API Layer -->
|
||||
<rect x="290" y="75" width="240" height="340" rx="12" fill="rgba(99,102,241,0.08)" stroke="rgba(99,102,241,0.25)" stroke-width="1"/>
|
||||
<text x="410" y="97" text-anchor="middle" fill="#a5b4fc" font-size="11" font-weight="700" letter-spacing="0.08em">BACKEND (NestJS 10)</text>
|
||||
|
||||
<rect x="310" y="110" width="200" height="28" rx="6" fill="rgba(99,102,241,0.15)" stroke="rgba(99,102,241,0.3)"/>
|
||||
<text x="410" y="129" text-anchor="middle" fill="#c7d2fe" font-size="11" font-weight="600">JWT Auth + Rate Limiting</text>
|
||||
|
||||
<rect x="310" y="146" width="200" height="28" rx="6" fill="rgba(99,102,241,0.1)" stroke="rgba(99,102,241,0.2)"/>
|
||||
<text x="410" y="165" text-anchor="middle" fill="#c7d2fe" font-size="11" font-weight="600">71 API Endpoints</text>
|
||||
|
||||
<rect x="310" y="182" width="96" height="24" rx="5" fill="rgba(255,255,255,0.04)" stroke="rgba(255,255,255,0.08)"/>
|
||||
<text x="358" y="198" text-anchor="middle" fill="#cbd5e1" font-size="9">subjects (3제한)</text>
|
||||
<rect x="414" y="182" width="96" height="24" rx="5" fill="rgba(255,255,255,0.04)" stroke="rgba(255,255,255,0.08)"/>
|
||||
<text x="462" y="198" text-anchor="middle" fill="#cbd5e1" font-size="9">reviews (10제한)</text>
|
||||
|
||||
<rect x="310" y="212" width="96" height="24" rx="5" fill="rgba(255,255,255,0.04)" stroke="rgba(255,255,255,0.08)"/>
|
||||
<text x="358" y="228" text-anchor="middle" fill="#cbd5e1" font-size="9">study-logs</text>
|
||||
<rect x="414" y="212" width="96" height="24" rx="5" fill="rgba(255,255,255,0.04)" stroke="rgba(255,255,255,0.08)"/>
|
||||
<text x="462" y="228" text-anchor="middle" fill="#cbd5e1" font-size="9">assignments</text>
|
||||
|
||||
<rect x="310" y="242" width="96" height="24" rx="5" fill="rgba(255,255,255,0.04)" stroke="rgba(255,255,255,0.08)"/>
|
||||
<text x="358" y="258" text-anchor="middle" fill="#cbd5e1" font-size="9">problem-sets</text>
|
||||
<rect x="414" y="242" width="96" height="24" rx="5" fill="rgba(255,255,255,0.04)" stroke="rgba(255,255,255,0.08)"/>
|
||||
<text x="462" y="258" text-anchor="middle" fill="#cbd5e1" font-size="9">stats (Pro전용)</text>
|
||||
|
||||
<!-- Forget Engine -->
|
||||
<rect x="310" y="280" width="200" height="50" rx="8" fill="rgba(236,72,153,0.12)" stroke="rgba(236,72,153,0.3)" stroke-width="1.5"/>
|
||||
<text x="410" y="300" text-anchor="middle" fill="#f9a8d4" font-size="11" font-weight="700">복습 엔진</text>
|
||||
<text x="410" y="318" text-anchor="middle" fill="#f472b6" font-size="10">SM-2 + 에빙하우스 망각곡선</text>
|
||||
|
||||
<rect x="310" y="338" width="200" height="30" rx="6" fill="rgba(245,158,11,0.1)" stroke="rgba(245,158,11,0.2)"/>
|
||||
<text x="410" y="358" text-anchor="middle" fill="#fcd34d" font-size="10" font-weight="600">PDF Parser (poppler-utils)</text>
|
||||
|
||||
<rect x="310" y="376" width="200" height="28" rx="6" fill="rgba(34,197,94,0.1)" stroke="rgba(34,197,94,0.2)"/>
|
||||
<text x="410" y="395" text-anchor="middle" fill="#86efac" font-size="10" font-weight="600">Tier Gate (Free/Pro/School)</text>
|
||||
|
||||
<!-- Arrow API → DB -->
|
||||
<line x1="530" y1="200" x2="590" y2="200" stroke="#6366f1" stroke-width="2" marker-end="url(#arrowIndigo)"/>
|
||||
<text x="560" y="190" text-anchor="middle" fill="#94a3b8" font-size="9">Prisma</text>
|
||||
|
||||
<!-- DB Layer -->
|
||||
<rect x="590" y="100" width="170" height="180" rx="12" fill="rgba(34,197,94,0.08)" stroke="rgba(34,197,94,0.25)" stroke-width="1"/>
|
||||
<text x="675" y="122" text-anchor="middle" fill="#86efac" font-size="11" font-weight="700" letter-spacing="0.08em">DATABASE</text>
|
||||
<rect x="610" y="135" width="130" height="28" rx="6" fill="rgba(34,197,94,0.15)" stroke="rgba(34,197,94,0.3)"/>
|
||||
<text x="675" y="154" text-anchor="middle" fill="#a7f3d0" font-size="11" font-weight="600">MariaDB (MySQL)</text>
|
||||
<rect x="610" y="170" width="130" height="22" rx="5" fill="rgba(255,255,255,0.04)" stroke="rgba(255,255,255,0.08)"/>
|
||||
<text x="675" y="185" text-anchor="middle" fill="#cbd5e1" font-size="9">15 모델 (Prisma ORM)</text>
|
||||
<text x="620" y="210" fill="#94a3b8" font-size="9">User, Subject, Tag</text>
|
||||
<text x="620" y="224" fill="#94a3b8" font-size="9">StudyLog, ReviewSchedule</text>
|
||||
<text x="620" y="238" fill="#94a3b8" font-size="9">SkillSnapshot, Problem</text>
|
||||
<text x="620" y="252" fill="#94a3b8" font-size="9">Organization, Class</text>
|
||||
<text x="620" y="266" fill="#94a3b8" font-size="9">Assignment, Submission</text>
|
||||
|
||||
<!-- Infra Layer -->
|
||||
<rect x="590" y="310" width="280" height="100" rx="12" fill="rgba(168,85,247,0.08)" stroke="rgba(168,85,247,0.2)" stroke-width="1"/>
|
||||
<text x="730" y="332" text-anchor="middle" fill="#c4b5fd" font-size="11" font-weight="700" letter-spacing="0.08em">INFRASTRUCTURE</text>
|
||||
<text x="610" y="356" fill="#cbd5e1" font-size="11">PM2 프로세스 관리</text>
|
||||
<text x="610" y="374" fill="#cbd5e1" font-size="11">nginx 리버스 프록시 + SSL</text>
|
||||
<text x="610" y="392" fill="#cbd5e1" font-size="11">Proxmox VM (운영 서버)</text>
|
||||
<text x="780" y="356" fill="#94a3b8" font-size="10">reloop-api :3001</text>
|
||||
<text x="780" y="374" fill="#94a3b8" font-size="10">reloop-web :3000</text>
|
||||
|
||||
<!-- Arrow markers -->
|
||||
<defs>
|
||||
<marker id="arrowIndigo" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto">
|
||||
<path d="M0,0 L8,4 L0,8 Z" fill="#6366f1"/>
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<!-- Bottom label -->
|
||||
<text x="450" y="460" text-anchor="middle" fill="#475569" font-size="10">ReLoop v2 Technical Architecture | 2026.04</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.1 KiB |
Reference in New Issue
Block a user