Files
mdm-ordinis/ordinis-admin-ui/nginx.conf
T
Zimin A.N. ef31499bd9 fix(admin-ui): DatePicker + nested object + raw record fetch для Edit
Несколько связанных багов в форме записей:

DatePicker:
- launch_date / decay_date (format=date) и validFrom/validTo рендерились как
  raw text input → теперь @nstart/ui DatePicker с RU локалью.
- DatePickerProvider добавлен в main.tsx с DATE_PICKER_LOCALE_RU.
- Far-future infinity dates (year>=9999) скрываются (пустое поле).
- ISO date format на submit: yyyy-MM-dd.

Nested object → JsonField fallback:
- orbit (type=object с raan_deg/eccentricity/...) и antennas (array of object)
  показывали [object Object] в text input. Добавлен JsonField — TextArea
  с JSON.stringify/parse, локальный state для невалидного промежуточного
  ввода + inline parse error.

Edit raw record fetch:
- Read-api flatten'ит i18n в строку выбранной локали → form для edit получал
  data.name = 'Terra' вместо {ru-RU, en-US}. На Edit теперь fetch raw record
  через writer GET /api/v1/dictionaries/{name}/records/{businessKey}.
- nginx regex location ~ ^/api/v1/dictionaries/ → writer (вместо узкого regex
  только для /dictionaries/{name}). GET schema, GET raw record, mutations —
  всё на writer. Read-api держит /api/v1/{name}/records/* (другой URL pattern).
- LoadingBlock пока тащим raw запись + Alert на ошибке.
2026-05-04 03:01:08 +03:00

54 lines
2.0 KiB
Nginx Configuration File

server {
listen 80;
server_name _;
# Resolver — coredns (10.233.0.3 на kubespray-кластерах). nodelocal-dns
# (169.254.25.10) при первом cold lookup отвечает SERVFAIL, поэтому
# обращаемся напрямую к ClusterDNS service.
resolver ${RESOLVER_IP} valid=30s ipv6=off;
# Real client IP behind ingress-nginx.
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
root /usr/share/nginx/html;
index index.html;
# /api/v1/dictionaries/* — все admin endpoints (schema, raw record, mutations) идут
# на writer. Read-api держит /api/v1/{name}/records/* (другой URL pattern, flatten i18n).
# Regex-location имеет приоритет над префиксом ниже.
location ~ ^/api/v1/dictionaries/ {
set $backend "ordinis-app.${ORDINIS_NAMESPACE}.svc.${CLUSTER_DOMAIN}";
proxy_pass http://$backend$request_uri;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass_request_headers on;
}
# GET → read-api, мутирующие → writer.
# FQDN в proxy_pass нужен потому что nginx resolver не использует search list.
# Namespace и cluster-domain инжектятся через ENV (см. admin-ui Deployment).
location /api/v1/ {
set $backend "ordinis-read-api.${ORDINIS_NAMESPACE}.svc.${CLUSTER_DOMAIN}";
if ($request_method ~ ^(POST|PUT|PATCH|DELETE)$) {
set $backend "ordinis-app.${ORDINIS_NAMESPACE}.svc.${CLUSTER_DOMAIN}";
}
proxy_pass http://$backend;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass_request_headers on;
}
# SPA history fallback.
location / {
try_files $uri $uri/ /index.html;
}
}