vault backup: 2025-03-26 12:22:28
This commit is contained in:
@@ -4,28 +4,28 @@
|
||||
{"id":"33e41554713250b2","type":"group","x":-1640,"y":-680,"width":348,"height":520,"color":"6","label":"Редактор форм"},
|
||||
{"id":"c77618e44187feca","type":"text","text":"# MOL-ADMIN-SUPPORT\nСчета на оплату","x":40,"y":-1210,"width":406,"height":130,"color":"1"},
|
||||
{"id":"541d0759b29a780d","type":"text","text":"# MOL-DESK\nВыгрузка/сохранение форм с данными / отчётами","x":-335,"y":-1210,"width":250,"height":170,"color":"5"},
|
||||
{"id":"bb7a7928bfc66590","type":"text","text":"# Редактор (UMO?)\nС поддержкой макросов и динамических таблиц\n","x":-1620,"y":-660,"width":308,"height":153},
|
||||
{"id":"a2abf7aa1c4628b8","type":"text","text":"Редактирование иерархии документов, форматов страниц и выгрузки.\nПросмотр истории правок","x":-1620,"y":-507,"width":308,"height":104},
|
||||
{"id":"bb7a7928bfc66590","type":"text","text":"# Редактор\nС поддержкой макросов и динамических таблиц\n","x":-1620,"y":-660,"width":308,"height":153},
|
||||
{"id":"a2abf7aa1c4628b8","type":"text","text":"Редактирование иерархии документов, форматов страниц и выгрузки.\nПросмотр истории правок","x":-1620,"y":-507,"width":308,"height":123},
|
||||
{"id":"a86efaf617938a7f","type":"text","text":"Модуль утверждения форм","x":-1620,"y":-317,"width":308,"height":60,"color":"1"},
|
||||
{"id":"012205b5b52bf8c5","type":"text","text":"Типы форм, принадлежность к владельцу или к платформе","x":-1180,"y":-636,"width":250,"height":129},
|
||||
{"id":"921924239f7de7a8","type":"text","text":"Каталог стандартных типов форм","x":-1180,"y":-507,"width":250,"height":52},
|
||||
{"id":"dedcc773d0d12eb8","type":"text","text":"Хранение форм в БД","x":-1180,"y":-455,"width":250,"height":52},
|
||||
{"id":"05eaa432738777c9","type":"text","text":"История правок форм","x":-1180,"y":-403,"width":250,"height":60},
|
||||
{"id":"7328fa76eac59fb1","type":"text","text":"Макросы и их описания","x":-860,"y":-603,"width":250,"height":60},
|
||||
{"id":"187ffc29a8407050","type":"text","text":"Необходимые для форм подписи","x":-1180,"y":-343,"width":250,"height":60},
|
||||
{"id":"b4468c3e238a62d4","type":"text","text":"Фактические подписи форм","x":-1180,"y":-283,"width":250,"height":60},
|
||||
{"id":"cfb8871964347014","type":"text","text":"*Раздельная совместимая реализация в Alfa и Mol c возможностью переноса данных*","x":-860,"y":-343,"width":250,"height":120,"color":"4"},
|
||||
{"id":"e24c135dad74943a","type":"text","text":"# ALFA\nформирование документов","x":-977,"y":-1210,"width":234,"height":130,"color":"4"},
|
||||
{"id":"341344a22a62fa61","type":"text","text":"### БД mol","x":-172,"y":-880,"width":455,"height":60},
|
||||
{"id":"e60ebf1e049c08da","type":"text","text":"### Запрос данных в документ (MOL)","x":-172,"y":-820,"width":455,"height":60},
|
||||
{"id":"ef99c9394db92702","type":"text","text":"# СМК","x":-610,"y":-1210,"width":170,"height":130,"color":"5"},
|
||||
{"id":"df3208e7759a94ee","type":"text","text":"# ALFA\nредактирование форм","x":-1583,"y":-1210,"width":234,"height":130,"color":"4"},
|
||||
{"id":"4c354386c2712ee0","x":-1560,"y":8,"width":700,"height":72,"type":"text","text":"## Для реализации СМК нам нужна система прав в Mol"},
|
||||
{"id":"b9fd8fb34faadcbf","x":-109,"y":-46,"width":329,"height":65,"type":"text","text":"### ДОКУМЕНТ ВЫГРУЗКИ"},
|
||||
{"id":"dedcc773d0d12eb8","type":"text","text":"Хранение форм в БД","x":-1180,"y":-455,"width":250,"height":52},
|
||||
{"id":"05eaa432738777c9","type":"text","text":"История правок форм","x":-1180,"y":-403,"width":250,"height":60},
|
||||
{"id":"187ffc29a8407050","type":"text","text":"Необходимые для форм подписи","x":-1180,"y":-343,"width":250,"height":60},
|
||||
{"id":"b4468c3e238a62d4","type":"text","text":"Фактические подписи форм","x":-1180,"y":-283,"width":250,"height":60},
|
||||
{"id":"ef99c9394db92702","type":"text","text":"# СМК","x":-610,"y":-1210,"width":170,"height":130,"color":"5"},
|
||||
{"id":"4c354386c2712ee0","type":"text","text":"## Для реализации СМК нам нужна система прав в Mol","x":-1560,"y":8,"width":700,"height":72},
|
||||
{"id":"b9fd8fb34faadcbf","type":"text","text":"### ДОКУМЕНТ ВЫГРУЗКИ","x":-109,"y":-46,"width":329,"height":65},
|
||||
{"id":"8ab240e4608d9298","type":"text","text":"# API ГЕНЕРАТОР ДОКУМЕНТОВ\n## (ОБЩИЙ У MOL и ALFA ?????)","x":-184,"y":-487,"width":479,"height":134,"color":"3"},
|
||||
{"id":"51769521b5c3d282","x":493,"y":-455,"width":180,"height":71,"type":"text","text":"### АРХИВ"},
|
||||
{"id":"a4ea52130341850c","type":"text","text":"### БД alfa + подготовка данных","x":-930,"y":-880,"width":531,"height":60},
|
||||
{"id":"f43c229d74fbb1b5","type":"text","text":"### Предобработчик данных в документ (ALFA)","x":-930,"y":-820,"width":531,"height":60}
|
||||
{"id":"f43c229d74fbb1b5","type":"text","text":"### Предобработчик данных в документ (ALFA)","x":-930,"y":-820,"width":531,"height":60},
|
||||
{"id":"012205b5b52bf8c5","type":"text","text":"Типы форм, принадлежность к владельцу или к платформе","x":-1180,"y":-636,"width":250,"height":129},
|
||||
{"id":"921924239f7de7a8","type":"text","text":"Каталог стандартных типов форм","x":-1180,"y":-507,"width":250,"height":52},
|
||||
{"id":"7328fa76eac59fb1","type":"text","text":"Макросы и их описания","x":-860,"y":-603,"width":250,"height":60},
|
||||
{"id":"cfb8871964347014","type":"text","text":"*Раздельная совместимая реализация в Alfa и Mol c возможностью переноса данных*","x":-860,"y":-343,"width":250,"height":120,"color":"4"},
|
||||
{"id":"51769521b5c3d282","type":"text","text":"### АРХИВ","x":493,"y":-455,"width":180,"height":71}
|
||||
],
|
||||
"edges":[
|
||||
{"id":"444615d6bd5319cb","fromNode":"33e41554713250b2","fromSide":"right","toNode":"dedcc773d0d12eb8","toSide":"left"},
|
||||
|
||||
112
WORK & PROJECTS/Mol/Планы и диаграммы/Alfa cloud prod.canvas
Normal file
112
WORK & PROJECTS/Mol/Планы и диаграммы/Alfa cloud prod.canvas
Normal file
@@ -0,0 +1,112 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"id":"1147ad5342f8a66d","type":"group","x":-560,"y":-1000,"width":1640,"height":1840,"label":"PROD 1"},
|
||||
{"id":"aa4bd7dc599c3a8d","type":"group","x":-560,"y":1120,"width":1640,"height":1840,"label":"PROD 2"},
|
||||
{"id":"e668ecad4af5b75d","type":"group","x":240,"y":-330,"width":340,"height":525,"label":"Контейнеры Docker"},
|
||||
{"id":"eef47394382fac4e","type":"group","x":240,"y":1790,"width":340,"height":525,"label":"Контейнеры Docker"},
|
||||
{"id":"2b14dcc74c2ea6d8","type":"group","x":260,"y":-880,"width":290,"height":400,"label":"Web"},
|
||||
{"id":"c44f4746d7dae2b9","type":"group","x":260,"y":1240,"width":290,"height":400,"label":"Web"},
|
||||
{"id":"72dae085047a9928","type":"group","x":-235,"y":260,"width":290,"height":360,"label":"🗃MariaDB Server"},
|
||||
{"id":"90c1c7ba3b2a3941","type":"group","x":-235,"y":2540,"width":290,"height":360,"label":"🗃MariaDB Server"},
|
||||
{"id":"0e0c94ae12c826cd","type":"group","x":-380,"y":-282,"width":290,"height":265,"label":"Образы"},
|
||||
{"id":"dd06d316f5b061cf","type":"group","x":-380,"y":1838,"width":290,"height":265,"label":"Образы"},
|
||||
{"id":"4ef3c9c39cf49261","type":"group","x":-380,"y":-740,"width":290,"height":160,"label":"Исходные коды"},
|
||||
{"id":"eeb7d1ae3e55e3a9","type":"group","x":640,"y":45,"width":290,"height":160,"label":"Client3"},
|
||||
{"id":"f550aa3850af3b3c","type":"group","x":640,"y":2165,"width":290,"height":160,"label":"Client3"},
|
||||
{"id":"0c587123a514f592","type":"group","x":-380,"y":1380,"width":290,"height":160,"label":"Исходные коды"},
|
||||
{"id":"8baa0c9eec860ebe","type":"group","x":640,"y":-212,"width":290,"height":150,"label":"Client2"},
|
||||
{"id":"4d752a474299d893","type":"group","x":640,"y":1908,"width":290,"height":150,"label":"Client2"},
|
||||
{"id":"1400fca58b1081be","type":"group","x":640,"y":-440,"width":290,"height":140,"label":"Client1"},
|
||||
{"id":"02d851bdc13e9715","type":"group","x":640,"y":1680,"width":290,"height":140,"label":"Client1"},
|
||||
{"id":"9368492b47c38043","type":"text","text":"📄 .env","x":660,"y":-137,"width":250,"height":50,"color":"5"},
|
||||
{"id":"536c2312e34898f7","type":"text","text":"📂 Storage","x":660,"y":-187,"width":250,"height":50,"color":"5"},
|
||||
{"id":"95074de3d9a26d1c","type":"text","text":"📂 Storage","x":660,"y":70,"width":250,"height":50,"color":"5"},
|
||||
{"id":"25ea5fd637eab967","type":"text","text":"ALFA 12.30-dev","x":-360,"y":-97,"width":250,"height":60},
|
||||
{"id":"22120c2e0489d623","type":"text","text":"# 🗄 git.moldev.ru","x":-1920,"y":525,"width":300,"height":60},
|
||||
{"id":"90d44e64ab154a1a","type":"text","text":"client 2 (12.20-master)\nnginx + php container","x":280,"y":-172,"width":250,"height":80},
|
||||
{"id":"d0967a61e8872474","type":"text","text":"client 3 (12.30-dev)\nnginx + php container","x":280,"y":-37,"width":250,"height":80},
|
||||
{"id":"0cfb0d2300a96176","type":"text","text":"php artisan migrate","x":280,"y":90,"width":250,"height":60},
|
||||
{"id":"82737099079726c8","type":"text","text":"📄 .env","x":660,"y":120,"width":250,"height":50,"color":"5"},
|
||||
{"id":"abf27277d5183ad8","type":"text","text":"ALFA 12.14-master","x":-360,"y":-262,"width":250,"height":60},
|
||||
{"id":"aed45cb4e0574a3a","type":"text","text":"ALFA 12.20-master","x":-360,"y":-202,"width":250,"height":60},
|
||||
{"id":"3aab9f55469feb04","type":"text","text":"Server monitoring:\nhttps://linuxblog.io/free-linux-server-monitoring-apm-sysadmins/","x":785,"y":667,"width":250,"height":143},
|
||||
{"id":"6ed5eab6b8e16f3b","type":"text","text":"### CLOUD API (конфигурация облаков)\n- #### Регистрация нового клиента\n\t- создание новой БД клиента из CLEAN_db\n\t- внесение данных о клиенте в БД клиента\n\t- обновление cloud_users_db\n\t\t- поддомен\n\t\t- статус ssl-сертификатов\n\t\t- порт подключения\n\t\t- id сервера\n\t\t- рабочая папка на сервере\n\t\t- настройки контейнера (подключенные модули, версия кода и тд)\n\t\t- версия контейнера (1.3-master, 1.4-dev)\n\t\t- крайняя дата исп.\n\t\t- тип лицензии (demo, SILA)\n\t\t- БД\n\t\t- Часовой пояс\n\t\t- Информация о логине первого пользователя\n\t\t\t- ФИО\n\t\t\t- e-mail\n\t\t\t- password\n\t\t- лог создания контейнера\n\t- переконфигурация сервера\n\t\t- создание/конфигурация файлов кэша, настроек php и индивидуальных архивов\n\t\t- пересоздание/обновление конфигов:\n\t\t\t- docker\n\t\t\t- nginx\n\t\t- запуск миграций\n\t\t- выпуск ssl нового поддомена\n\t\t- перезапуск nginx & docker compose\n- #### Обновление информации клиента\n\t- тариф и дата последнего дня работы\n\t- подключённые опции (реконфиг docker)\n\t- часовой пояс php\n- #### Работа с демо-данными\n\t- активация демо-данных\n\t- удаление демо-данных\n- #### Удаление клиента\n\t- очистка БД клиента\n\t- пересоздание конфигов сервера\n\t- чистка файлов (контейнеры и конфиги)","x":1445,"y":-689,"width":510,"height":1205},
|
||||
{"id":"ac17a82fee50447b","type":"text","text":"CLOUD API","x":1575,"y":-850,"width":250,"height":60},
|
||||
{"id":"7f1ca2cda9e89951","type":"text","text":"client 1 (12.20-master)\nnginx + php container","x":280,"y":-310,"width":250,"height":80},
|
||||
{"id":"7bb34343b485f669","type":"text","text":"📂 Storage","x":660,"y":-420,"width":250,"height":50,"color":"5"},
|
||||
{"id":"1e42b8aa516bc15d","type":"text","text":"📄 .env","x":660,"y":-370,"width":250,"height":50,"color":"5"},
|
||||
{"id":"88e977d27b7f415c","type":"text","text":"nginx cloud API conf","x":280,"y":-850,"width":250,"height":60},
|
||||
{"id":"ea6f72ceae655889","type":"text","text":"client1 nginx reverse proxy","x":280,"y":-770,"width":250,"height":60,"color":"4"},
|
||||
{"id":"b9a89b6c704bbab9","type":"text","text":"📂alfa front","x":-360,"y":-720,"width":250,"height":60},
|
||||
{"id":"546742f58a9feb77","type":"text","text":"client2 nginx reverse proxy","x":280,"y":-710,"width":250,"height":60,"color":"4"},
|
||||
{"id":"818ff03ad9e41a66","type":"text","text":"client3 nginx reverse proxy","x":280,"y":-650,"width":250,"height":60,"color":"4"},
|
||||
{"id":"9ac7fb4c1839d1c1","type":"text","text":"1C:CRM API","x":280,"y":-560,"width":250,"height":50},
|
||||
{"id":"f228a4ee583807da","type":"text","text":"📂alfa back","x":-360,"y":-650,"width":250,"height":60},
|
||||
{"id":"c76ca4b80233d6e3","type":"text","text":"FRONT BUILD","x":-360,"y":-440,"width":250,"height":60},
|
||||
{"id":"01457678c3ddbcb9","type":"text","text":"client 1 (12.20-master)\nnginx + php container","x":280,"y":1810,"width":250,"height":80},
|
||||
{"id":"e1bd6b620c19cb68","type":"text","text":"ALFA 12.14-master","x":-360,"y":1858,"width":250,"height":60},
|
||||
{"id":"cbc6fa9be449920d","type":"text","text":"микрокластер из\ndocker-compose.yml","x":-140,"y":2180,"width":250,"height":60,"color":"4"},
|
||||
{"id":"e21927f303ac5ebe","type":"text","text":"client 3 (12.30-dev)\nnginx + php container","x":280,"y":2083,"width":250,"height":80},
|
||||
{"id":"7e31072d6fb78633","type":"text","text":"php artisan migrate","x":280,"y":2210,"width":250,"height":60},
|
||||
{"id":"7c6c2c55648962ef","type":"text","text":"nginx cloud API conf","x":280,"y":1270,"width":250,"height":60},
|
||||
{"id":"515ae2ee4f67a0dd","type":"text","text":"client1 nginx reverse proxy","x":280,"y":1350,"width":250,"height":60,"color":"4"},
|
||||
{"id":"eb31b58b06f10e58","type":"text","text":"client2 nginx reverse proxy","x":280,"y":1410,"width":250,"height":60,"color":"4"},
|
||||
{"id":"ef99b493b3013036","type":"text","text":"client3 nginx reverse proxy","x":280,"y":1470,"width":250,"height":60,"color":"4"},
|
||||
{"id":"4a4f17fdf8372a20","type":"text","text":"client 2 (12.20-master)\nnginx + php container","x":280,"y":1948,"width":250,"height":80},
|
||||
{"id":"dd326f00ab33086d","type":"text","text":"ALFA 12.20-master","x":-360,"y":1918,"width":250,"height":60},
|
||||
{"id":"a132987c2d33f6fb","type":"text","text":"ALFA 12.30-dev","x":-360,"y":2023,"width":250,"height":60},
|
||||
{"id":"4788e2c6d4ca7eb3","type":"text","text":"**Cloud Users Table**\n**Servers table**","x":-215,"y":2575,"width":250,"height":100},
|
||||
{"id":"259f7566e67f642e","type":"text","text":"client1_db","x":-215,"y":2700,"width":250,"height":50,"color":"6"},
|
||||
{"id":"8281694536ce6432","type":"text","text":"client2_db","x":-215,"y":2750,"width":250,"height":50,"color":"6"},
|
||||
{"id":"6f2c9f0f9913efda","type":"text","text":"client...._db","x":-215,"y":2800,"width":250,"height":50,"color":"6"},
|
||||
{"id":"4d589f29d0f668e9","type":"text","text":"Server monitoring:\nhttps://linuxblog.io/free-linux-server-monitoring-apm-sysadmins/","x":785,"y":2787,"width":250,"height":143},
|
||||
{"id":"5cce89aefd0555dc","type":"text","text":"📂 Storage","x":660,"y":2190,"width":250,"height":50,"color":"5"},
|
||||
{"id":"72b717ca94727dab","type":"text","text":"📄 .env","x":660,"y":2240,"width":250,"height":50,"color":"5"},
|
||||
{"id":"fa87c2e117ec2936","type":"text","text":"1C:CRM API","x":280,"y":1560,"width":250,"height":50},
|
||||
{"id":"2f90b312c252bb65","type":"text","text":"📂alfa front","x":-360,"y":1400,"width":250,"height":60},
|
||||
{"id":"5a1da0aea8eb3e7e","type":"text","text":"📂alfa back","x":-360,"y":1470,"width":250,"height":60},
|
||||
{"id":"8818538517eda40f","type":"text","text":"FRONT BUILD","x":-360,"y":1680,"width":250,"height":60},
|
||||
{"id":"2b6e0e1051629348","type":"text","text":"Обновляемые конфиги","x":1440,"y":960,"width":240,"height":50,"color":"4"},
|
||||
{"id":"7ae28a819183d708","type":"text","text":"Папки клиентских данных","x":1700,"y":955,"width":250,"height":60,"color":"5"},
|
||||
{"id":"ad41857841dfdd7a","type":"text","text":"📂 Storage","x":660,"y":1933,"width":250,"height":50,"color":"5"},
|
||||
{"id":"850de9bf816d4417","type":"text","text":"📄 .env","x":660,"y":1983,"width":250,"height":50,"color":"5"},
|
||||
{"id":"e20ddeb99ebc4a39","type":"text","text":"📂 Storage","x":660,"y":1700,"width":250,"height":50,"color":"5"},
|
||||
{"id":"fac11524084d2db0","type":"text","text":"📄 .env","x":660,"y":1750,"width":250,"height":50,"color":"5"},
|
||||
{"id":"f3d0e9a6d4d8e6a7","type":"text","text":"микрокластер из\ndocker-compose.yml","x":-100,"y":3,"width":250,"height":60,"color":"4"},
|
||||
{"id":"48c693eec010f00d","type":"text","text":"**Cloud Users Table**\n**Servers table**","x":-215,"y":295,"width":250,"height":100},
|
||||
{"id":"f7aa319103f9c366","type":"text","text":"client1_db","x":-215,"y":420,"width":250,"height":50,"color":"6"},
|
||||
{"id":"8a0ed6717109fccb","type":"text","text":"client2_db","x":-215,"y":470,"width":250,"height":50,"color":"6"},
|
||||
{"id":"da4380327e36e455","type":"text","text":"client...._db","x":-215,"y":520,"width":250,"height":50,"color":"6"}
|
||||
],
|
||||
"edges":[
|
||||
{"id":"6a1c2335c8f33e19","fromNode":"22120c2e0489d623","fromSide":"right","toNode":"4ef3c9c39cf49261","toSide":"left","label":"dev / master"},
|
||||
{"id":"18c5b61b8b5a1739","fromNode":"7f1ca2cda9e89951","fromSide":"right","toNode":"1400fca58b1081be","toSide":"left"},
|
||||
{"id":"6aad9f1ddd433a56","fromNode":"ea6f72ceae655889","fromSide":"left","toNode":"7f1ca2cda9e89951","toSide":"left"},
|
||||
{"id":"4bd80150558a22ed","fromNode":"546742f58a9feb77","fromSide":"left","toNode":"90d44e64ab154a1a","toSide":"left"},
|
||||
{"id":"bb47876001260151","fromNode":"818ff03ad9e41a66","fromSide":"left","toNode":"d0967a61e8872474","toSide":"left"},
|
||||
{"id":"8b9545120a460534","fromNode":"f3d0e9a6d4d8e6a7","fromSide":"right","toNode":"e668ecad4af5b75d","toSide":"left"},
|
||||
{"id":"89a1a5ffc139910d","fromNode":"6ed5eab6b8e16f3b","fromSide":"bottom","toNode":"2b6e0e1051629348","toSide":"top"},
|
||||
{"id":"ffb10a9866c319c7","fromNode":"6ed5eab6b8e16f3b","fromSide":"bottom","toNode":"7ae28a819183d708","toSide":"top"},
|
||||
{"id":"603e8c0faddb7095","fromNode":"ac17a82fee50447b","fromSide":"bottom","toNode":"6ed5eab6b8e16f3b","toSide":"top"},
|
||||
{"id":"8eb4c56f06740da3","fromNode":"90d44e64ab154a1a","fromSide":"right","toNode":"8baa0c9eec860ebe","toSide":"left"},
|
||||
{"id":"eb02999d1a77444b","fromNode":"d0967a61e8872474","fromSide":"right","toNode":"eeb7d1ae3e55e3a9","toSide":"left"},
|
||||
{"id":"2be2042ffbd95bff","fromNode":"4ef3c9c39cf49261","fromSide":"bottom","toNode":"c76ca4b80233d6e3","toSide":"top"},
|
||||
{"id":"fb519ef034e925b4","fromNode":"0e0c94ae12c826cd","fromSide":"bottom","toNode":"f3d0e9a6d4d8e6a7","toSide":"left","label":"RUN"},
|
||||
{"id":"dff6587a91af0a54","fromNode":"c76ca4b80233d6e3","fromSide":"bottom","toNode":"0e0c94ae12c826cd","toSide":"top"},
|
||||
{"id":"56e251879b5b56c5","fromNode":"0cfb0d2300a96176","fromSide":"bottom","toNode":"72dae085047a9928","toSide":"right"},
|
||||
{"id":"b896b5e8ecc0f1e3","fromNode":"88e977d27b7f415c","fromSide":"right","toNode":"ac17a82fee50447b","toSide":"top"},
|
||||
{"id":"9015266bbc4e9552","fromNode":"cbc6fa9be449920d","fromSide":"right","toNode":"eef47394382fac4e","toSide":"left"},
|
||||
{"id":"99e8db1d0511e060","fromNode":"7e31072d6fb78633","fromSide":"bottom","toNode":"90c1c7ba3b2a3941","toSide":"right"},
|
||||
{"id":"d1eb9c9006d25684","fromNode":"dd06d316f5b061cf","fromSide":"bottom","toNode":"cbc6fa9be449920d","toSide":"left","label":"RUN"},
|
||||
{"id":"54b54d3ce5174996","fromNode":"8818538517eda40f","fromSide":"bottom","toNode":"dd06d316f5b061cf","toSide":"top"},
|
||||
{"id":"3cfc91b87ec2218e","fromNode":"e21927f303ac5ebe","fromSide":"right","toNode":"f550aa3850af3b3c","toSide":"left"},
|
||||
{"id":"0bfc8acf9933784f","fromNode":"0c587123a514f592","fromSide":"bottom","toNode":"8818538517eda40f","toSide":"top"},
|
||||
{"id":"8be35df1b1f215f5","fromNode":"4a4f17fdf8372a20","fromSide":"right","toNode":"4d752a474299d893","toSide":"left"},
|
||||
{"id":"1fee43bb118e9bec","fromNode":"01457678c3ddbcb9","fromSide":"right","toNode":"02d851bdc13e9715","toSide":"left"},
|
||||
{"id":"fc53743877753351","fromNode":"eb31b58b06f10e58","fromSide":"left","toNode":"4a4f17fdf8372a20","toSide":"left"},
|
||||
{"id":"608f5ba2f741c694","fromNode":"ef99b493b3013036","fromSide":"left","toNode":"e21927f303ac5ebe","toSide":"left"},
|
||||
{"id":"f32b96a133ec7492","fromNode":"515ae2ee4f67a0dd","fromSide":"left","toNode":"01457678c3ddbcb9","toSide":"left"},
|
||||
{"id":"6a5bd892f0aed445","fromNode":"22120c2e0489d623","fromSide":"right","toNode":"0c587123a514f592","toSide":"left"},
|
||||
{"id":"9bcce316c464a91b","fromNode":"6ed5eab6b8e16f3b","fromSide":"left","toNode":"aa4bd7dc599c3a8d","toSide":"top"}
|
||||
]
|
||||
}
|
||||
176
WORK & PROJECTS/Mol/Планы и диаграммы/Alfa cloud readme.md
Normal file
176
WORK & PROJECTS/Mol/Планы и диаграммы/Alfa cloud readme.md
Normal file
@@ -0,0 +1,176 @@
|
||||
|
||||
#### Общая информация
|
||||
|
||||
Alfa Cloud — серверный API, который предоставляет доступ к управлению контейнерами и конфигурацией облаков Alfa с поддержкой нескольких облачных серверов.
|
||||
|
||||
Данный документ нужен для разработки полноценного фронтенда управления контейнерами.
|
||||
|
||||
Все запросы должны производиться только из админки Mol. Метод авторизации каждого запроса - Basic Auth (обычный логин и пароль). Учётные данные можно менять регулярно, для этого существует специальный запрос. Учётные данные НЕ синхронизированы с основными учётными данными MOL (и для безопасности и отсутствия необходимости синхронизации всех юзеров. Нужен только главный админ).
|
||||
|
||||
#### Точки подключения:
|
||||
|
||||
GET:
|
||||
```
|
||||
/servers — получить список активных серверов (для разворачивания новых клиентов)
|
||||
/servers/{server_id} — получить подробную информацию о сервере
|
||||
(TODO: с параметрами мониторинга и нагрузкой в реальном времени)
|
||||
/clients — получить список контейнеров клиентов со всеми подробностями (поддерживается пагинация). С флагом доступностью контейнера. На фронте можно сделать прямой переход на облако клиента.
|
||||
/clients/{id}/demo_enable - применение таблиц демо-данных (demo seeder)
|
||||
/clients/{id}/demo_disable - удаление демо-данных (demo inverse seeder)
|
||||
/clients/{id}/maintain/{1/0} - включить или отключить страницу "Техническое обслуживание" у клиента
|
||||
/clients/{id}/send_success - отправить письмо клиенту с успешной регистрацией облака с логином и паролем
|
||||
/clients/{id}/send_expire - отправить письмо клиенту о скором истечении использования (можно/нужно автоматизировать)
|
||||
/clients/{id}/expire_dates_history - история изменения продлений дат пользователя
|
||||
|
||||
/clients/reconfigurate - git pull и обновить все .env файлы у ВСЕХ облаков из актуального .env.example репозитория
|
||||
```
|
||||
|
||||
POST:
|
||||
```
|
||||
/servers/ — создать сервер в БД (при наличии id - обновление)
|
||||
/clients/ — создать клиента (при наличии id - обновление данных, здесь не нужно отправлять пароль, а задавать его командой ниже)
|
||||
при создании - после проверки сразу вернётся id.
|
||||
во время создания нужно таймером опрашивать
|
||||
/clients/{id}/createlog и получать актуальный лог о создании контейнера (поднимать ws пока не будем). За окончание создания отвечает статус "completed" => "ok | error".
|
||||
|
||||
/clients/{id}/admin_password — задать новый пароль администратора лаборатории
|
||||
/clients/{id}/expire_date - обновление крайней даты использования системы
|
||||
TODO: перенос данных клиента с одного сервера на другой
|
||||
TODO: /cloud_admin_password - задать пароль для подключения к API
|
||||
```
|
||||
|
||||
|
||||
DELETE
|
||||
```
|
||||
/clients/{id} — редкая функция — запуск очистки пользовательских конфигов с серверов
|
||||
/servers/{server_id} – не реализовано, да и пока что не надо. Тут нужно просто удаление информации о сервере из БД.
|
||||
```
|
||||
|
||||
Команды менеджмента контейнеров и деплоя (GET)
|
||||
```
|
||||
/servers/check_host/{host_ip} - проверить доступность и настроенность сервера для деплоя. Применяется при создании и добавления сервера
|
||||
/servers/{server_id}/images - список доступных версий образов на сервере (для переключения или создания пользователя)
|
||||
/servers/{server_id}/reboot_server - перезапуск сервера
|
||||
/clients/{id}/reboot - попытка перезапуска контейнера пользователя
|
||||
/server/{server_id}/deploy - пересоздание ВСЕХ конфигов и перезапуск серверного кластера (действие, применяющееся после билда и/или смены версий). После этого необходимо сделать migrate_all
|
||||
/clients/{id}/createlog - Получить лог создания контейнера
|
||||
|
||||
|
||||
POST /containers/build_master_for_all/ - получение нового кода из ветки master на ВСЕХ серверах, сборка новых образов версии, отправка в БД всех лабораторий информации о новой версии (form-data):
|
||||
- version: 1.3-master
|
||||
- info: Описание версии и новых функций (желательно в .md)
|
||||
|
||||
GET /clients/{subdomain}/update_to/{version} - вызов переключения образа на выбранную версию из-под интерфейса клиента.
|
||||
|
||||
|
||||
|
||||
/containers/{server_id}/build_dev/{new_version} - получение кода из ветки dev, сборка фронта и нового образа (промежуточная версия/хотфикс)
|
||||
/containers/{server_id}/build_master/{new_version} - получение кода из ветки master, сборка нового образа (промежуточная версия/хотфикс)
|
||||
|
||||
/containers/{server_id}/prune - удалить неиспользуемые версии образов (containers/image prune -a --force) (docker system prune -a --volumes --force)
|
||||
/clients/{id}/switch/{image_name} - принудительно переключить клиента на образ другой версии
|
||||
/server/{server_id}/switch_all/{image_name} - принудительно переключить всех клиентов на образ другой версии
|
||||
/clients/{id}/migrate - запустить обновление БД клиента (artisan migrate)
|
||||
/server/{server_id}/migrate_all - запустить обновление БД у всех клиентов на сервере
|
||||
/clients/{id}/move_to/{server_id} - переместить клиента на другой сервер
|
||||
/clients/{id}/copy_to/{client_id} - установить окружение клиента и БД в базу другого пользователя ТОЛЬКО на stage-сервер. Клиент - DEMO либо TEST.
|
||||
|
||||
```
|
||||
|
||||
|
||||
Все данные в post отправляются посредством обычного post form-data.
|
||||
|
||||
#### Описание полей form-data:
|
||||
|
||||
```
|
||||
POST /servers/
|
||||
id - опционально - обновление при наличии/создание при отсутствии
|
||||
name - наименование сервера
|
||||
host - назначение хоста, на котором расположен sql-сервер и docker-контейнер клиента, доступный бэкенду. Возможен IP-адрес внутренней сети.
|
||||
domain - поддомен, на котором будут работать клиенты. На этот хост должна быть направлена dns-зона основного домена
|
||||
sql_user
|
||||
sql_password - логин/пароль для удалённого подключения к SQL со стороны бэкенда для обновления БД клиентов. Необходимо выделить отдельные логины/пароли при настройке сервера и ограничить их подсетью.
|
||||
```
|
||||
|
||||
```
|
||||
POST /clients/
|
||||
id - опционально - обновление при наличии/создание при отсутствии
|
||||
server_id - id сервера, на котором создаётся клиент
|
||||
name - наименование клиента (создаётся лаба с таким именем в БД клиента)
|
||||
short_name - короткое наименование (для отображения у нас)
|
||||
admin_f - фамилия администратора
|
||||
admin_i - имя администратора
|
||||
admin_o - отчество администратора
|
||||
admin_login - имя пользователя администратора
|
||||
password - пароль администратора (последние 5 полей пишутся в БД клиента)
|
||||
subdomain - поддомен, на котором создаётся ЛИМС лабы
|
||||
email - е-мейл администратора (пишется в БД клиента)
|
||||
phone - телефон администратора (для будущих оповещений)
|
||||
city - город
|
||||
timezone - часовой пояс (для контейнера лаборатории)
|
||||
version_tag - версия образа (доступные версии получаются из запроса /server/id/images)
|
||||
config - конфигурация лаборатории. Условный текст.
|
||||
license - лицензия лаборатории. Условный текст.
|
||||
license_expires_at - datetime окончания лицензии (пишется в БД клиента)
|
||||
```
|
||||
|
||||
|
||||
```
|
||||
POST /clients/{id}/expire_date
|
||||
sender - имя обновляющего дату (запишется в логи)
|
||||
license_expires_at - datetime нового срока лицензии
|
||||
```
|
||||
|
||||
```
|
||||
POST /clients/{id}/admin_password
|
||||
password - пароль
|
||||
confirm_password - подтверждение
|
||||
```
|
||||
|
||||
|
||||
|
||||
-----------
|
||||
|
||||
**Прочая информация**
|
||||
|
||||
Идеи:
|
||||
- Получать количество пользователей в каждой системе для общего списка клиентов
|
||||
- При билде образов автоматически вычислять версию и приписывать -dev или -master
|
||||
- Также версию образа можно тащить пользователям в интерфейс
|
||||
### TODO: Добавить таблицу с настройками облака в каждую пользовательскую таблицу!
|
||||
|
||||
- Проверка на уровне системы настройки "Техническое обслуживание" и показ блокирующей страницы
|
||||
- Проверка на крайнюю дату использования и блокировка системы.
|
||||
- Проверка на показ “турбостарта” при запуске
|
||||
- Проверка на вопрос “краткого туториала”
|
||||
|
||||
### Требования к конечному серверу:
|
||||
git
|
||||
docker+compose
|
||||
nginx
|
||||
mariadb / postgresql
|
||||
certbot && certbox-nginx
|
||||
nginx can bash
|
||||
nginx authorized key from master API
|
||||
nvm.sh для пользователя nginx, содержащий импорт путей к nvm/npm
|
||||
|
||||
сделать nginx пользователя по-умолчанию www-data для правильного предоставления прав из-под контейнера.
|
||||
|
||||
www-data/nginx sudo NOPASSWD /usr/bin/docker (remote cmd exec)
|
||||
www-data/nginx sudo NOPASSWD /usr/bin/docker-compose (remote cmd exec)
|
||||
```
|
||||
www-data ALL=(ALL) NOPASSWD: /usr/bin/docker
|
||||
www-data ALL=(ALL) NOPASSWD: /usr/sbin/nginx
|
||||
www-data ALL=(ALL) NOPASSWD: /usr/bin/docker-compose
|
||||
```
|
||||
|
||||
|
||||
www-data sudo NOPASSWD certbot (remote cmd exec)
|
||||
|
||||
### Права на каталоги сервера (nginx:nginx 775):
|
||||
/srv/www — current code (composer install && npm run build)
|
||||
/srv/docker – docker-compose.yml and Dockerfile (copy all from /srv/git without .git)
|
||||
/srv/docker/clients/client1/.env — client files mount dir
|
||||
/srv/docker/clients/client1/public
|
||||
/srv/docker/clients/client1/php/add_vars.ini
|
||||
|
||||
Reference in New Issue
Block a user