87905311b1
Базой цепочки план становится на ЗАКЛАДКЕ (LAID_IN), а не на приёмке.
После принятого плана можно отправить коррекцию — она тоже примется;
несколько выдач «в полёте» по одному КА теперь норма, а не конфликт.
- ACCEPT больше не двигает currentBasePlanId/chainVersion и не запирает
слот — только переводит план в AWAITING_LAYIN.
- Новый позитивный топик layin-confirmed + LayinConfirmedConsumer →
handleLayinConfirmed: AWAITING_LAYIN → LAID_IN, план становится базой
(chainVersion++), конкуренты на пересекающемся окне гасятся в новый
терминальный статус SUPERSEDED. Гард ±10 мин (LAYIN_MIN_SEPARATION_MINUTES):
нельзя заложить план со стартом в пределах 10 мин от уже заложенного (409).
- «В полёте» считается из статусов планов (ISSUING/WAITING_DECISION), а не
из единственного active-слота; снят гард «идёт выдача другого плана».
IssueDuePlanWorker гейтится hasBlockingInFlight, базу нового плана берёт
как latestCommittedPlanId; grace больше не двигает базу.
- PlanProjectionService якорит по самому дальнему committed-окну
{ISSUING, WAITING_DECISION, AWAITING_LAYIN, LAID_IN}.
- REJECT ставит паузу только если по КА не осталось живых кандидатов.
- CreateDraftUseCase: replace-черновик наследует ПРЕДШЕСТВЕННИКА исходного
плана (base.basePlanId), а не сам план — коррекция занимает тот же слот;
fork-forward по-прежнему ссылается на базу. Идемпотентность черновиков —
по слоту (КА + окно), а не по basePlanId.
- Тест-контроллер: POST /test/tgu/plans/{id}/confirm-layin (через BFF
pcp-ui-service) — имитация события «план заложен».
- Док PCP_TGU_PLAN_STATUS_LIFECYCLE обновлён (LAID_IN-переход, SUPERSEDED).
50 lines
1.4 KiB
YAML
50 lines
1.4 KiB
YAML
spring:
|
|
application:
|
|
name: pcp-tgu-service
|
|
profiles:
|
|
default: local
|
|
config:
|
|
import: "configserver:"
|
|
cloud:
|
|
config:
|
|
uri: ${CONFIG_SERVER_URI:http://192.168.60.201:8888}
|
|
fail-fast: ${CONFIG_SERVER_FAIL_FAST:true}
|
|
profile: ${SPRING_CLOUD_CONFIG_PROFILE:${SPRING_PROFILES_ACTIVE:${spring.profiles.default}}}
|
|
label: ${SPRING_CLOUD_CONFIG_LABEL:master}
|
|
|
|
planning:
|
|
notification-before-start-minutes: 263
|
|
target-plan-duration-minutes: 1440
|
|
target-plan-duration-delta-minutes: 240
|
|
external-update-enabled: true
|
|
external-points-lookahead-days: 10
|
|
in-memory-history-days: 14
|
|
external-update-fixed-delay-ms: 600000
|
|
notification-check-fixed-delay-ms: 30000
|
|
min-reissue-lead-minutes: 5
|
|
reissue-prep-minutes: 30
|
|
worker-lock-ttl-seconds: 300
|
|
waiting-decision-grace-minutes: 30
|
|
layin-freeze-minutes: 10
|
|
|
|
topics:
|
|
visibility-windows-changed: pcp.tgu.visibility-windows-changed.v1
|
|
satellite-plan-decision: pcp.tgu.satellite-plan-decision.v1
|
|
layin-failed: pcp.tgu.layin-failed.v1
|
|
layin-confirmed: pcp.tgu.layin-confirmed.v1
|
|
plan-not-accepted: pcp.tgu.plan-not-accepted.v1
|
|
station-params-changed: pcp.tgu.station-params-changed.v1
|
|
|
|
mission-planing:
|
|
base-url: ${pcp.services.mission:http://localhost:7010}
|
|
|
|
tgu:
|
|
test-controller:
|
|
enabled: false
|
|
|
|
management:
|
|
endpoints:
|
|
web:
|
|
exposure:
|
|
include: health,info,metrics,prometheus
|