Мастер-Тур(15):Личный Кабинет (ЛК) — различия между версиями

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
(Новая страница: «<span style="color:red;font-size:120%">Статья находится на стадии разработки.</span> Версия статьи от {{REVISIONDA…»)
 
(Финансы)
 
(не показано 6 промежуточных версий этого же участника)
Строка 9: Строка 9:
  
 
Основные возможности личного кабинета:
 
Основные возможности личного кабинета:
* '''Просмотр списка заказов с детальной информацией''' позволяет агентам быстро получать сведения о бронированиях, статусах заявок, суммах оплат и задолженностях.
+
* '''Просмотр списка заказов с детальной информацией''' позволяет агентам быстро получать сведения о бронированиях, статусах заявок, суммах оплат и задолженностях.
* '''Фильтрация и сортировка заявок''' помогает находить нужные заявки по заданным параметрам (номер заявки, фамилия туриста, даты поездки и т. д.).
+
* '''Фильтрация и сортировка заявок''' помогает находить нужные заявки по заданным параметрам (номер заявки, фамилия туриста, даты поездки и т. д.).
* '''Управление учётными данными агентства''' включает редактирование контактной информации, реквизитов компании и управление учетными записями сотрудников.
+
* '''Управление учётными данными агентства''' включает редактирование контактной информации, реквизитов компании и управление учетными записями сотрудников.
* '''Доступ к финансовой информации и отчетам''' позволяет просматривать суммы оплат, задолженности и формировать отчёты для контроля финансовых операций.
+
* '''Доступ к финансовой информации и отчетам''' позволяет просматривать суммы оплат, задолженности и формировать отчёты для контроля финансовых операций.
* '''Взаимодействие с туроператором через сообщения и уведомления''' обеспечивает связь между агентством и туроператором, уведомляя о важных изменениях и позволяя вести переписку.
+
* '''Взаимодействие с туроператором через сообщения и уведомления''' обеспечивает связь между агентством и туроператором, уведомляя о важных изменениях и позволяя вести переписку.
 +
 
 +
== Настройки личного кабинета ==
 +
Перед использованием Личного кабинета необходимо настроить файлы конфигурации для сервисов ''AccountClient'', ''AccountService'' и ''PrintReportAPI''
 +
 
 +
===Настройки клиента Личного кабинета (AccountClient)=== 
 +
настройки, задаваемые в файле settings.json
 +
 
 +
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse"
 +
|- style="background-color:#F2F2F2"
 +
! width="2%" | №
 +
! width="28%" | Описание
 +
! width="35%" | Значение
 +
! width="35%" | Настройка
 +
 
 +
|- style="vertical-align:text-top"
 +
| 1
 +
| Базовый адрес сервиса
 +
| URL сервиса (HTTP/HTTPS)
 +
| <syntaxhighlight lang="json" enclose="div">
 +
{
 +
  "API_URL": "http://localhost:7000"
 +
}
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 2
 +
| Перечень отчётов, доступных к печати
 +
| Массив объектов; каждый элемент — один отчёт
 +
| <syntaxhighlight lang="json" enclose="div">
 +
{
 +
  "ORDER_REPORTS": [ { /* элементы см. пп. 3–6 */ } ]
 +
}
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 3
 +
| Идентификатор отчёта
 +
| "series" — строковый код/номер отчёта
 +
| <syntaxhighlight lang="json" enclose="div">
 +
{ "series": "4001" }
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 4
 +
| Заголовок отчёта в интерфейсе
 +
| Строка для отображения в меню «Отчёты»
 +
| <syntaxhighlight lang="json" enclose="div">
 +
{ "title": "Лист бронирования" }
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 5
 +
| Профиль отчёта
 +
| "guid" — уникальный GUID используемого профиля
 +
| <syntaxhighlight lang="json" enclose="div">
 +
{ "guid": "E147D680-AF8C-414C-958F-E0F2C2E4E592" }
 +
</syntaxhighlight>
 +
|}
 +
'''Пример:'''<br>
 +
<syntaxhighlight lang="json" enclose="div">
 +
{
 +
  "API_URL": "http://localhost:7000",
 +
  "ORDER_REPORTS": [
 +
    {
 +
      "series": "ARM",
 +
      "title": "Отчёт агента",
 +
      "guid": "57E0E9DB-8F20-4151-B0D4-40F1138D5E01"
 +
    }
 +
  ]
 +
}
 +
</syntaxhighlight>
 +
Примечание. Для каждого подключённого отчёта должен использоваться корректный GUID профиля, существующий в базе.
 +
 
 +
===Настройки аккаунт сервиса  (AccountService)=== 
 +
настройки, задаваемые в файле appsettings.json
 +
 
 +
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse"
 +
|- style="background-color:#F2F2F2"
 +
! №
 +
! Описание
 +
! Значение
 +
! Настройка
 +
 
 +
|- style="vertical-align:text-top"
 +
| 1
 +
| Ключ и TTL JWT-токена
 +
| Секрет и время жизни (в минутах)
 +
| <syntaxhighlight lang="json" enclose="div">
 +
"Jwt": {
 +
  "Key": "SecretKey10125779374235322",
 +
  "TokenValidityInMinutes": 100
 +
}
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 2
 +
| Тип используемой СУБД
 +
| 1 — Microsoft SQL Server; 2 — PostgreSQL; … до 5; 6–9 — зарезервировано
 +
| <syntaxhighlight lang="json" enclose="div">
 +
"ConnectionParameters": { "databaseType": 1}
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 3
 +
| Адрес сервера БД
 +
| Имя/адрес инстанса
 +
| <syntaxhighlight lang="json" enclose="div">
 +
"ConnectionParameters": { "server": "ip-адрес сервера базы данных ПК Мастер-Тур" }
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 4
 +
| Имя базы данных
 +
| Название БД
 +
| <syntaxhighlight lang="json" enclose="div">
 +
"ConnectionParameters": { "database": "название базы данных ПК Мастер-Тур" }
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 5
 +
| Учётные данные БД
 +
| Пользователь и пароль
 +
| <syntaxhighlight lang="json" enclose="div">
 +
"ConnectionParameters": {
 +
  "user": "логин пользователя ПК Мастер-Тур",
 +
  "password": "пароль пользователя ПК Мастер-Тур"
 +
}
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 6
 +
| Имя приложения в коннекте
 +
| Для трассировки в БД
 +
| <syntaxhighlight lang="json" enclose="div">
 +
"ConnectionParameters": { "appName": "MegatecAccountService" }
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 7
 +
| Логирование сервиса: включить консоль
 +
| true/false
 +
| <syntaxhighlight lang="json" enclose="div">
 +
"Logger": { "EnableConsole": true, ... }
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 8
 +
| Путь к лог-файлам
 +
| Папка ("" — отключено)
 +
| <syntaxhighlight lang="json" enclose="div">
 +
"Logger": { "FilePath": "" }
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 9
 +
| Ротация логов по размеру
 +
| Максимальный размер (МБ) и число файлов
 +
| <syntaxhighlight lang="json" enclose="div">
 +
"Logger": {
 +
  "MaxLogFileSize": 10,
 +
  "MaxOldLogFilesCount": 30
 +
}
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 10
 +
| Имя службы и адрес(а) прослушивания
 +
| ServiceName и список URL
 +
| <syntaxhighlight lang="json" enclose="div">
 +
"Install": {
 +
  "ServiceName": "MegatecAccountService",
 +
  "ServiceAddress": [ "http://*:7000" ]
 +
}
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 11
 +
| IP-интерфейс привязки
 +
| IPv6Any / конкретный IP
 +
| <syntaxhighlight lang="json" enclose="div">
 +
"Install": { "IPAddress": "IPAddress.IPv6Any" }
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 12
 +
| Адрес удалённого сервиса печати отчетов
 +
| Базовый URL PrintReportAPI
 +
| <syntaxhighlight lang="json" enclose="div">
 +
"RemoteServices": {
 +
  "ReportServiceUrl": "http://localhost:7050/PrintReportAPI/"
 +
}
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 13
 +
| Разрешённые хосты
 +
| "*" — без ограничений
 +
| <syntaxhighlight lang="json" enclose="div">
 +
"AllowedHosts": "*"
 +
</syntaxhighlight>
 +
|}
 +
'''Пример:'''<br>
 +
<syntaxhighlight lang="json" enclose="div">
 +
{
 +
  "Jwt": {
 +
    "Key": "SecretKey10125779374235322",
 +
    //"Issuer": "https://localhost:44341",
 +
    //"Audience": "https://localhost:44341",
 +
    "TokenValidityInMinutes": 100
 +
  },
 +
  "ConnectionParameters": {
 +
    // Database types:
 +
    //      "Micrisoft_SQLServer" = 1
 +
    //      "PostgreSQL" = 2
 +
    //      ... to 5
 +
    // For databases not supported with EF Core reserved numbers from 6 to 9
 +
    "databaseType": 1,
 +
    "server": "ip-адрес сервера базы данных ПК Мастер-Тур",
 +
    "database": "название базы данных ПК Мастер-Тур",
 +
    "user": "логин пользователя ПК Мастер-Тур",
 +
    "password": "пароль пользователя ПК Мастер-Тур",
 +
    "appName": "MegatecAccountService"
 +
  },
 +
  "Logger": {
 +
    "EnableConsole": true,
 +
    "FilePath": "",
 +
    "MaxLogFileSize": 10, // МБ
 +
    "MaxOldLogFilesCount": 30
 +
  },
 +
  "Install": {
 +
    "ServiceName": "MegatecAccountService",
 +
    "ServiceAddress": [ "http://localhost:7000" ],
 +
    "IPAddress": "IPAddress.IPv6Any"
 +
  },
 +
    "RemoteServices": {
 +
    "ReportServiceUrl": "http://localhost:7050/PrintReportAPI/"
 +
  },
 +
  "AllowedHosts": "*"
 +
}
 +
</syntaxhighlight>
 +
===Настройки сервиса печати отчетов (PrintReportAPI)=== 
 +
Служба печати генерирует файл отчёта по переданному идентификатору и профилю.
 +
 
 +
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse"
 +
|- style="background-color:#F2F2F2"
 +
! №
 +
! Описание
 +
! Значение
 +
! Настройка
 +
 
 +
|- style="vertical-align:text-top"
 +
| 1
 +
| Параметры логирования
 +
| Путь к логам, уровень, вывод в консоль
 +
| <syntaxhighlight lang="xml" enclose="div">
 +
<loggerSection>
 +
  <Loggers path="Logs">
 +
    <Logger level="ALL" name="ReportLoger" console="false" />
 +
  </Loggers>
 +
</loggerSection>
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 2
 +
| Строка подключения к БД
 +
| Data Source, Initial Catalog, User Id, Password, Application Name
 +
| <syntaxhighlight lang="xml" enclose="div">
 +
<appSettings>
 +
  <add key="connectionString"
 +
      value="Data Source=ip-адрес сервера;
 +
Initial Catalog=название базы;
 +
User Id=логин пользователя;Password=пароль;
 +
Application Name=PrintReportAPI" />
 +
</appSettings>
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 3
 +
| Базовый адрес сервиса
 +
| URL PrintReportAPI
 +
| <syntaxhighlight lang="xml" enclose="div">
 +
<appSettings>
 +
  <add key="serviceAddress" value="http://localhost:7050/PrintReportAPI/" />
 +
</appSettings>
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 4
 +
| Имя службы
 +
| Текстовое имя сервиса
 +
| <syntaxhighlight lang="xml" enclose="div">
 +
<appSettings>
 +
  <add key="serviceName" value="MegatecPrintReportAPI" />
 +
</appSettings>
 +
</syntaxhighlight>
 +
 
 +
|- style="vertical-align:text-top"
 +
| 5
 +
| Тип общей платформы
 +
| "MasterTour"
 +
| <syntaxhighlight lang="xml" enclose="div">
 +
<appSettings>
 +
  <add key="CommonType" value="MasterTour" />
 +
</appSettings>
 +
</syntaxhighlight>
 +
|}
 +
'''Пример:'''<br>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<loggerSection>
 +
  <Loggers path="Logs">
 +
    <Logger level="ALL" name="ReportLoger" console="false" />
 +
  </Loggers>
 +
</loggerSection>
 +
</syntaxhighlight>
 +
 
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<appSettings>
 +
  <add key="connectionString" value="Data Source=IP; Initial Catalog=DB;User Id=USER;Password=PWD;Application Name=PrintReportAPI" />
 +
  <add key="serviceAddress" value="http://localhost:7050/PrintReportAPI/" />
 +
  <add key="serviceName" value="MegatecPrintReportAPI" />
 +
  <add key="CommonType" value="MasterTour" />
 +
</appSettings>
 +
</syntaxhighlight>
 +
 
  
  
Строка 21: Строка 345:
 
Любая страница '''Личного кабинета''' содержит заголовок и меню для перехода на основные экраны.
 
Любая страница '''Личного кабинета''' содержит заголовок и меню для перехода на основные экраны.
 
В заголовке отображаются:
 
В заголовке отображаются:
* '''Контактные данные туроператора (телефон, email)''' предназначены для оперативной связи с отделом бронирования.
+
* '''Контактные данные туроператора (телефон, email)''' предназначены для оперативной связи с отделом бронирования.
* '''Курсы валют (список настраивается)''' отображают актуальные курсы, которые могут изменяться в зависимости от настроек.
+
* '''Курсы валют (список настраивается)''' отображают актуальные курсы, которые могут изменяться в зависимости от настроек.
* '''Логотип туроператора''' по умолчанию устанавливается логотип компании, но его можно заменить на пользовательский через настройки.
+
* '''Логотип туроператора''' по умолчанию устанавливается логотип компании, но его можно заменить на пользовательский через настройки.
* '''Ссылки на онлайн-бронирование''' позволяют агентам быстро перейти к оформлению новых заявок.
+
* '''Ссылки на онлайн–бронирование''' позволяют агентам быстро перейти к оформлению новых заявок.
* '''Название агентства, к которому привязан личный кабинет''' отображает текущее агентство, под учетной записью которого выполнен вход.
+
* '''Название агентства, к которому привязан личный кабинет''' отображает текущее агентство, под учетной записью которого выполнен вход.
* '''Ссылка на страницу оформления неформального заказа''' предоставляет возможность оставить заявку без строгого соответствия стандартным параметрам бронирования.
+
* '''Ссылка на страницу оформления неформального заказа(кнопка "оставить заявку")''' предоставляет возможность оставить заявку без строгого соответствия стандартным параметрам бронирования.
* '''Кнопка выхода из личного кабинета''' завершает сессию пользователя.
+
* '''Кнопка выхода из личного кабинета''' завершает сессию пользователя.
  
  
Строка 48: Строка 372:
 
Список заявок доступен авторизованным пользователям по умолчанию после входа в систему или при выборе соответствующего пункта меню.
 
Список заявок доступен авторизованным пользователям по умолчанию после входа в систему или при выборе соответствующего пункта меню.
  
[[Файл:Ag 252.png|x500px|Список заказов]]
+
[[Файл:Ag 290.png|x500px|Список заказов]]
  
 
;Основной сценарий
 
;Основной сценарий
Строка 82: Строка 406:
 
*Город (город проживания в туре, по отелю)
 
*Город (город проживания в туре, по отелю)
 
*Название тура
 
*Название тура
*Скидка (комиссия) в нац валюте - слово скидка, есть залогинен частник, комиссия - если агент
+
*Скидка (комиссия) в нац валюте слово скидка, есть залогинен частник, комиссия если агент
*Скидка (комиссия) в валюте тура - слово скидка, есть залогинен частник, комиссия - если агент
+
*Скидка (комиссия) в валюте тура слово скидка, есть залогинен частник, комиссия если агент
 
*Оплачено в нац валюте
 
*Оплачено в нац валюте
 
*Оплачено в валюте заявки
 
*Оплачено в валюте заявки
Строка 120: Строка 444:
  
 
После выбора заявки осуществляется переход на страницу с детальной информацией по заказу ([[OrderInfo]]).
 
После выбора заявки осуществляется переход на страницу с детальной информацией по заказу ([[OrderInfo]]).
 +
 +
== Информация по заказу (OrderInfo) ==
 +
 +
После выбора конкретной заявки из списка, пользователь попадает на страницу детальной информации по заказу. Данный экран позволяет просмотреть полную информацию о выбранной заявке, включая состав тура, данные туристов, расчеты, историю изменений и другую сопутствующую информацию.
 +
 +
[[Файл:Ag 291.png|x1500px|Страница информации по заказу]]
 +
 +
;Назначение
 +
Экран предназначен для:
 +
* Просмотра всех деталей заявки
 +
* Отслеживания истории изменений по заказу
 +
* Контроля финансовых расчётов
 +
* Проверки актуальности виз, оплаты и сроков
 +
 +
=== Структура страницы ===
 +
 +
Страница состоит из следующих информационных и функциональных блоков:
 +
* Заголовок и действия
 +
* Информация по заявке
 +
* Финансы
 +
* Услуги
 +
* Туристы
 +
* Чат
 +
* Документы
 +
* История изменений
 +
 +
==== Заголовок и действия ====
 +
[[Файл:Ag 292.png]]<br>
 +
Расположен в верхней части страницы и включает:
 +
* '''Название агентства''' – указывается текущее агентство, от имени которого пользователь вошёл.
 +
* '''Основное меню навигации''' – вкладки: ''Информация'', ''Заявки'', ''Бонусы'', ''Учётные данные'', ''Юридические документы''.
 +
* '''Номер заявки и даты поездки''' – номер заявки выделен синим, продолжительность тура прописывается в скобках.
 +
* '''Кнопки управления:'''
 +
** '''Оставить заявку''' – предоставляет возможность оставить заявку без строгого соответствия стандартным параметрам бронирования.
 +
** '''Запрос на аннуляцию''' – подача заявки на аннуляцию текущего заказа.
 +
** '''Отчёты''' – доступ к печатным и финансовым документам по заявке.
 +
* '''Контактные данные и текущий пользователь''' – отображаются телефон и email туроператора, курсы валют, имя пользователя, кнопка выхода.
 +
 +
 +
==== Информация по заявке ====
 +
[[Файл:Ag 293.png]]<br>
 +
 +
Находится в левом верхнем блоке. Содержит ключевые параметры заявки:
 +
* '''Статус''' – текущее состояние заявки.
 +
* '''Дата создания''' – с точным временем оформления.
 +
* '''Агентская комиссия''' – процент комиссии.
 +
* '''Страна''' – страна тура.
 +
* '''Название тура''' – отображается название тура.
 +
* '''Дата заезда и выезда''' – даты тура.
 +
 +
 +
 +
==== Финансы ====
 +
[[Файл:Ag 296.png]]<br>
 +
Находится в правом верхнем блоке и включает:
 +
* '''Стоимость тура''' – полная цена.
 +
* '''Комиссия*''' – отображается в процентах и сумме.
 +
* '''Курс валюты''' – при необходимости указывается курс расчёта.
 +
* '''Скидка клиенту''' – если применима.
 +
* '''Оплачено''' – сумма, уже внесённая клиентом.
 +
* '''Задолженность''' – остаток к оплате.
 +
* '''Дата предоплаты / сумма предоплаты''' – используются для планирования платежей.
 +
* '''Дата полной оплаты''' – крайний срок для внесения всех средств.
 +
 +
=====Подключение отчётных форм=====
 +
 +
======Общие положения======
 +
* Для отображения ссылки и печати отчёта в Личном кабинете необходимо добавить соответствующую запись в файле [[Мастер-Тур(15):Личный Кабинет (ЛК)#Настройки клиента Личного кабинета (AccountClient)|settings.json]] клиента ЛК. В массиве ''ORDER_REPORTS'' каждая запись соответствует одной печатной форме.
 +
* На текущий момент поддерживается подключение печатных форм '''типа 4001'''.
 +
* Каждый подключаемый отчёт печатается по '''GUID профиля'''. Для нестандартных профилей требуется уникальный GUID.
 +
 +
======Требования к профилю и GUID======
 +
* Профиль отчёта, предназначенный для печати в ЛК, должен иметь '''уникальный GUID'''.
 +
* GUID можно получить:
 +
  * из установочного файла профиля (файл вида ''Report4xxx.xml'', строка ''<GUID>…</GUID>''),
 +
  * либо запросом к БД:
 +
<syntaxhighlight lang="sql" enclose="div">
 +
SELECT *
 +
FROM Rep_Profiles
 +
WHERE RP_RepKey = 4001; -- номер отчёта
 +
</syntaxhighlight>
 +
* Если установлено несколько профилей одного отчёта, '''каждому''' присваивается свой GUID.
 +
 +
==== Услуги ====
 +
[[Файл:Ag 294.png]]<br>
 +
Блок со списком всех туристических услуг, входящих в заявку:
 +
* '''Дата''' – дата начала услуги.
 +
* '''День''' – день предоставления услуги.
 +
* '''Продолжительность''' – продолжительность услуги.
 +
* '''Услуга''' – подробное описание услуги (например, перелёты, отели, трансферы).
 +
* '''Человек''' – количество туристов, участвующих в услуге.
 +
* '''Статус''' – статус услуги.
 +
 +
Дополнительно:
 +
* Кнопка '''«Раскрыть колонки»''' позволяет настроить отображаемые поля таблицы.
 +
 +
 +
 +
==== Туристы ====
 +
[[Файл:Ag 284.png]]<br>
 +
Таблица с информацией по каждому туристу в заявке(символом [[Файл:Ag 285.png]] обозначается главный турист по заявке):
 +
* '''Пол''' – обозначение пола туриста.
 +
* '''Фамилия и имя''' – в латинской транслитерации, если применимо.
 +
* *'''Дата рождения'''
 +
* '''Паспорт''' – серия и номер паспорта
 +
* '''Виза''' – статус или информация о наличии визы (может быть пустым, если виза не требуется или ещё не оформлена).
 +
 +
 +
 +
==== Чат ====
 +
[[Файл:Ag 295.png]]<br>
 +
 +
Раздел для общения между агентом и туроператором:
 +
* Каждое сообщение сопровождается датой, временем и именем отправителя.
 +
* Новое сообщение вводится в текстовом поле снизу.
 +
* Для отправки используется кнопка со стрелкой.
 +
* Поддерживается вертикальный скролл в истории сообщений.
 +
 +
 +
 +
==== Документы ====
 +
[[Файл:Ag 287.png]]<br>
 +
Раздел предназначен для загрузки и просмотра файлов по заявке:
 +
* '''Список загруженных файлов''' – отображаются прикрепленные документы.
 +
* '''Категории''' – могут быть разбиты по типам.
 +
* '''Кнопка "Загрузка"''' – позволяет загрузить документы с окна информации о путевке.
 +
 +
 +
 +
==== История изменений ====
 +
[[Файл:Ag 297.png]]<br>
 +
Хронологический список изменений по заявке:
 +
* Каждая запись содержит '''дату''' и '''описание изменения''' (например, изменение данных туриста, паспорта и т. д.)
 +
* Изменения фиксируются автоматически при любом действии с данными заявки.
 +
 +
==== План рассадки ====
 +
 +
[[Файл:Ag 289.png]]<br>
 +
 +
Раздел отображает визуальную схему рассадки туристов, применимую, например, для трансферов, автобусов или ж/д переездов.
 +
 +
; Цветовая индикация
 +
* 🟩 '''Свободно''' – место доступно для бронирования
 +
* 🟥 '''Занято''' – место уже выбрано другим туристом
 +
* <span style="display:inline-block;width:1em;height:1em;background:#aaa;margin:0 0.3em 0 3px;"></span> '''Заблокировано''' — место нельзя выбрать (например, резерв, санитарная зона и т.п.)
 +
 +
 +
 +
 +
; Структура отображения
 +
* Схема рассадки разделена на зоны (например, "ЗОНА 1", "ЗОНА 2")
 +
* Каждое место имеет уникальный номер и может содержать символы:
 +
** ''П'' – проход
 +
** ''Л'', ''П'' – левая/правая сторона
 +
** ''*'', ''**'', ''&&'' – специальные метки, уточняющие особенности места (например, приоритетное, техническое, нестандартное)
 +
 +
; Поведение
 +
* Пользователь может просматривать занятость мест в реальном времени.
 +
* При нажатии может зафиксировать место за туристом.

Текущая версия на 19:51, 22 октября 2025

Статья находится на стадии разработки.

Версия статьи от 22-10-2025.


Введение

Личный кабинет — это веб-интерфейс, предназначенный для турагентств и их сотрудников, предоставляющий доступ к информации о заказах, финансовых операциях и другим важным данным. В нём реализованы функции управления бронированиями, взаимодействия с туроператором и контроля платежей.

Основные возможности личного кабинета:

  • Просмотр списка заказов с детальной информацией – позволяет агентам быстро получать сведения о бронированиях, статусах заявок, суммах оплат и задолженностях.
  • Фильтрация и сортировка заявок – помогает находить нужные заявки по заданным параметрам (номер заявки, фамилия туриста, даты поездки и т. д.).
  • Управление учётными данными агентства – включает редактирование контактной информации, реквизитов компании и управление учетными записями сотрудников.
  • Доступ к финансовой информации и отчетам – позволяет просматривать суммы оплат, задолженности и формировать отчёты для контроля финансовых операций.
  • Взаимодействие с туроператором через сообщения и уведомления – обеспечивает связь между агентством и туроператором, уведомляя о важных изменениях и позволяя вести переписку.

Настройки личного кабинета

Перед использованием Личного кабинета необходимо настроить файлы конфигурации для сервисов AccountClient, AccountService и PrintReportAPI

Настройки клиента Личного кабинета (AccountClient)

настройки, задаваемые в файле settings.json

Описание Значение Настройка
1 Базовый адрес сервиса URL сервиса (HTTP/HTTPS)
{
  "API_URL": "http://localhost:7000"
}
2 Перечень отчётов, доступных к печати Массив объектов; каждый элемент — один отчёт
{
  "ORDER_REPORTS": [ { /* элементы см. пп. 3–6 */ } ]
}
3 Идентификатор отчёта "series" — строковый код/номер отчёта
{ "series": "4001" }
4 Заголовок отчёта в интерфейсе Строка для отображения в меню «Отчёты»
{ "title": "Лист бронирования" }
5 Профиль отчёта "guid" — уникальный GUID используемого профиля
{ "guid": "E147D680-AF8C-414C-958F-E0F2C2E4E592" }

Пример:

{
  "API_URL": "http://localhost:7000",
  "ORDER_REPORTS": [
    {
      "series": "ARM",
      "title": "Отчёт агента",
      "guid": "57E0E9DB-8F20-4151-B0D4-40F1138D5E01"
    }
  ]
}

Примечание. Для каждого подключённого отчёта должен использоваться корректный GUID профиля, существующий в базе.

Настройки аккаунт сервиса (AccountService)

настройки, задаваемые в файле appsettings.json

Описание Значение Настройка
1 Ключ и TTL JWT-токена Секрет и время жизни (в минутах)
"Jwt": {
  "Key": "SecretKey10125779374235322",
  "TokenValidityInMinutes": 100
}
2 Тип используемой СУБД 1 — Microsoft SQL Server; 2 — PostgreSQL; … до 5; 6–9 — зарезервировано
"ConnectionParameters": { "databaseType": 1}
3 Адрес сервера БД Имя/адрес инстанса
"ConnectionParameters": { "server": "ip-адрес сервера базы данных ПК Мастер-Тур" }
4 Имя базы данных Название БД
"ConnectionParameters": { "database": "название базы данных ПК Мастер-Тур" }
5 Учётные данные БД Пользователь и пароль
"ConnectionParameters": {
  "user": "логин пользователя ПК Мастер-Тур",
  "password": "пароль пользователя ПК Мастер-Тур"
}
6 Имя приложения в коннекте Для трассировки в БД
"ConnectionParameters": { "appName": "MegatecAccountService" }
7 Логирование сервиса: включить консоль true/false
"Logger": { "EnableConsole": true, ... }
8 Путь к лог-файлам Папка ("" — отключено)
"Logger": { "FilePath": "" }
9 Ротация логов по размеру Максимальный размер (МБ) и число файлов
"Logger": {
  "MaxLogFileSize": 10,
  "MaxOldLogFilesCount": 30
}
10 Имя службы и адрес(а) прослушивания ServiceName и список URL
"Install": {
  "ServiceName": "MegatecAccountService",
  "ServiceAddress": [ "http://*:7000" ]
}
11 IP-интерфейс привязки IPv6Any / конкретный IP
"Install": { "IPAddress": "IPAddress.IPv6Any" }
12 Адрес удалённого сервиса печати отчетов Базовый URL PrintReportAPI
"RemoteServices": {
  "ReportServiceUrl": "http://localhost:7050/PrintReportAPI/"
}
13 Разрешённые хосты "*" — без ограничений
"AllowedHosts": "*"

Пример:

{
  "Jwt": {
    "Key": "SecretKey10125779374235322",
    //"Issuer": "https://localhost:44341",
    //"Audience": "https://localhost:44341",
    "TokenValidityInMinutes": 100
  },
  "ConnectionParameters": {
    // Database types:
    //      "Micrisoft_SQLServer" = 1 
    //      "PostgreSQL" = 2
    //       ... to 5
    // For databases not supported with EF Core reserved numbers from 6 to 9
    "databaseType": 1,
    "server": "ip-адрес сервера базы данных ПК Мастер-Тур",
    "database": "название базы данных ПК Мастер-Тур",
    "user": "логин пользователя ПК Мастер-Тур",
    "password": "пароль пользователя ПК Мастер-Тур",
    "appName": "MegatecAccountService"
  },
  "Logger": {
    "EnableConsole": true,
    "FilePath": "",
    "MaxLogFileSize": 10, // МБ
    "MaxOldLogFilesCount": 30
  },
  "Install": {
    "ServiceName": "MegatecAccountService",
    "ServiceAddress": [ "http://localhost:7000" ],
    "IPAddress": "IPAddress.IPv6Any"
  },
    "RemoteServices": {
    "ReportServiceUrl": "http://localhost:7050/PrintReportAPI/"
  },
  "AllowedHosts": "*"
}

Настройки сервиса печати отчетов (PrintReportAPI)

Служба печати генерирует файл отчёта по переданному идентификатору и профилю.

Описание Значение Настройка
1 Параметры логирования Путь к логам, уровень, вывод в консоль
<loggerSection>
  <Loggers path="Logs">
    <Logger level="ALL" name="ReportLoger" console="false" />
  </Loggers>
</loggerSection>
2 Строка подключения к БД Data Source, Initial Catalog, User Id, Password, Application Name
<appSettings>
  <add key="connectionString"
       value="Data Source=ip-адрес сервера;
Initial Catalog=название базы;
User Id=логин пользователя;Password=пароль;
Application Name=PrintReportAPI" />
</appSettings>
3 Базовый адрес сервиса URL PrintReportAPI
<appSettings>
  <add key="serviceAddress" value="http://localhost:7050/PrintReportAPI/" />
</appSettings>
4 Имя службы Текстовое имя сервиса
<appSettings>
  <add key="serviceName" value="MegatecPrintReportAPI" />
</appSettings>
5 Тип общей платформы "MasterTour"
<appSettings>
  <add key="CommonType" value="MasterTour" />
</appSettings>

Пример:

<loggerSection>
  <Loggers path="Logs">
    <Logger level="ALL" name="ReportLoger" console="false" />
  </Loggers>
</loggerSection>
<appSettings>
  <add key="connectionString" value="Data Source=IP; Initial Catalog=DB;User Id=USER;Password=PWD;Application Name=PrintReportAPI" />
  <add key="serviceAddress" value="http://localhost:7050/PrintReportAPI/" />
  <add key="serviceName" value="MegatecPrintReportAPI" />
  <add key="CommonType" value="MasterTour" />
</appSettings>



Заголовок и общие элементы страницы «Личный кабинет»

Любая страница Личного кабинета содержит заголовок и меню для перехода на основные экраны. В заголовке отображаются:

  • Контактные данные туроператора (телефон, email) – предназначены для оперативной связи с отделом бронирования.
  • Курсы валют (список настраивается) – отображают актуальные курсы, которые могут изменяться в зависимости от настроек.
  • Логотип туроператора – по умолчанию устанавливается логотип компании, но его можно заменить на пользовательский через настройки.
  • Ссылки на онлайн–бронирование – позволяют агентам быстро перейти к оформлению новых заявок.
  • Название агентства, к которому привязан личный кабинет – отображает текущее агентство, под учетной записью которого выполнен вход.
  • Ссылка на страницу оформления неформального заказа(кнопка "оставить заявку") – предоставляет возможность оставить заявку без строгого соответствия стандартным параметрам бронирования.
  • Кнопка выхода из личного кабинета – завершает сессию пользователя.


После авторизации пользователь попадает на основную страницу Личного кабинета, с которой может перейти к другим разделам через меню.

Заголовок и общие элементы страницы «Личный кабинет»


Основное меню
  • Информация
  • Заявки
  • Бонусы
  • Учётные данные
  • Юридические документы

После выбора раздела открывается соответствующий экран.

Заявки

Список заявок доступен авторизованным пользователям по умолчанию после входа в систему или при выборе соответствующего пункта меню.

Список заказов

Основной сценарий

Пользователь заходит в личный кабинет. Отображается список заказов с учётом прав доступа. По умолчанию заявки отсортированы по дате оформления (новые сверху), сортировка регулируется стрелками в заголовках таблицы.

Настройки отображения
  • Количество строк на странице (по умолчанию 20)
    • Элемент управления: раскрывающееся меню в правом нижнем углу списка заказов.
    • Пользователь может выбрать количество отображаемых строк: 20, 50 или 100.
    • Выбранное значение сохраняется в cookies браузера и применяется при следующем входе.
    • Возможные ошибки: при сбое cookies настройки могут сбрасываться.

Настройка количества строк на странице


  • Возможность настройки видимых столбцов
    • Элемент управления: кнопка «Настройки» в правом верхнем углу таблицы списка заказов.
    • При нажатии открывается всплывающее окно со списком всех доступных колонок.
    • Для включения/отключения колонки используются чекбоксы.
    • Выбранные настройки сохраняются в cookies.

Выбор видимых столбцов

По умолчанию отображаются:

  • Номер заявки
  • Страна (страна проведения тура)
  • Дата заезда
  • Главный турист по заявке
  • Статус заявки
  • Стоимость
  • Долг в валюте заявки

Дополнительные столбцы (по настройке)

  • Город (город проживания в туре, по отелю)
  • Название тура
  • Скидка (комиссия) в нац валюте – слово скидка, есть залогинен частник, комиссия – если агент
  • Скидка (комиссия) в валюте тура – слово скидка, есть залогинен частник, комиссия – если агент
  • Оплачено в нац валюте
  • Оплачено в валюте заявки
  • Долг в нац валюте
  • Полная стоимость в нац валюте
  • Полная стоимость в валюте
  • Полная стоимость в нац валюте за вычетом комиссии
  • Полная стоимость в валюте заявки за вычетом комиссии
  • Менеджер
  • Статус визы
  • Дата окончания тура
  • Предоплата до
  • Полная оплата до
  • Число туристов
  • Менеджер
  • Дата оформления


Фильтры поиска

Фильтры поиска в списке заказов

Фильтрация заявок осуществляется по следующим параметрам:

  • Номер заявки
  • Фамилия туриста
  • Статус визы
  • Страна тура
  • Даты тура (с, по)
  • Дата оформления заявки
  • Наличие визы
  • Наличие задолженности
  • Срок полной оплаты

Дополнительные условия

  • Любые изменения фильтров сохраняются для пользователя.
  • Фильтры «С наличием визы» и «Задолженность» запоминаются между сеансами.

После выбора заявки осуществляется переход на страницу с детальной информацией по заказу (OrderInfo).

Информация по заказу (OrderInfo)

После выбора конкретной заявки из списка, пользователь попадает на страницу детальной информации по заказу. Данный экран позволяет просмотреть полную информацию о выбранной заявке, включая состав тура, данные туристов, расчеты, историю изменений и другую сопутствующую информацию.

Страница информации по заказу

Назначение

Экран предназначен для:

  • Просмотра всех деталей заявки
  • Отслеживания истории изменений по заказу
  • Контроля финансовых расчётов
  • Проверки актуальности виз, оплаты и сроков

Структура страницы

Страница состоит из следующих информационных и функциональных блоков:

  • Заголовок и действия
  • Информация по заявке
  • Финансы
  • Услуги
  • Туристы
  • Чат
  • Документы
  • История изменений

Заголовок и действия

Ag 292.png
Расположен в верхней части страницы и включает:

  • Название агентства – указывается текущее агентство, от имени которого пользователь вошёл.
  • Основное меню навигации – вкладки: Информация, Заявки, Бонусы, Учётные данные, Юридические документы.
  • Номер заявки и даты поездки – номер заявки выделен синим, продолжительность тура прописывается в скобках.
  • Кнопки управления:
    • Оставить заявку – предоставляет возможность оставить заявку без строгого соответствия стандартным параметрам бронирования.
    • Запрос на аннуляцию – подача заявки на аннуляцию текущего заказа.
    • Отчёты – доступ к печатным и финансовым документам по заявке.
  • Контактные данные и текущий пользователь – отображаются телефон и email туроператора, курсы валют, имя пользователя, кнопка выхода.


Информация по заявке

Ag 293.png

Находится в левом верхнем блоке. Содержит ключевые параметры заявки:

  • Статус – текущее состояние заявки.
  • Дата создания – с точным временем оформления.
  • Агентская комиссия – процент комиссии.
  • Страна – страна тура.
  • Название тура – отображается название тура.
  • Дата заезда и выезда – даты тура.


Финансы

Ag 296.png
Находится в правом верхнем блоке и включает:

  • Стоимость тура – полная цена.
  • Комиссия* – отображается в процентах и сумме.
  • Курс валюты – при необходимости указывается курс расчёта.
  • Скидка клиенту – если применима.
  • Оплачено – сумма, уже внесённая клиентом.
  • Задолженность – остаток к оплате.
  • Дата предоплаты / сумма предоплаты – используются для планирования платежей.
  • Дата полной оплаты – крайний срок для внесения всех средств.
Подключение отчётных форм
Общие положения
  • Для отображения ссылки и печати отчёта в Личном кабинете необходимо добавить соответствующую запись в файле settings.json клиента ЛК. В массиве ORDER_REPORTS каждая запись соответствует одной печатной форме.
  • На текущий момент поддерживается подключение печатных форм типа 4001.
  • Каждый подключаемый отчёт печатается по GUID профиля. Для нестандартных профилей требуется уникальный GUID.
Требования к профилю и GUID
  • Профиль отчёта, предназначенный для печати в ЛК, должен иметь уникальный GUID.
  • GUID можно получить:
 * из установочного файла профиля (файл вида Report4xxx.xml, строка <GUID>…</GUID>),
 * либо запросом к БД:
SELECT * 
FROM Rep_Profiles 
WHERE RP_RepKey = 4001; -- номер отчёта
  • Если установлено несколько профилей одного отчёта, каждому присваивается свой GUID.

Услуги

Ag 294.png
Блок со списком всех туристических услуг, входящих в заявку:

  • Дата – дата начала услуги.
  • День – день предоставления услуги.
  • Продолжительность – продолжительность услуги.
  • Услуга – подробное описание услуги (например, перелёты, отели, трансферы).
  • Человек – количество туристов, участвующих в услуге.
  • Статус – статус услуги.

Дополнительно:

  • Кнопка «Раскрыть колонки» позволяет настроить отображаемые поля таблицы.


Туристы

Ag 284.png
Таблица с информацией по каждому туристу в заявке(символом Ag 285.png обозначается главный турист по заявке):

  • Пол – обозначение пола туриста.
  • Фамилия и имя – в латинской транслитерации, если применимо.
  • *Дата рождения
  • Паспорт – серия и номер паспорта
  • Виза – статус или информация о наличии визы (может быть пустым, если виза не требуется или ещё не оформлена).


Чат

Ag 295.png

Раздел для общения между агентом и туроператором:

  • Каждое сообщение сопровождается датой, временем и именем отправителя.
  • Новое сообщение вводится в текстовом поле снизу.
  • Для отправки используется кнопка со стрелкой.
  • Поддерживается вертикальный скролл в истории сообщений.


Документы

Ag 287.png
Раздел предназначен для загрузки и просмотра файлов по заявке:

  • Список загруженных файлов – отображаются прикрепленные документы.
  • Категории – могут быть разбиты по типам.
  • Кнопка "Загрузка" – позволяет загрузить документы с окна информации о путевке.


История изменений

Ag 297.png
Хронологический список изменений по заявке:

  • Каждая запись содержит дату и описание изменения (например, изменение данных туриста, паспорта и т. д.)
  • Изменения фиксируются автоматически при любом действии с данными заявки.

План рассадки

Ag 289.png

Раздел отображает визуальную схему рассадки туристов, применимую, например, для трансферов, автобусов или ж/д переездов.

Цветовая индикация
  • 🟩 Свободно – место доступно для бронирования
  • 🟥 Занято – место уже выбрано другим туристом
  • Заблокировано — место нельзя выбрать (например, резерв, санитарная зона и т.п.)



Структура отображения
  • Схема рассадки разделена на зоны (например, "ЗОНА 1", "ЗОНА 2")
  • Каждое место имеет уникальный номер и может содержать символы:
    • П – проход
    • Л, П – левая/правая сторона
    • *, **, && – специальные метки, уточняющие особенности места (например, приоритетное, техническое, нестандартное)
Поведение
  • Пользователь может просматривать занятость мест в реальном времени.
  • При нажатии может зафиксировать место за туристом.