Skip to content

알파의 사전적재 2종을 한 번 재추출한다 — document_id 한 열에 두 규칙이 서 있다 (#576 후속) #590

Description

@hd0rable

#576(결정 1.37 배선)이 머지돼서 새 추출만 계약 값을 씁니다. 알파에 이미 쌓인 사전적재
2종의 스냅샷은 아직 파일명 규칙 값입니다. 그 두 상품을 한 번 재추출하면 규칙이 하나로
남습니다.

무엇이 갈려 있나

계약 샘플 / 지금 서버가 넘기는 값     doc-els-kiwoom-4181
                                  doc-var-samsung-b2601

#576 이전 추출이 남긴 값            doc-els-kiwoom-4181-simple-prospectus
(파서가 파일명에서 만든 것)          doc-var-samsung-b2601-product-summary

extracted_risk_items.document_id 한 열에 두 규칙이 서 있습니다. 결정 1.37 이 막으려던
상태이고, 그 상태에서는 "이 항목이 어느 파스에서 왔나" 에 답할 수 없습니다.

할 일 — POST 두 번

POST /api/products/doc-els-kiwoom-4181/extract
POST /api/products/doc-var-samsung-b2601/extract

마이그레이션은 없습니다. ProductRiskItems.extract 가 deleteByProductId 후 전량
재삽입이라(:117-122) 그 두 상품의 스냅샷이 새 규칙으로 교체됩니다. 항목 수는 그대로여야
합니다(ELS 13 · 변액 10).

❗필요한 것은 둘뿐입니다 — SSH 도 ADMIN 계정도 아닙니다

① https://sphinxfin.duckdns.org 로 나가는 네트워크
② 엣지 basic-auth 자격  (SSM: /sphinx/prod/api-user · api-password)

개방 모드의 nginx 가 경로별로 계정을 주입하고 추출 경로가 거기 들어 있습니다.

web/docker-entrypoint.d/15-demo-mode.sh:108
  ~^/api/products/(documents|[^/]+/extract)$   "Basic $(b64 "$admin")"
rbac_policy.yaml:189   product:manage → roles: [ADMIN]

그래서 바깥 문만 통과하면 됩니다. 명령은 docs/deployment.md §8 관례대로 stdin(-K -)으로
넘깁니다 — -u 는 argv 라 ps 에 보입니다.

SSM_PREFIX="${SSM_PREFIX:-/sphinx/prod}"
U=$(aws ssm get-parameter --name "$SSM_PREFIX/api-user" \
      --with-decryption --query Parameter.Value --output text)
P=$(aws ssm get-parameter --name "$SSM_PREFIX/api-password" \
      --with-decryption --query Parameter.Value --output text)

for p in doc-els-kiwoom-4181 doc-var-samsung-b2601; do
  printf 'user = "%s:%s"\n' "$U" "$P" |
    curl -sS -K - -X POST -o /dev/null -w "$p %{http_code}\n" \
      "https://sphinxfin.duckdns.org/api/products/$p/extract"
done

둘 다 200 이면 끝입니다. 확인은 항목 수로 합니다.

for p in doc-els-kiwoom-4181 doc-var-samsung-b2601; do
  printf 'user = "%s:%s"\n' "$U" "$P" |
    curl -sS -K - -o /dev/null -w "$p %{http_code}\n" \
      "https://sphinxfin.duckdns.org/api/products/$p/risk-items"
done
# ELS 13 · 변액 10 이 그대로여야 한다

❗502 가 나면 재추출이 안 된 것입니다

추출은 ai-service 를 지나므로 LLM 키가 살아 있어야 합니다(결정 7.56 이 같은 자리를 다룹니다).
502 면 기존 스냅샷이 그대로 남습니다 — 실패한 추출이 멀쩡한 스냅샷을 지우지 않는 것이
설계입니다(extract javadoc). 그러니 이 명령은 여러 번 돌려도 안전합니다.

왜 「끝났는지」를 지금은 확인할 수 없나

document_id 를 응답으로 내보내는 경로가 없어서 밖에서는 갈렸는지 알 수 없습니다.
#578 의 ②(폴백이 쓰였는지 신호)가 들어오면 그 확인 자리가 생깁니다 — 그때까지는
"POST 가 200 이었다" 가 유일한 근거입니다. 그래서 위 명령을 돌린 결과를 이 이슈에
붙여 주시면 그것이 기록이 됩니다.

나는 왜 못 돌리나

샌드박스에서 알파로 나가지 않고 aws 자격도 없습니다(aws sts get-caller-identity →
NoCredentials). 자격을 세션으로 가져오는 쪽은 안 합니다 — 비밀정보를 옮기지 않는 것이
그 규칙의 요점입니다. 코드 쪽 배선(#576)은 끝났고 남은 것이 이 한 번의 실행입니다.

관련: #576(배선) · 결정 1.37 · 미결 10.87 · #578(폴백 신호) · #528

Activity

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

Metadata

Metadata

Assignees

Labels

serverSpring (:8000)인프라CI·배포·실행 환경·개발환경 (인프라 R: 오준서)

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions