NATS: subject'ы и JWT по окружению из OpenBao (OPENBAO__NATS__*) (#31) #37
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/31-nats-env-config"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #31
Subject'ы и учётные данные NATS tabular-parser — из
OPENBAO__NATS__*(контракт и общая дельта — RSHB/arm-ka-docs#80).Что в этом PR (tabular-parser)
NATSSettings: три subject'а с валидацией (все три, R-3),NATS_JWT/NATS_SEED→SecretStr,hide_input_in_errors=Trueво всех классах настроек.NATS_TABULAR_REQUEST_SUBJECT(queue grouptabular-parser), ack и результат — вNATS_RESULT_SUBJECT(RecognitionWorker(result_subject)).used_subjects()→ лог старта и/healthcheck.subjects(tabular_request,result) при любомnats..env.example, README, CLAUDE.md; дочерний changenats-env-config(спекаtabular-recognition-service).Проверки
make check-full— код 0: lint, test 2313 passed, test-integration 10 passed, docker-build.openspec validate nats-env-config --strict— valid.Связанные PR (одна фича, change
nats-env-configв четырёх репозиториях)Порядок merge любой: умолчания subject'ов не меняются (
files.tabular_uploaded,files.img_uploaded,files.tabular_parsed), поэтому смешанное состояние «часть сервисов уже с настройками» на стенде ничего не ломает.Новые ключи в контуре задавать только после выката всех трёх сервисов — одинаковым набором для всех трёх.
Ключи окружения (одинаковые в трёх сервисах)
OPENBAO__NATS__NATS_TABULAR_REQUEST_SUBJECTfiles.tabular_uploadedOPENBAO__NATS__NATS_IMAGE_REQUEST_SUBJECTfiles.img_uploadedOPENBAO__NATS__NATS_RESULT_SUBJECTfiles.tabular_parsedOPENBAO__NATS__NATS_JWT,NATS_SEEDSecretStrSecretStrSecretStrКаждый сервис проверяет все три имени при старте (непустое, без пробелов,
*,>, пустых токенов; попарно различны) —иначе не стартует, ошибка называет ключ. JWT/seed не попадают в логи,
reprи тексты ошибок валидации(
hide_input_in_errors=Trueво всех классах настроек). Subject'ы сервиса — в логе старта и в/healthcheck.subjectsпри любом состоянии NATS. Queue group'ы и
schema_versionне меняются.Rulings I made
Решения без обсуждения —
docs/openspec/changes/nats-env-config/design.md, раздел «Decisions made without discussion».NATS_TABULAR_REQUEST_SUBJECT,NATS_IMAGE_REQUEST_SUBJECT,NATS_RESULT_SUBJECT(по образцу FileWorker; у нас два subject'а запроса).schema_versionне меняется: тела сообщений те же, subject'ы — окружение.subjectsв/healthcheckотдаётся и приnats = off.SecretStrне переводятся (вне запроса); в ошибках валидации они скрытыhide_input_in_errors.nats-env-configв четырёх репозиториях, один план SDD.arm-core); OQ-83 дляmake e2eоткрыт.make checkв docs запускается сCHANGE=nats-env-config(дефолт Makefile указывает на архивный change).Находки
subscribe4f0636f(tabular-parser)1b50d65(tabular-parser).strip()seednats.pyqa-guide.mddev/README.md, порядок правилrecognition_job.request_subjectпосле смены настроек/healthcheckбезsubjects1b50d65, c10f927SHALL … files.*формально не помечают имена как умолчанияCLAUDE.mdсервисов иrepo-templatesбез «по умолчанию»1b50d65, c10f927, 32fa327.env.exampleядра и сервисов.env.example/.env.testпроверяет тестfile_mismatch, переносы docstring'ов arm-corenpm install404 на rollup вweb-checkcheck-fullзелёныйОтложено (deferred → follow-up при закрытии)
tabular-recognition-service,image-recognition-gateway,recognition-job-exchange,recognition-contract) называютfiles.*вSHALLбез пометки «по умолчанию»; ADDED-требование это покрывает по смыслу, формально — нет. Решить отдельным change'ем.test_recognition_exchange.py,test_api_files_upload.py) перевести на уникальные subject'ы — закрыть OQ-83 дляmake test-integrationядра.docs/Makefile:CHANGE ?= slice-0-skeletonуказывает на архивный change,make checkбез параметра красный.hide_input_in_errors(pydantic обрезаетinput_value, длинный JWT без защиты не «утекает» целиком).🤖 Generated with Claude Code