본문으로 건너뛰기

레시피 수집 상세

이 문서로 해결할 질문

  • recipe-ingestion 각 단계 책임은 무엇인가요?
  • job 상태 전이와 멱등 키는 무엇인가요?
  • 운영/복구는 어떻게 검증하나요?

전체 ETL 개요는 레시피 수집(ETL)을 참고하세요.

파이프라인

단계주체저장소/출력
fetchstandalone jobMongoDB recipe_ingestion_jobs (fetched) + Kafka trigger
parse-submitstandalone job + Kafka consumerOpenAI Parse Batch (parse_submitted)
parse-retrievestandalone jobretrieved_data + recipe-ingestion-persist-triggered
persistKafka consumerPostgreSQL Recipe upsert (persisted)
embed-submitstandalone job + Kafka consumerOpenAI Embedding Batch (embed_submitted)
embed-retrievestandalone jobRecipeEmbedding(pgvector) upsert (embed_retrieved)

상태 전이

Kafka 트리거

토픽발행 단계소비 단계
recipe-ingestion-parse-submit-triggeredfetchparse-submit consumer
recipe-ingestion-persist-triggeredparse-retrievepersist consumer
recipe-ingestion-embed-submit-triggeredpersistembed-submit consumer

모든 payload는 { runId, fetchedCount, triggeredAt } 형식을 사용합니다.

recipe_ingestion_jobs 필드

status

fetchedparse_submittingparse_submittedparse_retrievingparse_retrievedpersistingpersistedembed_submittingembed_submittedembed_retrievingembed_retrieved (또는 failed)

타임스탬프

MongoMongoose설정 시점
fetched_atfetchedAtfetch upsert
parse_submitted_atparseSubmittedAtparse_submitted
parse_retrieved_atparseRetrievedAtparse_retrieved
persisted_atpersistedAtpersisted
embed_submitted_atembedSubmittedAtembed_submitted
embed_retrieved_atembedRetrievedAtembed_retrieved
failed_atfailedAtfailed

Batch ID

MongoMongoose설정 시점
parse_batch_idparseBatchIdparse-submit → parse_submitted
embed_batch_idembedBatchIdembed-submit → embed_submitted

각 파이프라인 단계는 고유 타임스탬프를 가집니다.

CLI

pnpm run recipe-ingestion:fetch
pnpm run recipe-ingestion:parse-submit --run-id <runId>
pnpm run recipe-ingestion:parse-retrieve --run-id <runId>
pnpm run recipe-ingestion:persist --run-id <runId>
pnpm run recipe-ingestion:embed-submit --run-id <runId>
pnpm run recipe-ingestion:embed-retrieve --run-id <runId>

메트릭

standalone CLI job은 종료 직전 Pushgateway로 Prometheus 메트릭을 push합니다.

메트릭설명
recipe_ingestion_stage_total단계별 success / failed / skipped
recipe_ingestion_stage_latency_ms단계 지연
recipe_ingestion_parse_confidence_totalpersist 시 parse confidence
recipe_ingestion_ingredient_match_total재료 매칭 방식
recipe_ingestion_llm_tokens_totalparse-retrieve LLM 토큰

운영 검증

#시나리오확인 포인트
1fetchfetched 증가, recipe-ingestion-parse-submit-triggered 발행
2parse-submitparse_submitted 증가, parseBatchId 기록
3parse-retrieveparse_retrieved 증가, recipe-ingestion-persist-triggered 발행
4persistRecipe upsert, persisted 증가, recipe-ingestion-embed-submit-triggered 발행
5embed-submitembed_submitted 증가, embedBatchId 기록
6embed-retrieveRecipeEmbedding upsert, embed_retrieved 증가

관련 문서