shell readme

 avatar
unknown
markdown
2 years ago
14 kB
14
Indexable

Shell-front

Проект сгенерирован с использованием Angular CLI версии 12.1.1.

Table of Contents

  1. Install dependencies
  2. Run
  3. Build
  4. Unit testing
  5. Deploy
  6. Development
  7. Progressive Web Application

Install dependencies

Для установки зависимостей выполните команду с использованием пакетного менеджера yarn: yarn install

Run

Проект можно запустить в нескольких режимах:

  • запуск в режиме работы с ПАИП - yarn start
  • запуск в режиме работы с ПАИП + поддержка прокси для вебсокетов - yarn start:proxy
  • запуск в режиме работы с НСИ - yarn start-nsi
  • запуск в режиме работы с НСИ + поддержка прокси для вебсокетов - yarn start-nsi:proxy

Build

Выполните ng build для сборки проекта.

Unit testing

Выполните ng test для запуска unit тестов с использованием Karma.

Deploy

Внимание! Приложение поддерживает режим работы PWA. Имеются примечания, описанные в разделе PWA Значения по умолчанию хранятся в ./app-config/env.js

ENV

Актуальные env для контура gas.dev лежат тут:

Пример заполнения env

APP_PROJECT_PATH: '/shell' # путь приложения в брауере APP_DEFAULT_ROUTE: '/paip/main/authorities' # начальный путь в приложении ENABLE_PWA: 'true' # включение режима pwa PAIP_URL: 'https://gas.apps.dev.devsun.ru/shell' # Url оркестратора в контуре ПАИП NSI_URL: 'https://nsi.apps.dev.devsun.ru/shell' # Url оркестратора в контуре НСИ AUTH_DOMAIN: 'https://sso.gas.apps.dev.devsun.ru/' # адрес ССО (SSO) AUTH_CLIENT_ID: 'arm' # client_id в ССО (SSO) AUTH_CLIENT_SECRET: '' # client_secret ССО (SSO) AUTH_SCOPE: 'openid nsiAdmin dictAdmin dictOperator' # запрашиваемые scope в системе ССО (SSO) HIDDEN_NAVIGATOR_MENU_TOPICS: '' # скрытые разделы в боковом меню оркестратора MF_AUTH: 'https://auth.gas.apps.dev.devsun.ru/remoteEntry.js' # адрес микрофронта авторизации MF_NSI_HANDBOOKS: 'https://nsi.apps.dev.devsun.ru/mfe/nsi/remoteEntry.js' # адрес микрофронта НСИ MF_CAMPAIGNS: 'https://gas.apps.dev.devsun.ru/mfe/campaigns/remoteEntry.js' # адрес микрофронта кампаний MF_COMMISSIONS: 'https://gas.apps.dev.devsun.ru/mfe/commissions/remoteEntry.js' # адрес микрофронта комиссий MF_PAIP_LAW: 'https://gas.apps.dev.devsun.ru/mfe/law/remoteEntry.js' # адрес микрофронта "ПРАВО" MF_PAIP_CALENDAR: 'https://gas.apps.dev.devsun.ru/mfe/calendar/remoteEntry.js' # адрес микрофронта "Календарные планы" MF_PAIP_CERTIFICATE: 'https://gas.apps.dev.devsun.ru/mfe/certificate/remoteEntry.js' # адрес микрофронта "Удостоверения" MF_CANDIDATES: 'https://gas.apps.dev.devsun.ru/mfe/candidates/remoteEntry.js' # адрес микрофронта авторизации MF_TVD: 'https://gas.apps.dev.devsun.ru/mfe/tvd/remoteEntry.js' # адрес микрофронта "Территории и участки" MF_CARTORGAPHY: 'https://osm.gas.apps.dev.devsun.ru/remoteEntry.js' # адрес микрофронта "Картография" NSI_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/nsi' # адрес микросервиса НСИ PAIP_LAW_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/legal' # адрес микросервиса "Право" PAIP_CALENDAR_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/calendar' # адрес микросервиса "Календарные планы" PAIP_CERTIFICATE_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/certificate' # адрес микросервиса "Удостоверения" WORKFLOW_MANAGER_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/zeebe/manager' # адрес микросервиса Zeebe manager META_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/meta' # адрес микросервиса "Мета" FIAS_SERVICE_HOST: 'https://platform.apps.dev.devsun.ru/servicegw/fias' # адрес микросервиса "ФИАС" JOURNAL_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/journal' # адрес микросервиса "Журнал" NOTIFIER_GATEWAY: 'wss://gas.apps.dev.devsun.ru/servicegw/notifier/gateway' # адрес микросервиса Notifier gateway S3_URL_SIGNER: 'https://gas.apps.dev.devsun.ru/servicegw/s3urlsigner' # адрес микросервиса S3 Url signer FORMAT_CONVERTER: 'https://gas.apps.dev.devsun.ru/servicegw/format/converter' # адрес микросервиса Format Converter USERTASK_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/usertask' # адрес микросервиса User task ADDRESS_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/address' # адрес микросервиса "Адоресный справочник" ADDRESS_SEARCH_NODE_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/address/search/node' # адрес микросервиса микросервиса "Адоресный справочник" - search node CAMPAIGN_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/campaign/election' # адрес микросервиса Кампании COMMISSIONS_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/commission' # адрес микросервиса Комиссии CANDIDATE_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/candidate' # адрес микросервиса Кандидаты COMMISSION_MEMBER_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/commissionmember' # адрес микросервиса Члены избирательных комиссий (Члены ИК) TERRITORY_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/territory' # адрес микросервиса "Территории" RESULTS_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/results' # адрес микросервиса "Итоги" VOTING_FLOW_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/voting/flow' # адрес микросервиса Ход голосования ROLE_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/decision' # адрес микросервиса Ролей в выборах APOLLO_SERVER_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/graphql-federation/gateway' # адрес микросервиса Apollo federation INCIDENT_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/incident' # адрес микросервиса "Инциденты" STAFF_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/staff' # адрес микросервиса Персонал / Сотрудники REPORT_MAKER_SHIM_HOST: 'https://gas.apps.dev.devsun.ru/report-maker-shim' # адрес микросервиса Отчетов DSO_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/strict/documents' # адрес микросервиса Документы строгой отчетности (ДСО) SPIEXPORTER_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/spiexporter' # адрес микросервиса SPIEXPORTER CARTOGRAPHY_HOST: 'https://osm-back.gas.apps.dev.devsun.ru' # Хост картографии OSM_HOST: 'https://{s}.tile.openstreetmap.org' # ОСМ Хост (для картографии) S3_URL: 'https://gas-dev.s3pgs.devsun.ru' # адрес хранилища s3 для загрузки файлов PACKAGE_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/service/package/search/packageSearch' # адрес пакетного поиска REFERENDUM_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/referendum/group/member' # адрес ендпоинта для референдума GAR_SERVICE_HOST: 'https://nsi.apps.dev.devsun.ru/service/micro-gar-service' # адрес микросервиса ГАР

Development

Хлебные крошки <a name="breadcrumbs"></a>

Для отображения используется компонент base-breadcrumbs.component.ts, он основан на библиотеке xng-breadcrumbs
Документация библиотеки: https://udayvunnam.github.io/xng-breadcrumb/#/api

Типизация атрибута info для роутера <a name="breadcrumbs_info"></a>

в info можно указать данные для подтягивания значений из федерации Apollo, а также для подстановки значений по условию в зависимости от значения параметра роута, указанного в paramName

interface BreadcrumbInfo { /** * Название Graphql query */ query: string; /** * Название параметра в роутере, который будет подставляться в GraphQL запрос */ paramName: string; /** * Атрибуты для выборки GraphQL, котрые попадут в хлебные крошки */ labelFields: string[]; /** * Мапа подстановок типа paramName - label */ routeParamNameConditions?: IRouteParamNameCondition; } /** * Интерфейс для мапы подстановок paramName - label, где default - именование крошки по умолчанию */ interface IRouteParamNameCondition { [paramName: string]: string; default: string; }

Пример настроенного роута:

{ path: ':id', component: AuthorizedConfidantMainComponent, data: { name: 'authorized_confidant', label: 'Уполномоченное/доверенное лицо', breadcrumb: { info: { query: 'AuthorizedConfidantPersonById', paramName: ':id', labelFields: ['surname', 'name', 'patronymic'], }, }, }, }

Пример настроенного роута (статический заголовок хлебных крошек):

{ path: 'territories', component: TerritoriesListComponent, data: { breadcrumb: { label: 'Территории', }, }, }

Пример настроенного роута с использованием заполненного параметра routeParamNameConditions:

{ { path: ':incidentId', component: HandbookIncidentRequestComponent, data: { name: 'handbook_incident_request', breadcrumb: { label: 'Заявка на некорректную запись', info: { paramName: ':handbook', routeParamNameConditions: { ADDRESS: 'Заявка на некорректный адрес', default: 'Заявка на некорректную запись', }, }, }, }, }, }

Пример настроенного роута с использованием заполненного параметра URL(рест сервис):

{ { path: ':id', component: TestComponent, data: { name: 'test', breadcrumb: { label: 'Заявка на некорректную запись', info: { url: `${window.env.TEST_HOST}/:id`, // линк хоста paramName: ':id',// Имя параметра labelFields: ['name'], // Имя лейбла полученного из response хоста }, }, }, }, }

Progressive Web Application

Примечания

Приложение поддерживает режим работы PWA только в случаях, когда значение переменной APP_PROJECT_PATH не задано:

envs: APP_PROJECT_PATH: '' # ...

Проверка работы PWA и Service Worker

Для проверки работы кэширования файлов и запросов и оффлайн работы приложения, нужно:

  1. Собрать проект под продакшен командой ng build;
  2. Запустить сборку с помощью пакета http-server с указанием нужного порта командой: http-server -p 4200 -c-1 dist/
  3. Открыть в браузере страницу по адресу: http://localhost:4200/
  4. Открыть devtools браузера, выбрать вкладку Application, выбрать слева в сайдбаре вкладку Service Workers и увидеть информацию о воркере, там же можно эмулировать оффлайн режим сети
  5. Если после запуска возникли проблемы и приложение не отображается, можно локально поменять расположение приложение с /shell на /.