Skip to content

[NOOK-162] 게시물 파싱 임시 추적 로그 추가 - #112

Merged
dh1010a merged 1 commit into
mainfrom
codex/NOOK-162-observability
Aug 13, 2026
Merged

[NOOK-162] 게시물 파싱 임시 추적 로그 추가#112
dh1010a merged 1 commit into
mainfrom
codex/NOOK-162-observability

Conversation

@dh1010a

@dh1010a dh1010a commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

변경 내용

  • 게시물 수집부터 장소 검색, Google 보충정보 및 사진 저장까지 단계별 DEBUG 추적 로그를 추가했습니다.
  • 모든 신규 로그는 [PostParcingTracker] 접두어와 공통 stage/status/duration/error 필드를 사용합니다.
  • 기존 운영 로그와 Prometheus 지표는 변경하지 않았습니다.

목적

장소 파싱 흐름 개편 중 어느 단계에서 왜 실패했는지, 외부 provider 응답과 처리 시간이 어땠는지 한 요청 단위로 추적하기 위함입니다.

검증

  • ./gradlew check

@dh1010a
dh1010a marked this pull request as ready for review August 13, 2026 10:27
@dh1010a
dh1010a requested a review from kkjsw17 as a code owner August 13, 2026 10:27
@dh1010a
dh1010a force-pushed the codex/NOOK-162-observability branch from 6c4e208 to e7d3cb3 Compare August 13, 2026 10:30
@dh1010a
dh1010a merged commit 01f7b98 into main Aug 13, 2026
2 checks passed
@dh1010a
dh1010a deleted the codex/NOOK-162-observability branch August 13, 2026 10:30

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6c4e208ed2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

place.photoEvent("google.photo.media.failed", PHOTO_MEDIA_STAGE, sequence, exception),
exception,
)
}.getOrNull() ?: return null

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve the warning for photo-media lookup failures

When the Google photo media request throws, this branch converts the exception to null and returns before the outer fetch failure handler can see it. The only replacement is eventLogger.warn, but the new ProcessingLog implementation routes that extension through atDebug(), so deployments running at INFO lose the operational warning that the previous storePhoto catch emitted; retain a normal logger.warn for this failure path.

Useful? React with 👍 / 👎.

Comment on lines +52 to +55
ProcessingLogEvent(
action = "place.provider.search.completed",
flow = "place",
stage = "search",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Propagate the post context into provider worker threads

When Naver or Kakao is invoked through CompositePlaceSearchProvider, the provider call runs on the plain fixed thread pool created by PlaceSearchConfig, so the caller's MDC is not available here. Because these new provider events also omit sourcePostId, their per-provider results cannot be correlated with the source post; copy/restore the MDC around submitted work or carry the post ID into these events.

Useful? React with 👍 / 👎.

Comment on lines +151 to +154
ProcessingLogEvent(
action = "openai.response.completed",
flow = "content-inference",
stage = name,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use the invoking flow for shared OpenAI events

This adapter is shared by post inference, place-clue extraction, candidate selection, and place-tag extraction, but every completion event is labeled content-inference. Consequently calls made under the place and place-tags pipelines are misclassified—and may conflict with the surrounding MDC value—so flow-based searches omit or incorrectly group those OpenAI stages; derive the flow from the operation or pass it into requestStructured.

Useful? React with 👍 / 👎.

Comment on lines +52 to +55
"instagram.provider.request.failed",
"failure",
startedAt,
mapOf("http.status_code" to statusCode),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include failure fields in provider failure events

When an Apify or Bright Data HTTP request fails, the structured event records only the status code. Attaching the exception as the logging cause does not populate the declared failure.type and failure.reason fields, so searches using those standardized fields cannot classify provider failures; add bounded exception type and reason values to this event.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant