오늘은 Questack의 MVP 파이프라인을 “수집은 된다” 수준에서 한 단계 더 끌어올려, 실제 학습 자료로 읽을 수 있는 브리핑 품질과 개발 흐름 관리 방식을 정리했다. 큰 흐름은 RSS 수집기 완성, 브리핑 출력 개선, GitHub milestone 기반 작업 관리, 그리고 주제별 브리핑 생성 로직 개선이었다.
구현한 기능
첫 번째로 RSS/Atom 기술 블로그 수집기를 기존 CollectedItem 파이프라인에 통합했다. Spring Blog, NAVER D2, Kakao Tech feed를 설정하고, 각 feed item을 CollectedItem으로 정규화해 저장하도록 했다. 이로써 Questack은 GitHub repository뿐 아니라 기술 블로그 글도 같은 랭킹/브리핑 흐름에 태울 수 있게 됐다.
두 번째로 데일리 브리핑의 점수 표시 방식을 개선했다. 기존에는 백엔드 적합도, 학습 가치, 구현 가치가 Why it matters 문장 안에 섞여 있었는데, 항목 간 비교가 어려웠다. 이를 Markdown 표로 분리해서 Top 3 소재의 점수를 빠르게 비교할 수 있게 했다.
세 번째로 GitHub milestone과 issue를 개발 플로우에 통합했다. 남은 MVP 작업을 MVP Completion: Replay Harness to Mini Quest milestone으로 묶고, replay harness, ranking 품질 고정, RSS source 확장, mini project quest, reliability/cost guardrail, portfolio demo 작업을 issue로 나눴다. 이후 작업은 roadmap은 방향, milestone은 범위, issue는 작업 계약, PR은 검증 단위로 운영하기로 했다.
마지막으로 가장 중요한 개선은 데일리 브리핑 본문 생성 방식이다. 기존 2026-05-29.md를 보니 세 항목이 링크와 제목만 다르고 사실상 같은 템플릿 문장으로 작성되어 있었다. 이를 고쳐서 Summary 섹션을 추가하고, title, summary, ranking reasons를 기반으로 DB migration, Spring Boot 운영 모니터링, Spring AI, cache, messaging, auth 같은 주제별 프로필을 선택하도록 바꿨다. 이제 Why it matters, Backend interview angle, 30-minute study path, Mini project idea가 소재별로 다르게 생성된다.
트러블슈팅
RSS 수집 중 NAVER D2 feed의 description이 너무 길어 H2 컬럼 제한을 넘는 문제가 있었다. collected_items.summary는 2000자 제한인데 RSS description에는 HTML 본문 일부가 길게 들어올 수 있었다. 이 문제는 TR-005로 기록했고, RssTextNormalizer를 통해 HTML 태그 제거와 컬럼 길이 제한을 적용해 해결했다.
브리핑 개선 중에는 DailyBriefingService에 주제별 프로필 record를 추가하면서 중괄호 위치가 잘못 들어가 컴파일이 실패했다. ./gradlew test 실행 중 unnamed classes are a preview feature 오류가 나왔고, 원인은 writeMarkdown 메서드가 클래스 밖으로 밀려난 것이었다. 파일 하단 구조를 정리한 뒤 다시 테스트를 실행해 통과시켰다. 이건 재발 가능한 환경 이슈라기보다는 단순 편집 실수라 별도 TR로 남기지는 않았다.
기술적 의사결정
오늘 추가되거나 확인한 핵심 기술 결정은 세 가지다.
TD-013: RSS/Atom 기술 블로그 수집기를 CollectedItem 파이프라인에 통합했다. 별도 모델을 만들지 않고 GitHub와 같은 랭킹/브리핑 흐름을 재사용하기로 했다.
TD-015: 남은 MVP 작업은 GitHub milestone과 issue로 추적하기로 했다. 문서 기반 roadmap만으로는 PR 범위와 완료 상태가 흐려질 수 있어, milestone과 issue를 실제 개발 플로우에 연결했다.
TD-016: 데일리 브리핑은 고정 템플릿 반복이 아니라 주제별 학습 내용을 다르게 생성하기로 했다. LLM은 아직 MVP 필수 범위가 아니므로, 현재는 deterministic keyword/profile 기반으로 소재별 질문과 학습 경로를 다르게 만든다. 나중에 LLM을 붙이더라도 Top 3 같은 작은 대상에만 적용할 수 있도록 지금 구조를 1차 필터로 활용할 수 있다.
관련 커밋 / PR
- PR #4 Add RSS collector
- 59a0156 feat: implement rss collection service
- 8e85790 feat: expose rss collection endpoint
- 5afb520 fix: normalize rss item text before persistence
- 358a9ba docs: document rss collector
- PR #5 feat: render briefing scores as table
- e5b7874 feat: render briefing scores as table
- PR #15 docs: document milestone development flow
- 877a74f docs: document milestone development flow
- PR #16 fix: generate topic-specific daily briefings
- 39b390a fix: generate topic-specific daily briefings
fix: generate topic-specific daily briefings by ginsengcandy · Pull Request #16 · ginsengcandy/Questack
Summary add collected item summary to top ranking responses so briefings can use source context add topic-specific daily briefing profiles for database migration, operations monitoring, Spring AI,...
github.com
docs: document milestone development flow by ginsengcandy · Pull Request #15 · ginsengcandy/Questack
Summary document the GitHub milestone and issue workflow in working guidelines add the MVP milestone link and recommended issue order to the roadmap record TD-015 for tracking remaining MVP work t...
github.com
feat: render briefing scores as table by ginsengcandy · Pull Request #5 · ginsengcandy/Questack
Summary Render backend relevance, learning value, implementation value, and total score as a Markdown table in daily briefings Remove score values from the Why it matters sentence so explanations ...
github.com
Add RSS collector by ginsengcandy · Pull Request #4 · ginsengcandy/Questack
Summary add RSS feed configuration for Spring Blog, NAVER D2, and Kakao Tech implement RSS/Atom parsing and collection into CollectedItem expose POST /collections/rss with MockMvc REST Docs snippe...
github.com
오늘 기준으로 Questack은 GitHub/RSS 수집, 랭킹, Top 3 브리핑 생성까지는 MVP Week 1 파이프라인이 잡혔다. 다음 핵심은 live API 없이도 이 흐름을 검증할 수 있는 fixture replay harness를 추가하는 것이다.
'Projects > Daily-Backend: Backend Study Mate' 카테고리의 다른 글
| Questack 개발 일지 - 2026-06-01 (0) | 2026.06.02 |
|---|---|
| Questack 개발기 DAY 1 (0) | 2026.05.24 |
| Questack 2주 개발 워크플로우 (0) | 2026.05.24 |