This commit is contained in:
Дмитрий Соловьев
2026-05-29 13:35:32 +03:00
parent 3dce0aec0d
commit e7c2060e2e
40 changed files with 371 additions and 80 deletions
+6 -6
View File
@@ -16,12 +16,12 @@ allprojects {
group = "space.nstart.pcp"
ext.set("kotlinVersion", "2.2.20")
repositories {
maven {
url = uri("https://repo.nstart.cloud/repository/maven-proxy/")
}
// mavenCentral()
// mavenLocal()
// gradlePluginPortal()
// maven {
// url = uri("https://repo.nstart.cloud/repository/maven-proxy/")
// }
mavenCentral()
mavenLocal()
gradlePluginPortal()
maven { url = uri("https://jitpack.io") }
exclusiveContent {
+5 -5
View File
@@ -1,19 +1,19 @@
# TODO before merge request: вернуть старые адреса окружения.
# pcp.infra.postgres.host: 192.168.100.160
# pcp.infra.postgres.host: 192.168.60.201
pcp:
infra:
postgres:
host: 192.168.100.160
host: 192.168.60.201
port: 35400
kafka:
host: 192.168.100.160
host: 192.168.60.201
port: 19092
network:
host: 192.168.100.160
host: 192.168.60.201
ports:
config: 38888
config: 8888
admin: 38889
route-processing: 8080
request: 8080
+1 -1
View File
@@ -56,7 +56,7 @@ spring:
camunda:
client:
enabled: ${CAMUNDA_CLIENT_ENABLED:false}
grpc-address: http://localhost:26500
grpc-address: http://192.168.60.201:26500
auth:
method: none
prefer-rest-over-grpc: false
+4 -4
View File
@@ -3,19 +3,19 @@
pcp:
infra:
postgres:
host: ${PCP_POSTGRES_HOST:localhost}
host: ${PCP_POSTGRES_HOST:192.168.60.201}
port: ${PCP_POSTGRES_PORT:5432}
kafka:
host: ${PCP_KAFKA_HOST:localhost}
host: ${PCP_KAFKA_HOST:192.168.60.201}
port: ${PCP_KAFKA_PORT:29092}
network:
host: ${PCP_NETWORK_HOST:localhost}
host: ${PCP_NETWORK_HOST:192.168.60.201}
ports:
config: 38888
config: 8888
admin: 7000
route-processing: 7004
request: 7005
+2 -2
View File
@@ -75,7 +75,7 @@ spring:
camunda:
client:
mode: self-managed
grpc-address: http://camunda.k8s.265.nstart.local:30901
grpc-address: http://192.168.60.201:26500
auth:
method: none
prefer-rest-over-grpc: false
@@ -136,7 +136,7 @@ spring:
camunda:
client:
mode: self-managed
grpc-address: http://camunda.k8s.265.nstart.local:30901
grpc-address: http://192.168.60.201:26500
auth:
method: none
prefer-rest-over-grpc: false
+1
View File
@@ -13,6 +13,7 @@ spring:
client:
instance:
service-base-url: ${pcp.services.request}
service-path: /swagger/ui
management-base-url: ${pcp.services.request}
datasource:
driver-class-name: org.postgresql.Driver
@@ -11,6 +11,7 @@ spring:
client:
instance:
service-base-url: ${pcp.services.route-processing}
service-path: /swagger/ui
management-base-url: ${pcp.services.route-processing}
datasource:
driver-class-name: org.postgresql.Driver
+6 -2
View File
@@ -4,6 +4,7 @@ spring:
client:
instance:
service-base-url: ${pcp.services.tgu}
service-path: /swagger/ui
management-base-url: ${pcp.services.tgu}
flyway:
enabled: true
@@ -13,7 +14,6 @@ spring:
camunda:
client:
mode: self-managed
# grpc-address: http://camunda.k8s.265.nstart.local:30901
grpc-address: http://192.168.60.201:26500
auth:
method: none
@@ -25,6 +25,10 @@ management:
exposure:
include: health,info,metrics
springdoc:
swagger-ui:
path: /swagger/ui
planning:
notification-before-start-minutes: 263
target-plan-duration-minutes: 180
@@ -43,7 +47,7 @@ topics:
tgu:
test-controller:
enabled: false
enabled: true
classifier:
platforms-url: https://ordinis.nstart.cloud/api/v1/spacecraft/records
@@ -7,7 +7,7 @@ spring:
import: "configserver:"
cloud:
config:
uri: ${CONFIG_SERVER_URI:http://localhost:8888}
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:dev}
@@ -8,7 +8,7 @@ spring:
jackson:
default-property-inclusion: non_null
kafka:
bootstrap-servers: 192.168.60.68:29092
bootstrap-servers: 192.168.1.8:29092
consumer:
group-id: pcp-ballistics-service
auto-offset-reset: earliest
@@ -16,7 +16,7 @@ spring:
default-topic: pcp.tle
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://192.168.60.68:5432/pcp_ballistics
url: jdbc:postgresql://192.168.1.8:5432/pcp_ballistics
username: postgres
password: password
jpa:
@@ -63,7 +63,7 @@ management:
settings:
calculation-interval: 28
ic-service: http://192.168.60.68:9080
ic-service: http://192.168.1.8:9080
server:
port: 7003
@@ -7,7 +7,7 @@ spring:
import: "configserver:"
cloud:
config:
uri: ${CONFIG_SERVER_URI:http://localhost:8888}
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:dev}
@@ -20,7 +20,7 @@ spring:
on-profile: local
datasource:
driver-class-name: org.postgresql.Driver
url: ${PCP_COMPLEX_MISSION_DATASOURCE_URL:jdbc:postgresql://${PCP_POSTGRES_HOST:localhost}:${PCP_POSTGRES_PORT:5432}/pcp_satellites}
url: ${PCP_COMPLEX_MISSION_DATASOURCE_URL:jdbc:postgresql://${PCP_POSTGRES_HOST:192.168.60.201}:${PCP_POSTGRES_PORT:5432}/pcp_satellites}
username: ${PCP_COMPLEX_MISSION_DATASOURCE_USERNAME:postgres}
password: ${PCP_COMPLEX_MISSION_DATASOURCE_PASSWORD:password}
jpa:
@@ -46,7 +46,7 @@ spring:
on-profile: dev
datasource:
driver-class-name: org.postgresql.Driver
url: ${PCP_COMPLEX_MISSION_DATASOURCE_URL:jdbc:postgresql://192.168.100.160:35400/pcp_satellites}
url: ${PCP_COMPLEX_MISSION_DATASOURCE_URL:jdbc:postgresql://192.168.60.201:35400/pcp_satellites}
username: ${PCP_COMPLEX_MISSION_DATASOURCE_USERNAME:postgres}
password: ${PCP_COMPLEX_MISSION_DATASOURCE_PASSWORD:password}
jpa:
@@ -18,9 +18,9 @@ spring:
settings:
calculation-interval: 3
ballistics-service: http://localhost:7003
earth-grid-service: http://localhost:7005
complex-mission-service: http://localhost:7002
stations-service: http://localhost:7009
slots-service: http://localhost:7006
coverage-scheme-service: http://localhost:7011
ballistics-service: http://192.168.1.8:7003
earth-grid-service: http://192.168.1.8:7005
complex-mission-service: http://192.168.1.8:7002
stations-service: http://192.168.1.8:7009
slots-service: http://192.168.1.8:7006
coverage-scheme-service: http://192.168.1.8:7011
@@ -4,8 +4,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties
@ConfigurationProperties("coverage-scheme")
data class CoverageSchemeProperties(
val ballisticsServiceUrl: String = "http://localhost:7003",
val complexMissionServiceUrl: String = "http://localhost:7002",
val ballisticsServiceUrl: String = "http://192.168.1.8:7003",
val complexMissionServiceUrl: String = "http://192.168.1.8:7002",
val satelliteCatalogServiceUrl: String = complexMissionServiceUrl,
val defaultRollStepDegrees: Double = 5.0,
val defaultMinimumTechnologyOverlap: Double = 0.05,
@@ -7,7 +7,7 @@ spring:
import: "configserver:"
cloud:
config:
uri: ${CONFIG_SERVER_URI:http://localhost:8888}
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:dev}
@@ -7,7 +7,7 @@ spring:
import: "configserver:"
cloud:
config:
uri: ${CONFIG_SERVER_URI:http://192.168.100.160:38888}
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}
@@ -15,7 +15,7 @@ spring:
# max-in-memory-size: 16MB
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://192.168.60.68:5432/complan
url: jdbc:postgresql://192.168.1.8:5432/complan
username: postgres
password: password
jpa:
@@ -7,7 +7,7 @@ spring:
import: "configserver:"
cloud:
config:
uri: ${CONFIG_SERVER_URI:http://localhost:8888}
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:dev}
@@ -23,7 +23,7 @@ camunda:
enabled: false
settings:
ballistics-service: http://localhost:7003
complex-mission-service: http://localhost:7002
satellite-catalog-service: http://localhost:7013
stations-service: http://localhost:7009
ballistics-service: http://192.168.1.8:7003
complex-mission-service: http://192.168.1.8:7002
satellite-catalog-service: http://192.168.1.8:7013
stations-service: http://192.168.1.8:7009
@@ -15,7 +15,7 @@ class KafkaProducerConfig {
@Bean
@ConditionalOnMissingBean
fun requestProducerFactory(
@Value("\${spring.kafka.bootstrap-servers:192.168.100.160:19092}") bootstrapServers: String,
@Value("\${spring.kafka.bootstrap-servers:192.168.1.8:19092}") bootstrapServers: String,
): ProducerFactory<String, String> {
return DefaultKafkaProducerFactory(
mapOf(
@@ -7,7 +7,7 @@ spring:
import: "configserver:"
cloud:
config:
uri: ${CONFIG_SERVER_URI:http://localhost:8888}
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}
@@ -13,7 +13,7 @@ spring:
label: ${SPRING_CLOUD_CONFIG_LABEL:master}
datasource:
driver-class-name: org.postgresql.Driver
url: ${PCP_ROUTE_PROCESSING_DATASOURCE_URL:jdbc:postgresql://${PCP_POSTGRES_HOST:localhost}:${PCP_POSTGRES_PORT:5432}/pcp_route_processing}
url: ${PCP_ROUTE_PROCESSING_DATASOURCE_URL:jdbc:postgresql://${PCP_POSTGRES_HOST:192.168.1.8}:${PCP_POSTGRES_PORT:5432}/pcp_route_processing}
username: ${PCP_ROUTE_PROCESSING_DATASOURCE_USERNAME:postgres}
password: ${PCP_ROUTE_PROCESSING_DATASOURCE_PASSWORD:password}
jpa:
@@ -98,7 +98,7 @@
],
"assets": {
"schema-calibration-vh": {
"href": "http://192.168.100.160:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/calibration-s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=26988c6a3490f71382ae9e61ff0d7b59aca32ec652993a785d24e8dd81e70939",
"href": "http://192.168.1.8:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/calibration-s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=26988c6a3490f71382ae9e61ff0d7b59aca32ec652993a785d24e8dd81e70939",
"title": "xml",
"description": null,
"type": "application/xml",
@@ -107,7 +107,7 @@
]
},
"schema-calibration-vv": {
"href": "http://192.168.100.160:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/calibration-s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=edd6957a0404ead07e7a31d0759db26b3a6ad33394247c177dc41a7abf5972d0",
"href": "http://192.168.1.8:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/calibration-s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=edd6957a0404ead07e7a31d0759db26b3a6ad33394247c177dc41a7abf5972d0",
"title": "xml",
"description": null,
"type": "application/xml",
@@ -116,7 +116,7 @@
]
},
"schema-noise-vh": {
"href": "http://192.168.100.160:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/noise-s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=3efe46114ed6dfeac898963510d3ba9c8b537c803b1fa69a5a03d5b462a1665c",
"href": "http://192.168.1.8:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/noise-s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=3efe46114ed6dfeac898963510d3ba9c8b537c803b1fa69a5a03d5b462a1665c",
"title": "xml",
"description": null,
"type": "application/xml",
@@ -125,7 +125,7 @@
]
},
"schema-noise-vv": {
"href": "http://192.168.100.160:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/noise-s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=0ca91479ba4132dbf13c2637f97567eb29ee9ca818009eaf501072995fe784ca",
"href": "http://192.168.1.8:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/noise-s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=0ca91479ba4132dbf13c2637f97567eb29ee9ca818009eaf501072995fe784ca",
"title": "xml",
"description": null,
"type": "application/xml",
@@ -134,7 +134,7 @@
]
},
"schema-product-vh": {
"href": "http://192.168.100.160:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120819Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=39817f0b7610c0b20a23d0fae24e7183f0d3719ba6ab2f315c320c9c6530274f",
"href": "http://192.168.1.8:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120819Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=39817f0b7610c0b20a23d0fae24e7183f0d3719ba6ab2f315c320c9c6530274f",
"title": "xml",
"description": null,
"type": "application/xml",
@@ -143,7 +143,7 @@
]
},
"schema-product-vv": {
"href": "http://192.168.100.160:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120819Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=85d28bc2bb94724b4db7df84121d4252b423fa429204e4b25e06b9d725f3aeee",
"href": "http://192.168.1.8:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120819Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=85d28bc2bb94724b4db7df84121d4252b423fa429204e4b25e06b9d725f3aeee",
"title": "xml",
"description": null,
"type": "application/xml",
@@ -152,7 +152,7 @@
]
},
"safe-manifest": {
"href": "http://192.168.100.160:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/manifest.safe?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120819Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=dbb22d57d031a412e2b46273edf32cfcb7fbdae1fa1fcc74bdcaa39a5e086f53",
"href": "http://192.168.1.8:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/manifest.safe?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120819Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=dbb22d57d031a412e2b46273edf32cfcb7fbdae1fa1fcc74bdcaa39a5e086f53",
"title": "safe",
"description": null,
"type": "application/xml",
@@ -161,7 +161,7 @@
]
},
"vh": {
"href": "http://192.168.100.160:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002_cog.tif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120824Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=dbecc9e04e976751e855f53e9a9a8db5d6365a30ac7ec116f31b0936ee375648",
"href": "http://192.168.1.8:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002_cog.tif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120824Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=dbecc9e04e976751e855f53e9a9a8db5d6365a30ac7ec116f31b0936ee375648",
"title": "tif",
"description": null,
"type": "image/tiff; application=geotiff; profile=cloud-optimized",
@@ -170,7 +170,7 @@
]
},
"vv": {
"href": "http://192.168.100.160:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001_cog.tif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120829Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=34cf1e5f5174b7cb5ca5d173ff699923819d5df28486436d972efa59ac9b1ddb",
"href": "http://192.168.1.8:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001_cog.tif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120829Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=34cf1e5f5174b7cb5ca5d173ff699923819d5df28486436d972efa59ac9b1ddb",
"title": "tif",
"description": null,
"type": "image/tiff; application=geotiff; profile=cloud-optimized",
@@ -179,7 +179,7 @@
]
},
"kml": {
"href": "http://192.168.100.160:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/map-overlay.kml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120829Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=92f63b9f463041c4ed87b3cb508ba8c57fd2db8ea2d22026087ba57d2ef88f54",
"href": "http://192.168.1.8:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/map-overlay.kml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120829Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=92f63b9f463041c4ed87b3cb508ba8c57fd2db8ea2d22026087ba57d2ef88f54",
"title": "kml",
"description": null,
"type": "application/kml",
@@ -188,7 +188,7 @@
]
},
"thumbnail": {
"href": "http://192.168.100.160:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/quick-look.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120829Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=19bebb1e446add1d6e0898b4329d2a3e016f59087719ce2b51dff5c487835cb0",
"href": "http://192.168.1.8:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/quick-look.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120829Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=19bebb1e446add1d6e0898b4329d2a3e016f59087719ce2b51dff5c487835cb0",
"title": "png",
"description": null,
"type": "image/png",
File diff suppressed because one or more lines are too long
@@ -7,7 +7,7 @@ spring:
import: "configserver:"
cloud:
config:
uri: ${CONFIG_SERVER_URI:http://localhost:8888}
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:dev}
@@ -7,7 +7,7 @@ spring:
import: "configserver:"
cloud:
config:
uri: ${CONFIG_SERVER_URI:http://localhost:8888}
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:dev}
@@ -7,7 +7,7 @@ spring:
import: "configserver:"
cloud:
config:
uri: ${CONFIG_SERVER_URI:http://localhost:8888}
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}
File diff suppressed because one or more lines are too long
@@ -1,6 +1,7 @@
package space.nstart.pcp_tgu_service.config
/** Настраивает Jackson-сериализацию для payload'ов клиента Camunda. */
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.databind.SerializationFeature
import com.fasterxml.jackson.databind.json.JsonMapper
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
@@ -13,15 +14,23 @@ import org.springframework.context.annotation.Configuration
@Configuration
class CamundaJacksonConfig {
/** Создаёт JSON mapper для Camunda с поддержкой Kotlin-классов и Java time типов. */
@Bean("camundaJsonMapper")
fun camundaJsonMapper(): CamundaJsonMapper {
val objectMapper = JsonMapper.builder()
/**
* The service code still depends on Jackson 2 APIs, while the shared Boot 4 stack
* auto-configures Jackson 3 for WebFlux. Keep a dedicated Jackson 2 mapper for
* internal parsing and Camunda payloads until the module is migrated.
*/
@Bean
fun objectMapper(): ObjectMapper {
return JsonMapper.builder()
.addModule(KotlinModule.Builder().build())
.addModule(JavaTimeModule())
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.build()
}
/** Создаёт JSON mapper для Camunda с поддержкой Kotlin-классов и Java time типов. */
@Bean("camundaJsonMapper")
fun camundaJsonMapper(objectMapper: ObjectMapper): CamundaJsonMapper {
return CamundaObjectMapper(objectMapper)
}
}
@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
import reactor.core.publisher.Mono
import reactor.core.scheduler.Schedulers
import space.nstart.pcp_tgu_service.domain.PlanDecision
import space.nstart.pcp_tgu_service.dto.PlanDecisionMessage
import space.nstart.pcp_tgu_service.dto.PlanResponse
import space.nstart.pcp_tgu_service.dto.ProcessStartResponse
@@ -19,8 +20,12 @@ import space.nstart.pcp_tgu_service.service.HandlePlanDecisionUseCase
import space.nstart.pcp_tgu_service.service.IssueDuePlanWorker
import space.nstart.pcp_tgu_service.service.PlanQueryService
import space.nstart.pcp_tgu_service.service.PlanRecalculationJobService
import space.nstart.pcp_tgu_service.service.PlatformService
import space.nstart.pcp_tgu_service.service.RebuildPlanScheduleUseCase
import space.nstart.pcp_tgu_service.service.TestPlanDecisionService
import space.nstart.pcp_tgu_service.service.VisibilityRefreshJobService
import java.nio.file.Files
import java.nio.file.Path
import java.time.LocalDateTime
import java.util.UUID
@@ -36,7 +41,9 @@ class TestTguController(
private val rebuildPlanScheduleUseCase: RebuildPlanScheduleUseCase,
private val issueDuePlanWorker: IssueDuePlanWorker,
private val handlePlanDecisionUseCase: HandlePlanDecisionUseCase,
private val testPlanDecisionService: TestPlanDecisionService,
private val externalPointsClient: ExternalPointsClient,
private val platformService: PlatformService,
private val planQueryService: PlanQueryService
) {
/** Ставит refresh job для КА. */
@@ -71,6 +78,30 @@ class TestTguController(
handlePlanDecisionUseCase.handle(message)
}.subscribeOn(Schedulers.boundedElastic())
/** Генерирует ACCEPTED/REJECTED decision event для active attempt указанного persisted plan. */
@PostMapping("/plans/{planId}/decision")
fun generatePlanDecision(
@PathVariable planId: UUID,
@RequestParam decision: PlanDecision,
@RequestParam(required = false) reason: String?
): Mono<PlanDecisionMessage> =
Mono.fromCallable {
testPlanDecisionService.generateDecision(planId, decision, reason)
}.subscribeOn(Schedulers.boundedElastic())
/** Загружает cache аппаратов из файла с root-array payload НСИ вместо запроса в НСИ. */
@PostMapping("/platforms/load-from-file")
fun loadPlatformsFromFile(@RequestParam("path") filePath: String): Mono<TestPlatformsLoadResponse> =
Mono.fromCallable {
val path = Path.of(filePath).toAbsolutePath().normalize()
val platforms = platformService.loadPlatformsFromNsiPayload(Files.readString(path))
TestPlatformsLoadResponse(
filePath = path.toString(),
loadedCount = platforms.size,
allowedCount = platformService.loadAllowedPlatforms().size
)
}.subscribeOn(Schedulers.boundedElastic())
/** Загружает raw payload окон видимости из баллистики для диагностики. */
@GetMapping("/external-points/{noradId}")
fun getExternalPoints(
@@ -93,3 +124,9 @@ class TestTguController(
PlanResponse.from(planQueryService.getByPlanId(planId))
}.subscribeOn(Schedulers.boundedElastic())
}
data class TestPlatformsLoadResponse(
val filePath: String,
val loadedCount: Int,
val allowedCount: Int
)
@@ -1,6 +1,7 @@
package space.nstart.pcp_tgu_service.service
/** Загружает метаданные платформ КА и применяет простую in-memory фильтрацию. */
import com.fasterxml.jackson.databind.ObjectMapper
import space.nstart.pcp_tgu_service.config.ClassifierProperties
import space.nstart.pcp_tgu_service.domain.PlatformCatalogItem
import space.nstart.pcp_tgu_service.dto.NsiPlatformDto
@@ -14,6 +15,7 @@ import java.time.Instant
class PlatformService(
private val platformsClassifierClient: PlatformsClassifierClient,
private val classifierProperties: ClassifierProperties,
private val objectMapper: ObjectMapper,
private val clock: Clock = Clock.systemUTC()
) {
private val log = LoggerFactory.getLogger(javaClass)
@@ -40,6 +42,13 @@ class PlatformService(
now.isBefore(platform.validTo)
}
/** Replaces the in-memory platform cache from a raw NSI response payload for test-only manual runs. */
fun loadPlatformsFromNsiPayload(payloadJson: String): List<PlatformCatalogItem> =
synchronized(cacheLock) {
val platforms = objectMapper.readValue(payloadJson, Array<NsiPlatformDto>::class.java).toList()
cachePlatforms(platforms, Instant.now(clock))
}
private fun loadCachedPlatforms(): List<PlatformCatalogItem> {
val now = Instant.now(clock)
cachedPlatforms?.takeIf { cache -> cache.isActual(now) }?.let { cache -> return cache.platforms }
@@ -54,7 +63,11 @@ class PlatformService(
}
private fun fetchAndCachePlatforms(now: Instant): List<PlatformCatalogItem> {
val platforms = platformsClassifierClient.fetchPlatforms()
return cachePlatforms(platformsClassifierClient.fetchPlatforms(), now)
}
private fun cachePlatforms(platformDtos: List<NsiPlatformDto>, now: Instant): List<PlatformCatalogItem> {
val platforms = platformDtos
.mapNotNull { platform -> platform.toCatalogItem() }
cachedPlatforms = PlatformsCache(
@@ -0,0 +1,80 @@
package space.nstart.pcp_tgu_service.service
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
import org.springframework.http.HttpStatus
import org.springframework.stereotype.Service
import org.springframework.web.server.ResponseStatusException
import space.nstart.pcp_tgu_service.domain.PlanDecision
import space.nstart.pcp_tgu_service.dto.PlanDecisionMessage
import space.nstart.pcp_tgu_service.entity.PlanIssueAttemptStatus
import space.nstart.pcp_tgu_service.repository.PlanIssueAttemptRepository
import space.nstart.pcp_tgu_service.repository.PlannedPlanRepository
import space.nstart.pcp_tgu_service.repository.SpacecraftPlanningStateJpaRepository
import java.time.LocalDateTime
import java.util.UUID
/**
* Test-only helper: генерирует decision event для текущей active attempt persisted plan.
*/
@ConditionalOnProperty(prefix = "tgu.test-controller", name = ["enabled"], havingValue = "true")
@Service
class TestPlanDecisionService(
private val plannedPlanRepository: PlannedPlanRepository,
private val planIssueAttemptRepository: PlanIssueAttemptRepository,
private val spacecraftPlanningStateJpaRepository: SpacecraftPlanningStateJpaRepository,
private val handlePlanDecisionUseCase: HandlePlanDecisionUseCase
) {
/**
* Создаёт synthetic decision event и проводит его через тот же use case, что Kafka consumer.
*/
fun generateDecision(planId: UUID, decision: PlanDecision, reason: String?): PlanDecisionMessage {
val plan = plannedPlanRepository.findById(planId).orElse(null)
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "Plan with planId=$planId was not found")
val state = spacecraftPlanningStateJpaRepository.findById(plan.spacecraftId).orElse(null)
?: throw ResponseStatusException(
HttpStatus.CONFLICT,
"Planning state for spacecraftId=${plan.spacecraftId} was not found"
)
if (state.activePlanId != planId || state.activeAttemptId == null) {
throw ResponseStatusException(
HttpStatus.CONFLICT,
"Plan $planId is not the active plan waiting for decision"
)
}
val attempt = planIssueAttemptRepository.findById(state.activeAttemptId!!).orElse(null)
?: throw ResponseStatusException(
HttpStatus.CONFLICT,
"Active attempt ${state.activeAttemptId} for plan $planId was not found"
)
if (attempt.planId != planId) {
throw ResponseStatusException(
HttpStatus.CONFLICT,
"Active attempt ${attempt.attemptId} does not belong to plan $planId"
)
}
if (attempt.status !in ACTIVE_ATTEMPT_STATUSES) {
throw ResponseStatusException(
HttpStatus.CONFLICT,
"Attempt ${attempt.attemptId} is already terminal with status=${attempt.status}"
)
}
val message = PlanDecisionMessage(
eventId = UUID.randomUUID(),
spacecraftId = plan.spacecraftId,
planId = plan.planId,
attemptId = attempt.attemptId,
decision = decision,
decisionTime = LocalDateTime.now(),
reason = reason?.takeIf { it.isNotBlank() } ?: DEFAULT_REASON
)
handlePlanDecisionUseCase.handle(message)
return message
}
private companion object {
val ACTIVE_ATTEMPT_STATUSES = setOf(PlanIssueAttemptStatus.STARTING, PlanIssueAttemptStatus.STARTED)
const val DEFAULT_REASON = "TEST_CONTROLLER"
}
}
@@ -7,7 +7,7 @@ spring:
import: "configserver:"
cloud:
config:
uri: ${CONFIG_SERVER_URI:http://localhost:8888}
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}
@@ -1,5 +1,6 @@
package space.nstart.pcp_tgu_service.integration.api
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.sun.net.httpserver.HttpServer
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
@@ -57,7 +58,8 @@ class ExternalPointsClientTest {
platformsUrl = "http://localhost",
platformsCacheTtl = java.time.Duration.ofMinutes(15),
allowedPlatformStatuses = setOf("OPERATIONAL", "STANDBY")
)
),
jacksonObjectMapper().findAndRegisterModules()
) {
override fun loadPlatforms(status: String?): List<PlatformCatalogItem> =
error("ExternalPointsClient must use loadAllowedPlatforms")
@@ -1,5 +1,6 @@
package space.nstart.pcp_tgu_service.service
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import org.mockito.Mockito.mock
@@ -121,6 +122,41 @@ class PlatformServiceTest {
verify(client, times(1)).fetchPlatforms()
}
@Test
fun `loadPlatformsFromNsiPayload replaces cached platforms from file payload`() {
val client = mock(PlatformsClassifierClient::class.java)
`when`(client.fetchPlatforms()).thenReturn(
listOf(platformDto(id = "from-nsi-id", status = "OPERATIONAL", noradId = 1L))
)
val service = service(client)
val fromNsi = service.loadPlatforms()
val fromFile = service.loadPlatformsFromNsiPayload(
"""
[
{
"id": "from-file-id",
"businessKey": "business-from-file-id",
"data": {
"name": "Satellite from-file-id",
"status": "OPERATIONAL",
"norad_id": 25544,
"mission": "MISSION"
},
"validFrom": "2026-01-01T00:00:00Z",
"validTo": "2026-12-31T00:00:00Z"
}
]
""".trimIndent()
)
val cachedAfterFileLoad = service.loadPlatforms()
assertEquals(listOf("from-nsi-id"), fromNsi.map { it.nsiId })
assertEquals(listOf("from-file-id"), fromFile.map { it.nsiId })
assertEquals(listOf("from-file-id"), cachedAfterFileLoad.map { it.nsiId })
verify(client, times(1)).fetchPlatforms()
}
private fun service(
client: PlatformsClassifierClient,
clock: Clock = Clock.fixed(Instant.parse("2026-05-26T12:00:00Z"), ZoneOffset.UTC)
@@ -132,6 +168,7 @@ class PlatformServiceTest {
platformsCacheTtl = Duration.ofMinutes(15),
allowedPlatformStatuses = setOf("OPERATIONAL")
),
objectMapper = jacksonObjectMapper().findAndRegisterModules(),
clock = clock
)
@@ -0,0 +1,107 @@
package space.nstart.pcp_tgu_service.service
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.Assertions.assertThrows
import org.junit.jupiter.api.Test
import org.mockito.Mockito.mock
import org.mockito.Mockito.verify
import org.mockito.Mockito.verifyNoInteractions
import org.mockito.Mockito.`when`
import org.springframework.http.HttpStatus
import org.springframework.web.server.ResponseStatusException
import space.nstart.pcp_tgu_service.domain.PlanDecision
import space.nstart.pcp_tgu_service.dto.PlanDecisionMessage
import space.nstart.pcp_tgu_service.entity.PlanIssueAttemptEntity
import space.nstart.pcp_tgu_service.entity.PlanIssueAttemptStatus
import space.nstart.pcp_tgu_service.entity.PlannedPlanEntity
import space.nstart.pcp_tgu_service.entity.PlannedPlanStatus
import space.nstart.pcp_tgu_service.entity.SpacecraftPlanningStateEntity
import space.nstart.pcp_tgu_service.repository.PlanIssueAttemptRepository
import space.nstart.pcp_tgu_service.repository.PlannedPlanRepository
import space.nstart.pcp_tgu_service.repository.SpacecraftPlanningStateJpaRepository
import java.time.LocalDateTime
import java.util.Optional
import java.util.UUID
class TestPlanDecisionServiceTest {
@Test
fun `generate decision builds message for active attempt and delegates to use case`() {
val plan = plannedPlan()
val attempt = attempt(plan.planId, PlanIssueAttemptStatus.STARTED)
val state = SpacecraftPlanningStateEntity(
spacecraftId = plan.spacecraftId,
activePlanId = plan.planId,
activeAttemptId = attempt.attemptId
)
val handlePlanDecisionUseCase = mock(HandlePlanDecisionUseCase::class.java)
val service = service(plan, attempt, state, handlePlanDecisionUseCase)
val message = service.generateDecision(plan.planId, PlanDecision.ACCEPTED, "manual accept")
assertNotNull(message.eventId)
assertEquals(plan.spacecraftId, message.spacecraftId)
assertEquals(plan.planId, message.planId)
assertEquals(attempt.attemptId, message.attemptId)
assertEquals(PlanDecision.ACCEPTED, message.decision)
assertEquals("manual accept", message.reason)
verify(handlePlanDecisionUseCase).handle(message)
}
@Test
fun `generate decision rejects plan without active attempt`() {
val plan = plannedPlan()
val attempt = attempt(plan.planId, PlanIssueAttemptStatus.STARTED)
val state = SpacecraftPlanningStateEntity(spacecraftId = plan.spacecraftId)
val handlePlanDecisionUseCase = mock(HandlePlanDecisionUseCase::class.java)
val service = service(plan, attempt, state, handlePlanDecisionUseCase)
val exception = assertThrows(ResponseStatusException::class.java) {
service.generateDecision(plan.planId, PlanDecision.REJECTED, null)
}
assertEquals(HttpStatus.CONFLICT, exception.statusCode)
verifyNoInteractions(handlePlanDecisionUseCase)
}
private fun service(
plan: PlannedPlanEntity,
attempt: PlanIssueAttemptEntity,
state: SpacecraftPlanningStateEntity,
handlePlanDecisionUseCase: HandlePlanDecisionUseCase
): TestPlanDecisionService {
val plannedPlanRepository = mock(PlannedPlanRepository::class.java)
val planIssueAttemptRepository = mock(PlanIssueAttemptRepository::class.java)
val stateRepository = mock(SpacecraftPlanningStateJpaRepository::class.java)
`when`(plannedPlanRepository.findById(plan.planId)).thenReturn(Optional.of(plan))
`when`(planIssueAttemptRepository.findById(attempt.attemptId)).thenReturn(Optional.of(attempt))
`when`(stateRepository.findById(plan.spacecraftId)).thenReturn(Optional.of(state))
return TestPlanDecisionService(
plannedPlanRepository = plannedPlanRepository,
planIssueAttemptRepository = planIssueAttemptRepository,
spacecraftPlanningStateJpaRepository = stateRepository,
handlePlanDecisionUseCase = handlePlanDecisionUseCase
)
}
private fun plannedPlan(): PlannedPlanEntity =
PlannedPlanEntity(
planId = UUID.randomUUID(),
spacecraftId = "25544",
startTime = LocalDateTime.now().plusHours(1),
endTime = LocalDateTime.now().plusHours(2),
kppId = "KPP-1",
status = PlannedPlanStatus.WAITING_DECISION
)
private fun attempt(planId: UUID, status: PlanIssueAttemptStatus): PlanIssueAttemptEntity =
PlanIssueAttemptEntity(
attemptId = UUID.randomUUID(),
planId = planId,
attemptNo = 1,
status = status
)
}
@@ -48,8 +48,8 @@ class WebConfig : WebMvcConfigurer {
.allowedOrigins(
"http://localhost:3000",
"http://localhost:8080",
"http://192.168.60.68:7008",
"http://192.168.60.68:8080"
"http://192.168.1.8:7008",
"http://192.168.1.8:8080"
)
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH")
.allowedHeaders("*")
@@ -66,7 +66,7 @@ class WebConfig : WebMvcConfigurer {
// Разрешенные origin'ы
allowedOriginPatterns = listOf(
"http://localhost:*",
"http://192.168.60.68:*"
"http://192.168.1.8:*"
)
// Разрешенные заголовки
allowedHeaders = listOf(
@@ -7,7 +7,7 @@ spring:
import: "configserver:"
cloud:
config:
uri: ${CONFIG_SERVER_URI:http://localhost:8888}
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:dev}
@@ -7,7 +7,7 @@ spring:
import: "configserver:"
cloud:
config:
uri: ${CONFIG_SERVER_URI:http://localhost:8888}
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:dev}
@@ -9,7 +9,7 @@ spring:
default-property-inclusion: non_null
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://192.168.100.160:35400/pcp_slots
url: jdbc:postgresql://192.168.1.8:35400/pcp_slots
username: postgres
password: password
hikari:
@@ -59,7 +59,7 @@ management:
enabled: true
settings:
earth-grid-service: http://192.168.60.68:7005
earth-grid-service: http://192.168.1.8:7005
server:
port: 7006
@@ -7,7 +7,7 @@ spring:
import: "configserver:"
cloud:
config:
uri: ${CONFIG_SERVER_URI:http://localhost:8888}
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:dev}
@@ -5,7 +5,7 @@ spring:
config:
enabled: false
kafka:
bootstrap-servers: 192.168.60.68:29092
bootstrap-servers: 192.168.1.8:29092
consumer:
group-id: pcp
auto-offset-reset: earliest
@@ -13,7 +13,7 @@ spring:
default-topic: pcp.tle
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://192.168.60.68:5432/pcp_tle
url: jdbc:postgresql://192.168.1.8:5432/pcp_tle
username: postgres
password: password
jpa:
@@ -62,7 +62,7 @@ management:
enabled: true
settings:
complex-mission-service: http://192.168.60.68:7002
complex-mission-service: http://192.168.1.8:7002
tle:
polling: