Init: DB layer chk — tables, init scripts, docs, PlantUML schema
This commit is contained in:
commit
c3932e6404
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
|
|
@ -0,0 +1,16 @@
|
||||||
|
# Слой `chk` — функции
|
||||||
|
|
||||||
|
## Список функций
|
||||||
|
|
||||||
|
| Сущность | Функция | Статус | Параметры | Возвращает | Функция | Репозиторий | Комментарий |
|
||||||
|
|---|---|---|---|---|---|---|---|
|
||||||
|
| chk_type | chk_type_select | PLAN | — | TABLE — строки справочника | - | - | — |
|
||||||
|
| chk_status | chk_status_select | PLAN | — | TABLE — строки справочника | - | - | — |
|
||||||
|
| chk_check | chk_check_insert | PLAN | p_check_date, p_chk_type_id, p_chk_status_id, p_smev_message_id, p_rr_organization_id, p_params (JSON), p_parent_check_id | int — id проверки | - | - | — |
|
||||||
|
| chk_check | chk_check_update | PLAN | p_id + все поля записи | int — число строк (db-m-3) | - | - | полная запись объекта (db-m-8) |
|
||||||
|
| chk_check | chk_check_delete | PLAN | p_id | int — число строк | - | - | — |
|
||||||
|
| chk_check | chk_check_select | PLAN | p_check_date, p_chk_type_id, p_chk_status_id, p_rr_organization_id | TABLE — строки chk_check | - | - | NULL параметра = фильтр не применяется |
|
||||||
|
| chk_check | chk_check_get | PLAN | p_id | TABLE — строка chk_check | - | - | — |
|
||||||
|
|
||||||
|
Функции в статусе `PLAN`: спецификации и тест-планы отсутствуют, файлы
|
||||||
|
`func_specs/{функция}.md` создаются при переводе в `DEV` (d-db-9, d-dev-1).
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
-- Инициализация БД MT.Сhecks: схема chk, таблицы, значения справочников.
|
||||||
|
-- Запуск: psql -d <база> -f init.sql. Скрипт идемпотентен
|
||||||
|
-- (CREATE SCHEMA/TABLE IF NOT EXISTS, сидирование через ON CONFLICT DO NOTHING).
|
||||||
|
\set ON_ERROR_STOP on
|
||||||
|
|
||||||
|
CREATE SCHEMA IF NOT EXISTS chk;
|
||||||
|
|
||||||
|
\ir ../tables/chk_type.sql
|
||||||
|
\ir ../tables/chk_status.sql
|
||||||
|
\ir ../tables/chk_check.sql
|
||||||
|
|
||||||
|
-- Сидирование справочника типов проверок (значения — из DB/task.md).
|
||||||
|
INSERT INTO chk.chk_type (id, name) VALUES
|
||||||
|
(1, 'Запрос изменений (дельты) ЕГРЮЛ'),
|
||||||
|
(2, 'Запрос изменений (дельты) ЕГРИП'),
|
||||||
|
(3, 'Отправка запроса в ЕГРЮЛ'),
|
||||||
|
(4, 'Отправка запроса в ЕГРИП'),
|
||||||
|
(5, 'Актуализация организации ОТ'),
|
||||||
|
(6, 'Актуализация организации СОУТ')
|
||||||
|
ON CONFLICT (id) DO NOTHING;
|
||||||
|
|
||||||
|
-- Сидирование справочника статусов проверок (значения — из DB/task.md).
|
||||||
|
INSERT INTO chk.chk_status (id, name) VALUES
|
||||||
|
(1, 'Запрос отправлен'),
|
||||||
|
(2, 'Ответ получен'),
|
||||||
|
(3, 'Ответ успешно обработан'),
|
||||||
|
(4, 'Ошибка при обработке')
|
||||||
|
ON CONFLICT (id) DO NOTHING;
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
@startuml chk_schema
|
||||||
|
' ER-схема слоя chk (БД MT.Сhecks)
|
||||||
|
' Источник требований: DB/task.md; документация: DB/chk/tables.md
|
||||||
|
hide circle
|
||||||
|
skinparam linetype ortho
|
||||||
|
|
||||||
|
entity "chk_type" as chk_type {
|
||||||
|
* id : int <<PK>>
|
||||||
|
--
|
||||||
|
* name : text
|
||||||
|
}
|
||||||
|
|
||||||
|
entity "chk_status" as chk_status {
|
||||||
|
* id : int <<PK>>
|
||||||
|
--
|
||||||
|
* name : text
|
||||||
|
}
|
||||||
|
|
||||||
|
entity "chk_check" as chk_check {
|
||||||
|
* id : serial <<PK>>
|
||||||
|
--
|
||||||
|
* check_date : date
|
||||||
|
* chk_type_id : int <<FK>>
|
||||||
|
* chk_status_id : int <<FK>>
|
||||||
|
smev_message_id : text
|
||||||
|
rr_organization_id : text
|
||||||
|
params : jsonb
|
||||||
|
parent_check_id : int <<FK, nullable>>
|
||||||
|
}
|
||||||
|
|
||||||
|
chk_type ||--o{ chk_check : "chk_type_id"
|
||||||
|
chk_status ||--o{ chk_check : "chk_status_id"
|
||||||
|
chk_check |o--o{ chk_check : "parent_check_id"
|
||||||
|
|
||||||
|
note bottom of chk_check
|
||||||
|
Индексы: idx_chk_check_type (chk_type_id),
|
||||||
|
idx_chk_check_status (chk_status_id),
|
||||||
|
idx_chk_check_parent (parent_check_id)
|
||||||
|
params: результаты проверок (состав не фиксирован)
|
||||||
|
end note
|
||||||
|
|
||||||
|
note bottom of chk_type
|
||||||
|
Значения (id): 1 — Запрос изменений (дельты) ЕГРЮЛ,
|
||||||
|
2 — Запрос изменений (дельты) ЕГРИП,
|
||||||
|
3 — Отправка запроса в ЕГРЮЛ,
|
||||||
|
4 — Отправка запроса в ЕГРИП,
|
||||||
|
5 — Актуализация организации ОТ,
|
||||||
|
6 — Актуализация организации СОУТ
|
||||||
|
end note
|
||||||
|
|
||||||
|
note bottom of chk_status
|
||||||
|
Значения (id): 1 — Запрос отправлен,
|
||||||
|
2 — Ответ получен,
|
||||||
|
3 — Ответ успешно обработан,
|
||||||
|
4 — Ошибка при обработке
|
||||||
|
end note
|
||||||
|
@enduml
|
||||||
|
|
@ -0,0 +1,72 @@
|
||||||
|
# Слой `chk` — таблицы
|
||||||
|
|
||||||
|
Слой проверок организаций. Источник требований: `DB/task.md`.
|
||||||
|
|
||||||
|
## Список таблиц
|
||||||
|
|
||||||
|
| Таблица | Тип | Набор функций | Функции | Комментарий |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| `chk_type` | системный справочник | chk_type_select | SELECT | функции запланированы, статус PLAN (functions.md) |
|
||||||
|
| `chk_status` | системный справочник | chk_status_select | SELECT | функции запланированы, статус PLAN (functions.md) |
|
||||||
|
| `chk_check` | сущность | chk_check_insert, chk_check_update, chk_check_delete, chk_check_select, chk_check_get | CRUD | функции запланированы, статус PLAN (functions.md) |
|
||||||
|
|
||||||
|
## chk_type — типы проверок
|
||||||
|
|
||||||
|
Справочник типов проверок. Файл DDL: `tables/chk_type.sql`.
|
||||||
|
|
||||||
|
| Поле | Тип | Ограничения | Описание |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `id` | int | PK | идентификатор типа |
|
||||||
|
| `name` | text | NOT NULL | наименование типа |
|
||||||
|
|
||||||
|
Значения:
|
||||||
|
|
||||||
|
| id | name |
|
||||||
|
|---|---|
|
||||||
|
| 1 | Запрос изменений (дельты) ЕГРЮЛ |
|
||||||
|
| 2 | Запрос изменений (дельты) ЕГРИП |
|
||||||
|
| 3 | Отправка запроса в ЕГРЮЛ |
|
||||||
|
| 4 | Отправка запроса в ЕГРИП |
|
||||||
|
| 5 | Актуализация организации ОТ |
|
||||||
|
| 6 | Актуализация организации СОУТ |
|
||||||
|
|
||||||
|
## chk_status — статусы проверок
|
||||||
|
|
||||||
|
Справочник статусов проверок. Файл DDL: `tables/chk_status.sql`.
|
||||||
|
|
||||||
|
| Поле | Тип | Ограничения | Описание |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `id` | int | PK | идентификатор статуса |
|
||||||
|
| `name` | text | NOT NULL | наименование статуса |
|
||||||
|
|
||||||
|
Значения:
|
||||||
|
|
||||||
|
| id | name |
|
||||||
|
|---|---|
|
||||||
|
| 1 | Запрос отправлен |
|
||||||
|
| 2 | Ответ получен |
|
||||||
|
| 3 | Ответ успешно обработан |
|
||||||
|
| 4 | Ошибка при обработке |
|
||||||
|
|
||||||
|
## chk_check — проверки
|
||||||
|
|
||||||
|
Основная таблица проверок. Файл DDL: `tables/chk_check.sql`.
|
||||||
|
|
||||||
|
| Поле | Тип | Ограничения | Описание |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `id` | serial | PK | идентификатор проверки |
|
||||||
|
| `check_date` | date | NOT NULL | день (дата) проверки |
|
||||||
|
| `chk_type_id` | int | NOT NULL, FK → `chk.chk_type(id)` | тип проверки |
|
||||||
|
| `chk_status_id` | int | NOT NULL, FK → `chk.chk_status(id)` | статус проверки |
|
||||||
|
| `smev_message_id` | text | — | идентификатор сообщения СМЭВ |
|
||||||
|
| `rr_organization_id` | text | — | идентификатор организации РР |
|
||||||
|
| `params` | jsonb | — | параметры: результаты проверок (например, сколько организаций получено из дельты ЕГРЮЛ и сколько сформировано запросов); состав не фиксирован |
|
||||||
|
| `parent_check_id` | int | nullable, FK → `chk.chk_check(id)` | идентификатор родительской проверки; в задаче помечен «не уверен что нужно» — включён nullable |
|
||||||
|
|
||||||
|
Индексы (FK в PostgreSQL автоматически не индексируются):
|
||||||
|
|
||||||
|
| Индекс | Колонки |
|
||||||
|
|---|---|
|
||||||
|
| `idx_chk_check_type` | `chk_type_id` |
|
||||||
|
| `idx_chk_check_status` | `chk_status_id` |
|
||||||
|
| `idx_chk_check_parent` | `parent_check_id` |
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
-- chk.chk_check: проверки организаций.
|
||||||
|
-- Поля — из задачи (DB/task.md); parent_check_id включён как nullable
|
||||||
|
-- (в задаче помечен «не уверен что нужно»).
|
||||||
|
CREATE TABLE IF NOT EXISTS chk.chk_check (
|
||||||
|
id serial PRIMARY KEY,
|
||||||
|
check_date date NOT NULL,
|
||||||
|
chk_type_id int NOT NULL REFERENCES chk.chk_type (id),
|
||||||
|
chk_status_id int NOT NULL REFERENCES chk.chk_status (id),
|
||||||
|
smev_message_id text,
|
||||||
|
rr_organization_id text,
|
||||||
|
params jsonb,
|
||||||
|
parent_check_id int REFERENCES chk.chk_check (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_chk_check_type ON chk.chk_check (chk_type_id);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_chk_check_status ON chk.chk_check (chk_status_id);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_chk_check_parent ON chk.chk_check (parent_check_id);
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
-- chk.chk_status: справочник статусов проверок.
|
||||||
|
-- Значения — из задачи (DB/task.md), идентификаторы фиксированные.
|
||||||
|
CREATE TABLE IF NOT EXISTS chk.chk_status (
|
||||||
|
id int PRIMARY KEY,
|
||||||
|
name text NOT NULL
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
-- chk.chk_type: справочник типов проверок.
|
||||||
|
-- Значения — из задачи (DB/task.md), идентификаторы фиксированные.
|
||||||
|
CREATE TABLE IF NOT EXISTS chk.chk_type (
|
||||||
|
id int PRIMARY KEY,
|
||||||
|
name text NOT NULL
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
# БД MT.Сhecks
|
||||||
|
|
||||||
|
## Общая информация
|
||||||
|
|
||||||
|
| Параметр | Значение |
|
||||||
|
|---|---|
|
||||||
|
| СУБД | PostgreSQL (PL/pgSQL) |
|
||||||
|
| Схемы-слои | `chk` — проверки организаций |
|
||||||
|
| Источник требований | `DB/task.md` |
|
||||||
|
| Инициализация | `chk/init/init.sql` (psql, идемпотентно) |
|
||||||
|
|
||||||
|
## Конвенции
|
||||||
|
|
||||||
|
- Имя таблицы: `{слой}_{сущность}` (`chk.chk_check`); функции: `{слой}.{сущность}_{действие}` (db-func-3).
|
||||||
|
- Один файл — одна таблица (`chk/tables/*.sql`, по образцу db-func-4).
|
||||||
|
- PK сущности — `serial` (d-db-3); справочники — фиксированные `id`.
|
||||||
|
- JSON-параметры: в таблице — `jsonb`; в функции передаются как `text` с кастом внутри (db-m-5).
|
||||||
|
- Документация слоя: `chk/tables.md` (d-db-2), `chk/functions.md` (d-db-7), ER-схема: `chk/schema.puml` (PlantUML, c-skl-8).
|
||||||
|
|
||||||
|
## Перечень таблиц
|
||||||
|
|
||||||
|
| Таблица | Тип | Описание |
|
||||||
|
|---|---|---|
|
||||||
|
| `chk.chk_type` | системный справочник | типы проверок (6 значений) |
|
||||||
|
| `chk.chk_status` | системный справочник | статусы проверок (4 значения) |
|
||||||
|
| `chk.chk_check` | сущность | проверки организаций |
|
||||||
|
|
||||||
|
## План миграции
|
||||||
|
|
||||||
|
1. `psql -d <база> -f chk/init/init.sql` — создание схемы, таблиц, сидирование справочников.
|
||||||
|
2. Функции слоя — по `chk/functions.md` (все в статусе `PLAN`), реализация — отдельными задачами.
|
||||||
|
|
@ -0,0 +1,79 @@
|
||||||
|
Задача сформировать файлы таблиц и скрипты инициализации
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Структура:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\[Таблица с проверками]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
1\. Id
|
||||||
|
|
||||||
|
2\. День (дата) проверки
|
||||||
|
|
||||||
|
3\. Тип проверки
|
||||||
|
|
||||||
|
4\. Статус проверки
|
||||||
|
|
||||||
|
5\. Идентификатор сообщения СМЭВ
|
||||||
|
|
||||||
|
6\. Идентификатор организации РР
|
||||||
|
|
||||||
|
7\. Параметры
|
||||||
|
|
||||||
|
8\. Идентификатор родительской проверки? (не уверен что нужно)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
По поводу 7 поля с параметрами - тут можно сделать JSON в котором хранить различные результаты проверок, чтобы их явно потом использовать позже (например, хранить сколько организаций было получено из дельты ЕГРЮЛ и сколько было сформировано запросов)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\[Таблица с типами проверок]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
1\. Id
|
||||||
|
|
||||||
|
2\. Наименование
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Значения:
|
||||||
|
|
||||||
|
1\. Запрос изменений (дельты) ЕГРЮЛ
|
||||||
|
|
||||||
|
2\. Запрос изменений (дельты) ЕГРИП
|
||||||
|
|
||||||
|
3\. Отправка запроса в ЕГРЮЛ
|
||||||
|
|
||||||
|
4\. Отправка запроса в ЕГРИП
|
||||||
|
|
||||||
|
5\. Актуализация организации ОТ
|
||||||
|
|
||||||
|
6\. Актуализация организации СОУТ
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\[Таблица со статусами проверок]
|
||||||
|
|
||||||
|
1\. Id
|
||||||
|
|
||||||
|
2\. Наименование
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Значения:
|
||||||
|
|
||||||
|
1\. Запрос отправлен
|
||||||
|
|
||||||
|
2\. Ответ получен
|
||||||
|
|
||||||
|
3\. Ответ успешно обработан
|
||||||
|
|
||||||
|
4\. Ошибка при обработке
|
||||||
Loading…
Reference in New Issue