Browse Source

start repo

Volovikov Alexander 2 months ago
commit
1fcff76ff1

+ 3 - 0
.gitignore

@@ -0,0 +1,3 @@
+_Infra/pgadmin
+_Infra/pgdata
+

+ 65 - 0
_Docs/AlgoritmBp.md

@@ -0,0 +1,65 @@
+\usepackage{amsmath}
+
+# Алгоритм расчета 
+Тип оборудования: **Ветровое ружье (`ВР`)**
+
+1. `Отклонение наземного давления атмосферы` $ΔH_{0}$ (мм рт. ст.) и отклонение наземной виртуальной температуры воздуха (град) на уровне метеорологического поста. Отклонение наземного давления атмосферы $ΔH_{0}$, записываемое в бюллетень, определяется как разность измеренного давления Н0 и табличного значения наземного давления, равного 750 мм рт. ст., т. е. $ΔН_{0} = Н_{0} – 750$.
+Если измеренное давление будет больше 750 мм рт. ст., то отклонение ΔН0 имеет знак «плюс», если меньше – знак «минус».
+
+2. `Отклонение приземной виртуальной температуры` ,  записываемое в бюллетень, определяется как разность между приземной виртуальной температурой, измеренной метеорологическим постом, 
+и ее табличным значением, равным **+15,9°С**, т.е.
+
+>
+> $ΔT_{0}^{мп}$ = T0  – 15,9
+>
+>
+>Если приземная  виртуальная температура будет больше +15,9°С, 
+> от отклонение  имеет знак **«плюс»**, если меньше – знак **«минус»**.
+> Приземная виртуальная температура τ0 вычисляется по формуле:
+> 
+> T0 = t0  + $ΔТ_{V}$
+> 
+> где:
+> - t0 - измеренная приземная температура воздуха. Берется из ячейки > `температура`
+> - $ΔТ_{V}$ - виртуальная поправка, определяемая по таблице 1.
+
+**Таблица 1**
+|  $t_{0}$ | Ниже 0 | 0 - 5 | 10 - 15 | 20 | 25 | 30 | 40 |
+|----------|--------|-------|---------|----|----|----|----|
+| $ΔТ_{V}$ | 0      | 0.5   | 1       | 1.5  | 2  | 3.5 | 4.5 |
+
+3. `Средние отклонения температуры воздуха`  $Δt_{Y}$, направление и скорость среднего ветра определяются для стандартных слоев до высоты **4 км**. Среднее отклонение температуры воздуха Y в пределах стандартных высот бюллетеня определяется по **таблице 2**.
+
+**Таблица 2**
+![](./_Images/15.png)
+
+> Входами в таблицы являются стандартные высоты бюллетеня Y 
+> и отклонение приземной виртуальной температуры.
+> 
+> **Среднее отклонение температуры** при отрицательных значениях  указано > в числителе дроби, при положительных – в знаменателе дроби.
+> 
+> Для отклонений $Δt$ между **10 и 20, 20 и 30 и т. д.** среднее отклонение температуры Y определяется путем сложения величины отклонений из столбцов, соответствующих целому числу десятков и числу единиц.
+
+4. `Скорость среднего ветра` $W_{у}$ для всех стандартных высот бюллетеня определяется по **таблице 3**.
+
+**Таблица 3**
+![](./_Images/16.png)
+
+> Входами в таблицы являются стандартные высоты  Y и дальности сноса ветровых пуль Дг (м).
+> При дальности сноса ветровых пуль `Дг  < 40 м` для всех стандартных высот Y скорость среднего ветра принимается равной нулю. В этом случае в бюллетене для всех стандартных высот Y места цифр, отведенные для направления и скорости ветра, заполняются нулями.
+
+
+5. `Направление среднего ветра` $α_{WY}$ для всех стандартных высот определяется по формуле: 
+$α_{WY} = α_{V0} + Δα_{WY}$
+
+где<br>
+$α_{V0}$ – направление приземного ветра;<br>
+$Δα_{WY}$ – приращение среднего ветра относительно направления приземного ветра, определяемое по **таблице 3**
+
+> Для высот более **4000** метров данные просто копируются из значений на 4000 метров.<br>
+> Для высот менее **200** метров данные просто копируются из значений на 200 метров..
+
+
+
+
+

+ 89 - 0
_Docs/AlgoritmDmk.md

@@ -0,0 +1,89 @@
+\usepackage{amsmath}
+
+# Алгоритм расчета 
+Тип оборудования: **Десатный метео комплект (`ДМК`)**
+
+1. `Отклонение наземного давления атмосферы` $ΔH_{0}$ (мм рт. ст.) и отклонение наземной виртуальной температуры воздуха (град) на уровне метеорологического поста. Отклонение наземного давления атмосферы $ΔH_{0}$, записываемое в бюллетень, определяется как разность измеренного давления Н0 и табличного значения наземного давления, равного 750 мм рт. ст., т. е. $ΔН_{0} = Н_{0} – 750$.
+Если измеренное давление будет больше 750 мм рт. ст., то отклонение ΔН0 имеет знак «плюс», если меньше – знак «минус».
+
+2. `Отклонение приземной виртуальной температуры` ,  записываемое в бюллетень, определяется как разность между приземной виртуальной температурой, измеренной метеорологическим постом, 
+и ее табличным значением, равным **+15,9°С**, т.е.
+
+>
+> $ΔT_{0}^{мп}$ = T0  – 15,9
+>
+>
+>Если приземная  виртуальная температура будет больше +15,9°С, 
+> от отклонение  имеет знак **«плюс»**, если меньше – знак **«минус»**.
+> Приземная виртуальная температура τ0 вычисляется по формуле:
+> 
+> T0 = t0  + $ΔТ_{V}$
+> 
+> где:
+> - t0 - измеренная приземная температура воздуха. Берется из ячейки > `температура`
+> - $ΔТ_{V}$ - виртуальная поправка, определяемая по таблице 1.
+
+**Таблица 1**
+|  $t_{0}$ | Ниже 0 | 0 - 5 | 10 - 15 | 20 | 25 | 30 | 40 |
+|----------|--------|-------|---------|----|----|----|----|
+| $ΔТ_{V}$ | 0      | 0.5   | 1       | 1.5  | 2  | 3.5 | 4.5 |
+
+3. `Средние отклонения температуры воздуха`  $Δt_{Y}$, направление и скорость среднего ветра определяются для стандартных слоев до высоты **4 км**. Среднее отклонение температуры воздуха Y в пределах стандартных высот бюллетеня определяется по таблице 2.
+
+**Таблица 2**
+![](./_Images/13.png)
+
+> Входами в таблицы являются стандартные высоты бюллетеня Y 
+> и отклонение приземной виртуальной температуры.
+> 
+> **Среднее отклонение температуры** при отрицательных значениях  указано > в числителе дроби, при положительных – в знаменателе дроби.
+> 
+> Для отклонений $Δt$ между **10 и 20, 20 и 30 и т. д.** среднее отклонение температуры Y определяется путем сложения величины отклонений из столбцов, соответствующих целому числу десятков и числу единиц.
+
+
+#### Пример расчета
+- **Исходные данные**: измеренная приземная температура воздуха $t0$ = +3
+- **Решение**:
+
+T0 = t0  + $ΔТ_{V}$<br>
+T0 = +3 + 0,3 = + 3,3
+
+$ΔT_{0}^{мп}$ = T0  – 15,9<br>
+$ΔT_{0}^{мп}$ = +3,3 - 15,9 =  -12,6 = -13 (округлили)
+
+По **таблице 2**  начинаем считать отклонение для каждой стандартной высоты. 
+
+**200 метров**: `-13` раскладываем на два числа: `-10` и `-3`, в таблице находим соответствующие им значения для 200 метров и складываем их. 
+Для `-10` значение **-9**, для `-3` значение **-3**.  
+
+Отклонение температуры для стандартной высоты 200 метров будет равно:        
+`-9 + (-3) = -12`  
+ 
+Далее из-за того, что полученное значение отрицательное к его модулю необходимо прибавить `50 -> |-12| + 50 = 62`. 
+Число **62** необходимо записать в столбец отклонения температуры для высоты 200 метров (**02**). 
+
+
+4. `Скорость среднего ветра` $W_{у}$ для всех стандартных высот бюллетеня определяется по **таблице 3**
+
+**Таблица 3**
+![](./_Images/14.png)
+
+> Входами в таблицы являются стандартные высоты 
+Y и скорости приземного ветра $V_{0}$.
+> При скорости приземного ветра $V_{0}$  < 3 м/с для всех стандартных высот Y скорость среднего ветра принимается равной нулю. В этом случае в бюллетене для всех стандартных высот Y места цифр, отведенные для направления и скорости ветра, заполняются нулями. Среднее значение скорости округляют до 1 м/с.
+
+
+5. `Направление среднего ветра` $α_{WY}$ для всех стандартных высот определяется по формуле: 
+$α_{WY} = α_{V0} + Δα_{WY}$
+
+где<br>
+$α_{V0}$ – направление приземного ветра;<br>
+$Δα_{WY}$ – приращение среднего ветра относительно направления приземного ветра, определяемое по **таблице 3**
+
+> Для высот более **4000** метров данные просто копируются из значений на 4000 метров.<br>
+> Для высот менее **200** метров данные просто копируются из значений на 200 метров.
+
+
+
+
+

+ 161 - 0
_Docs/TechnicalTask.md

@@ -0,0 +1,161 @@
+\usepackage{amsmath}
+
+# Техническое задание
+
+> В рамках `Гособоронзаказа` необходимо разработать программно-аппаратный комплекс (`ПАК`) для автоматизации расчетных задач поддержки артиллерии. Для проведения расчетно-огневых задач требуется регулярное измерение метрологических характеристик на различных участках фронта. 
+
+В качестве входных данных используются:
+
+- Тип оборудования
+- Высота ДМК
+- Температура воздуха на высоте метеопоста
+- Давление атмосферы на высоте метеопоста
+- Направление ветра в приземном слое воздуха
+- Скорость ветра в приземном слое воздуха
+
+Результат расчета оформляется в виде таблицы:
+
+- Высота (`H`)
+- Среднее отклонение температуры (`TT`)
+- Дирекционные угол направление ветра (`HH`)
+- Скорость среднего ветка (`СС`)
+
+Интерфейс:
+
+|![](./_Images/1.png)
+
+## Описание
+Система должна состоять из двух частей
+1. Метеобюллетень
+2. Журнал измерений
+
+На первой вкладке `метеобюллетень` производится текущий расчет, а так же отображаются текущие `сохраненные` результаты расчета.
+На второй вкладке `журнал измерений` отображается история измерений с набором дополнительного функционала.
+
+1. Переключатель выбора режима расчета приближенного метеобюллетеня предназначен для выбора **оборудования** для проведения измерений. Есть два варианта составления приближенного метеобюллетеня: 
+* С использованием десантный метео комплект (`ДМК`)
+* С использованием ветрового ружья (`ВР`)
+
+Отличаются эти варианты исходными данными для составления приближенного метеобюллетеня и математическими расчтами.
+
+![](./_Images/2.png)
+
+При выборе `ДМК` в области исходных данным последняя строка `Скорость ветра`. 
+
+Пример:
+
+![](./_Images/3.png)
+
+При выборе `ВР` в области исходных данным последняя строка `Дальность сноса пуль`.
+
+Пример
+
+![](./_Images/4.png)
+
+
+2. Ячейки исходных данных данных по умолчанию должны содержать следующие значения:
+
+| Параметр     | Значение по умолчанию   |
+|--------------|-------------------------|
+| Высота метеопоста | **100**       |
+| Температура   | **15** |
+| Давление    | **750** |
+| Направление ветра | **00** |
+| Скорость ветра | **0** |
+| Дальность сноса пуль | **0** |
+
+
+3. `Высота метеопоста`. Значения - целые числа, могут быть отрицательными и положительными и нулем, указывается в метрах над уровнем моря
+
+4. `Температура`. Значения - дробные числа с одним знаком после запятой, могут быть отрицательными и положительными, нулем Минимальное значение `-58`, максимальное  `58`, указывается в цельсиях
+
+5. `Давления`. Значения -  целые числа, могут быть только положительными. Минимальное значение `500`, максимальное  `900`, указывается в мм рт ст
+
+6. `Направление ветра`. Значение всегда стоит из двух разрядов. Минимальное значение `0`,` максимальное значение `59`. Направление ветра указывается в больших делениях угломера
+
+7. `Скорость ветра`. Значения -  целые числа, могут быть только положительными, либо нулем. Минимальное значение `0`, максимальное  `15`, указывается в м/с. (`Ячейка есть если выбран вариант составления метеобюллетеня с использованием ДМК`)
+
+8. `Дальность сноса пуль` Значения -  целые числа, могут быть только положительными, либо нулем. Минимальное значение `0`, максимальное  `150`, указывается в м. (`Ячейка есть если выбран вариант составления метеобюллетеня с использованием ВР`)
+
+9. Кнопка `Составить МЕТЕО-11` становится активна для пользователя, когда он заполнены все ячейки с исходными данными. После нажатия кнопки на форме происходит заполнение таблицы `Метео-11 ПРИБЛИЖЕННЫЙ` и появляется кнопка `Принять как Действ.` (принять как действующий)
+
+Пример:
+
+![](./_Images/8.png)
+
+### Приближенный
+В качестве характеристик полученных результатов расчета оформляется как _заголовок_ к таблице с результатами расчета. 
+
+![](./_Images/9.png)
+
+* **ДДЧЧМ** - ДД - день (число) месяца, ЧЧМ - часы (ЧЧ)  и десятки минут (М) окончания зондирования атмосферы (время измерения). 
+
+Пример: `24093` - 24 число месяца, время измерения 09.30 минут. Данные должны браться из системной даты и времени
+
+* **ВВВВ** - высота расположения метеопоста над уровнем моря. 
+
+Пример: `0060` - 60 метров над уровнем моря. Значение берется из ячейки `Высота метеопоста`
+
+* **БББТТ** :  
+**БББ** - отклонение наземного давления атмосферы от табличного на уровне метеорологической станции на момент окончания зондирования атмосферы (измерения). Отклонение наземного давления атмосферы ΔНо, записываемое в бюллетень, определяют как разность измеренного давления Но и табличного значения наземного давления, равного 750 мм рт. ст., т. е. `ΔНо = Но — 750` 
+
+Если измеренное давление будет больше 750 мм рт. ст., то отклонение ΔНо имеет знак «плюс» 
+
+Пример `ΔНо = 757 — 750 = 7` мм рт. ст. Отклонение +7 мм.рт.ст. записывается  в виде 007, отклонение +13 мм. рт. ст. записывается в виде `013`), если меньше — знак «минус» 
+
+Пример `ΔНо = 743 — 750 = — 7` мм рт. ст., Если отрицательное значение то в начале ставится число **пять**. Отклонение -7 мм.рт.ст. записывается  в виде `507`, отклонение `- 13` мм. рт. ст. записывается в виде `513`) .
+
+Значение берется из ячейки `Давление`
+
+* **ТТ** - отклонение наземной виртуальной температуры от табличного на уровне метеорологической станции на момент зондирования атмосферы (измерения) в градусах. 
+
+#### Расчет температуры (ТТ)
+
+Отклонение приземной виртуальной температуры ,  записываемое в бюллетень, определяется как разность между приземной виртуальной температурой, измеренной метеорологическим постом, 
+и ее табличным значением, равным +15,9°С, т.е.
+
+
+$ΔT_{0}^{мп}$ = T0  – 15,9
+
+
+Если приземная  виртуальная температура будет больше +15,9°С, 
+от отклонение  имеет знак **«плюс»**, если меньше – знак **«минус»**.
+Приземная виртуальная температура τ0 вычисляется по формуле:
+
+T0 = t0  + $ΔТ_{V}$
+
+где:
+- t0 - измеренная приземная температура воздуха. Берется из ячейки `температура`
+- $ΔТ_{V}$ - виртуальная поправка, определяемая по таблице 1.
+
+**Таблица 1**
+|  $t_{0}$ | Ниже 0 | 0 - 5 | 10 - 15 | 20 | 25 | 30 | 40 |
+|----------|--------|-------|---------|----|----|----|----|
+| $ΔТ_{V}$ | 0      | 0.5   | 1       | 1.5  | 2  | 3.5 | 4.5 |
+
+##### Примеры расчета температуры
+- `Пример 1`: 
+    
+    измеренная температура = `23`<br> 
+    1. T0 = t0  + $ΔТ_{V}$
+
+    > T0 = 23 + 1,8 = 24,8<br> 
+    > _(1,8 это интерполированное значение виртуальной поправки из `таблицы 1`)_
+
+    2. $ΔT_{0}^{мп}$ = T0  – 15,9
+
+    > $ΔT_{0}^{мп}$ = 24,8-15,9 = 9 <br>
+    > _(получается 8.9, но округляем до 9)_ 
+    
+    Записывается в виде **09**
+
+### Алгоритмы расчета
+
+1. **Наименование задачи**: `составление приближенного бюллетеня «Метеосредний» по результатам наземных измерений с использованием метеорологического поста`
+
+- [Описание алгоритма расчета](./AlgoritmDmk.md)
+
+2. **Наименование задачи**: `составление приближенного бюллетеня «Метеосредний» по результатам наземных измерений с использованием ветрового ружья`
+
+- [Описание алгоритма расчета](./AlgoritmBp.md)
+

BIN
_Docs/_Images/1.png


BIN
_Docs/_Images/10.png


BIN
_Docs/_Images/11.png


BIN
_Docs/_Images/12.png


BIN
_Docs/_Images/13.png


BIN
_Docs/_Images/14.png


BIN
_Docs/_Images/15.png


BIN
_Docs/_Images/16.png


BIN
_Docs/_Images/2.png


BIN
_Docs/_Images/3.png


BIN
_Docs/_Images/4.png


BIN
_Docs/_Images/5.png


BIN
_Docs/_Images/6.png


BIN
_Docs/_Images/8.png


BIN
_Docs/_Images/9.png


+ 7 - 0
_Infra/.env

@@ -0,0 +1,7 @@
+PGADMIN_PORT=5050
+POSTGRESQL_PORT=5432
+POSTGRESQL_USER=admin
+POSTGRESQL_PASS=123456
+POSTGRESQL_EMAIL="postgress@yandex.ru"
+
+

+ 44 - 0
_Infra/docker-compose.yaml

@@ -0,0 +1,44 @@
+version: "3.0"
+services:
+  # https://habr.com/ru/articles/578744/
+  # https://hub.docker.com/_/postgres
+
+  postgres:
+    user: root
+    image: postgres:16.3
+    container_name: "postgres"
+    environment:
+      POSTGRES_PASSWORD: ${POSTGRESQL_PASS}
+      POSTGRES_USER: ${POSTGRESQL_USER}
+      PGDATA: "/var/lib/postgresql/data/pgdata"
+    volumes:
+      - ./pgdata:/var/lib/postgresql/data
+    ports:
+      - "${POSTGRESQL_PORT:-5432}:5432"
+    networks:
+      - pgdata
+    restart: always  
+
+  pgadmin:
+    user: root
+    container_name: "pgadmin"
+    image: dpage/pgadmin4
+    environment:
+      PGADMIN_DEFAULT_EMAIL: ${POSTGRESQL_EMAIL}
+      PGADMIN_DEFAULT_PASSWORD: ${POSTGRESQL_PASS}
+      PGADMIN_CONFIG_SERVER_MODE: 'False'
+    ports:
+      - "${PGADMIN_PORT:-5050}:80"
+    volumes:
+      - ./pgadmin:/var/lib/pgadmin  
+      - ./scripts:/scripts    
+    networks:
+      - pgdata  
+    restart: always
+    depends_on:
+    - postgres
+
+
+networks:
+  pgdata:
+

+ 17 - 0
readme.md

@@ -0,0 +1,17 @@
+\usepackage{amsmath}
+
+# Разработка систем на основе PostgreSQL
+
+#### Стек
+1. Операционная система: [`Linux`](https://ubuntu.com/download/desktop), [`Docker`](https://docs.docker.com/get-started/get-docker/)
+2. СУБД: [`PostgreSQL`](https://www.postgresql.org/download/) , [`postgrest`](https://docs.postgrest.org/en/v12/)
+
+
+## Легенда
+> Вы включены в команду целью которой состоит в разработке базы данных и **Backend** для системы подготовки метрологических данных в рамках разработки ПАК (Программно-аппаратного комплекса) согласно **Технического задания**.<br><br>
+> `Основаня задача команды` - это разработать решение которое должно соответствовать следующим критериям:<br>
+>   * Решение должно работать в режиме как `SINGLE-USER` так и `MULTI-USER`
+>   * В режиме `MULTI-USER`, количество одновременных пользователей до **50 000**
+>   * Требуется обеспечить максимальную производительность при минимально производительном оборудовании
+>   * Необходимо обеспечить максимально гибкий и простой вариант загрузки справочников и таблиц стрельбы
+