Мультитенантты платформа: форма конструкторы, өтінімдер, келісу тізбектері, журналдар, IAM-құқықтары бар админка. Скриншот жоқ — жоба ішкі. Сондықтан кейс схемалар мен пайымдауға құрылған.
Vue 3мультитенанттылықIAMішкі өнім
Міндет
Бірнеше жалға алушы компания бір жүйеде жұмыс істейді: өз процестеріне форма құрады, келісу тізбектері бойынша өтінім жібереді, журнал жүргізеді. Құқықтар IAM деңгейінде: кім көреді, кім келіседі, кім басқарады.
Өнім командасында фронтенд-әзірлеуші болып жұмыс істеймін: форма конструкторы, өтінімдер, журналдар мен админка интерфейстері, клиенттік бөліктің архитектурасы.
Не қиын болды
01
Кездейсоқ бұзуға болмайтын фронт архитектурасы
Сервер мен экран арасында үш қабат: api.js — HTTP туралы, services — домен туралы, composables — күй туралы біледі. Компоненттер «қарапайым»: тек көрсетеді, логикасы жоқ, api.js-ке тікелей бармайды — бұған ауызша келісім емес, линтер ережелері тыйым салады. Рұқсат етілген легаси-импорттар тізімі бекітілген және бірте-бірте қысқаруда.
02
Бір фильтр, деректің екі стратегиясы
Кезеңдер формаға тиесілі, бірақ өтінім тізімдері екі түрлі: бір формаға байланған журналдар және жолдары әр формадан, әр кезең жиынтығымен келетін аралас тізімдер. Опцияларды жинаудың бір ғана жолы жоқ — сондықтан бір фильтрдің артында екі стратегия жасырылған. Мүмкіндіктер матрицасы қай бөлім қандай фильтрді қолдайтынын бекітеді — интерфейс бэкенд қабылдамайтын фильтрді салмауы үшін.
03
Симптомы мен себебі әр қабатта жатқан баг
Навигация навбарда бұзылды, бірақ себебі екі қабат төменде: IAM жауабын өңдегенде рөлдер жолы спредпен ашылып, таңбалар массивіне айналған. Әр «таңба-рөл» бүкіл тізбекпен адал өңделе берді. Дәл осындай багтар қабатты архитектураның пайдасына дәлел: қабаттар араласпағандықтан іздеу жолы қысқа болды.
Не жасалды
Форма конструкторы және келісу тізбектерімен жүретін өтінімдер
Операциялар журналы және IAM-құқықтары бар админка
Линтер ережелерімен бекітілген үш қабатты фронт архитектурасы
Деректің екі инкапсуляцияланған стратегиясы бар кезең фильтрі
Нәтиже
Архитектуралық ережелерді CI-дағы линтер тексереді және олар команданың есінде сақтауына тәуелді емес. Платформа дамып келеді, жоба жалғасуда.