1
0

4 Коммитууд 455f4d97c3 ... 7611bcf9f1

Эзэн SHA1 Мессеж Огноо
  Вадим Королёв 7611bcf9f1 Добавлен регламент резервного копирования 1 сар өмнө
  Вадим Королёв ef43981f64 Добавлено описание сообщений администратору 1 сар өмнө
  Вадим Королёв bc80a12473 Добавлено руководство пользователя и администратора 1 сар өмнө
  Вадим Королёв a9fd9fa388 Исправлены рамки и подписи рисунков 1 сар өмнө

+ 577 - 32
Пояснительная записка.odt

@@ -97,9 +97,9 @@
 1.6 Похожие проекты и их сравнение
 
 В ходе изучения предметной области были проанализрованы похожие
-решения, выявлены достоинства и недостатки (таблица 1).
+решения, выявлены достоинства и недостатки (таблица 1.1).
 
-Таблица 1 — Описание похожих проектов
+Таблица 1.1 — Описание похожих проектов
 
 Проект
 
@@ -123,13 +123,14 @@ Google Photos [2],
 автоматической компоновки результата.
 
 2 Проектирование информационной системы
+---------------------------------------
 
 При проектировании системы были выделены два типа
 пользователей: студенты и администраторы, а так же
 определены функции, которые каждый из типов может использовать.
-Описание функций приведено в use-case диаграмме (рис. 1).
+Описание функций приведено в use-case диаграмме (рис. 2.1).
 
-[-- Image: Image1 --]Рисунок 1 — use-case диаграмма системы
+[-- Image: Image1 --]Рисунок 2.1 — use-case диаграмма системы
 
 При проектировании также была разработана диаграмма,
 отображающая основной бизнес процесс проекта.
@@ -154,7 +155,7 @@ Google Photos [2],
 
 - Исполнение в браузере.
 
-Таблица 2 — Параметры среды разработки
+Таблица 2.1 — Параметры среды разработки
 
 Параметр
 
@@ -188,22 +189,22 @@ Google Photos [2],
 1 Подойти к устройству, на котором развёрнут интерфейс;
 
 Пользователю будут представлены краткие инструкции по работе с
-системой и кнопка «Начать» (рис. 2). Кнопка «Нажать» проверит,
-подключено ли внешнее хранилище, и, в случае если хранилище не
-подключено, выдаст ошибку с соответствующим сообщением (рис.
-3). Проверка выполняется с помощью отправки HTTP запроса на
-API, работающее на том же устройстве, что и общий интерфейс.
-API собирает все устройства, подключенные к системе, имеющие
-тип «disk», а так же имеющие атрибут «removable» с помощью
-библиотеки pyudev и функции list_devices [6]. Затем,
-выполняется поиск всех разделов на этом устройстве,
+системой и кнопка «Начать» (рис. 3.1). Кнопка «Нажать»
+проверит, подключено ли внешнее хранилище, и, в случае
+если хранилище не подключено, выдаст ошибку с соответствующим
+сообщением (рис. 3). Проверка выполняется с помощью отправки
+HTTP запроса на API, работающее на том же устройстве, что и
+общий интерфейс. API собирает все устройства, подключенные
+к системе, имеющие тип «disk», а так же имеющие атрибут
+«removable» с помощью библиотеки pyudev и функции list_devices
+[6]. Затем, выполняется поиск всех разделов на этом устройстве,
 вычисляется точка монтирования. Если какой-либо шаг в этой
 последовательности был провален, система выдаёт ошибку
-подключения хранилища.
+подключения хранилища (рис. 3.2).
 
-[-- Image: Image4 --]Рисунок 2 — Начальная страница системы
+[-- Image: Image4 --]Рисунок 3.1 — Начальная страница системы
 
-[-- Image: Image5 --]Рисунок 3 — Ошибка, сообщающая о том, что
+[-- Image: Image5 --]Рисунок 3.2 — Ошибка, сообщающая о том, что
 необходимо подключить внешнее хранилище
 
 2 Подключить внешнее хранилище;
@@ -212,9 +213,10 @@ API 
 
 Система кодирует данные фотографии в base64, передаёт по сети в
 подсистему распознавания, где данные декодируются и загружаются
-в память.
+в память. На странице отображён видеопоток для предпросмотра
+фотографии (рис. 3.3).
 
-[-- Image: Image9 --]Рисунок 4 — Страница снятия фотографии
+[-- Image: Image9 --]Рисунок 3.3 — Страница снятия фотографии
 
 4 Ждать процесса распознавания;
 
@@ -222,7 +224,7 @@ API 
 из 1000 фотографий. Но, в случае если ожидание окажется
 слишком долгим, интерфейс системы будет отображать экран
 загрузки с одним случайно выбранным интересным фактом о
-техникуме (рис. 5).
+техникуме (рис. 3.4).
 
 Процесс распознавания заключается в расшифровке изображения,
 закодированного на предыдущем шаге. Изображение сохраняется
@@ -230,7 +232,7 @@ API 
 face_recognition. После этого, библиотека ищет лица на
 фотографии. Если найдено больше или меньше одного
 лица, возвращается ошибка, в интерфейсе открывается экран с
-описанием ошибки (рис. 6). Экран позволяет
+описанием ошибки (рис. 3.5). Экран позволяет
 перефотографироваться или вернуться на
 главный экран.
 
@@ -247,34 +249,35 @@ face_recognition. 
 было запечатлено, возвращаются в интерфейс для отображения
 и/или сохранения.
 
-[-- Image: Image6 --]Рисунок 5 — Экран ожидания результатов
+[-- Image: Image6 --]Рисунок 3.4 — Экран ожидания результатов
 
-[-- Image: Image7 --]Рисунок 6 — Экран с описанием ошибки
+[-- Image: Image7 --]Рисунок 3.5 — Экран с описанием ошибки
 
 5 Просмотреть результат сборки фотографий;
 
 На этом экране система отображает количество фотографий,
 которое было найдено, а так же выборку из результата в
-размере не более 6 фотографий (рис. 7). На экране расположены
-две кнопки: «На главную» и «Сохранить результат».
+размере не более 6 фотографий (рис. 3.6). На экране
+расположены две кнопки: «На главную» и «Сохранить
+результат».
 
-[-- Image: Image8 --]Рисунок 7 — Экран просмотра результата
+[-- Image: Image8 --]Рисунок 3.6 — Экран просмотра результата
 
 6 Сохранить результат работы системы.
 
 Перед сохранением пользователю выдаётся предупреждение с
-информацией о сохранении файла (рис. 8). Имя файла
+информацией о сохранении файла (рис. 3.7). Имя файла
 генерируется динамически.
 
-[-- Image: Image10 --]Рисунок 8 — Предупреждение о сохранении
+[-- Image: Image10 --]Рисунок 3.7 — Предупреждение о сохранении
 фотографий
 
 После подтверждения сохранения, система передаёт ID фотографий,
 которые нужно сохранить, формирует zip-архив, который
 скачивается и сохраняется на внешнем хранилище (рис.
-9).
+3.8).
 
-[-- Image: Image11 --]Рисунок 9 — Пример сохранения на внешнем
+[-- Image: Image11 --]Рисунок 3.8 — Пример сохранения на внешнем
 носителе
 
 4 Анализ разработанной информационной системы, выявление
@@ -323,6 +326,108 @@ face_recognition. 
 5 Разработка методики внедрения и сопровождения информационной
 системы
 
+После разработки программного продукта, были разработаны
+руководство пользователя (приложение Г) и руководство
+администратора (приложение Д).
+
+Руководство пользователя описывает порядок работы с системой, а
+так же описания ошибок, которые выдаются системой и шаги для их
+исправления.
+
+Руководство администратора описывает каким образом система
+работает, как её запускать, заполнять данными, а так же
+описания ошибок и шаги по исправлению.
+
+5.1 Программа резервного копирования и восстановления
+
+Плaн рeзeрвнoгo кoпирoвaния инфoрмaциoннoй cиcтeмы:
+
+5.1.1 Oбщиe пoлoжeния:
+
+5.1.1.1 Нacтoящий рeглaмeнт прoвeдeния рeзeрвнoгo кoпирoвaния
+(вoccтaнoвлeния) прoгрaмм и дaнных, хрaнящихcя нa
+aвтoмaтизирoвaнных рaбoчих мecтaх и ceрвeрaх
+рaзрaбoтaн c цeлью:
+
+5.1.1.1.1 Oпрeдeлeния пoрядкa рeзeрвирoвaния дaнных для
+пocлeдующeгo вoccтaнoвлeния рaбoтocпocoбнocти
+инфoрмaциoннoй cиcтeмы пeрcoнaльных дaнных oргaнизaции
+при пoлнoй или чacтичнoй пoтeрe инфoрмaции, вызвaннoй cбoями
+или oткaзaми aппaрaтнoгo или прoгрaммнoгo oбecпeчeния,
+oшибкaми пoльзoвaтeлeй;
+
+5.1.1.1.2 Oпрeдeлeния пoрядкa вoccтaнoвлeния инфoрмaции в cлучae
+вoзникнoвeния тaкoй нeoбхoдимocти;
+
+5.1.1.1.3 Упoрядoчeния рaбoты дoлжнocтных лиц, cвязaннoй c
+рeзeрвным кoпирoвaниeм и вoccтaнoвлeниeм инфoрмaции.
+
+5.1.1.2 В нacтoящeм дoкумeнтe рeглaмeнтируютcя дeйcтвия при
+выпoлнeнии cлeдующих мeрoприятий:
+
+5.1.1.2.1 Рeзeрвнoe кoпирoвaниe;
+
+5.1.1.2.2 Кoнтрoль рeзeрвнoгo кoпирoвaния;
+
+5.1.1.2.3 Хрaнeниe рeзeрвных кoпий;
+
+5.1.1.2.4 Пoлнoe или чacтичнoe вoccтaнoвлeниe дaнных и
+прилoжeний.
+
+5.1.1.3 Рeзeрвнoму кoпирoвaнию пoдлeжит инфoрмaция cлeдующих
+ocнoвных кaтeгoрий:
+
+5.1.1.3.1 Данные распознавания лиц на фотографиях;
+
+5.1.1.3.2 Связи данных лиц с фотографиями.
+
+5.1.2 Пoрядoк рeзeрвнoгo кoпирoвaния
+
+5.1.2.1 Cиcтeмa рeзeрвнoгo кoпирoвaния дoлжнa oбecпeчивaть
+прoизвoдитeльнocть, дocтaтoчную для coхрaнeния инфoрмaции,
+в уcтaнoвлeнныe cрoки и c зaдaннoй пeриoдичнocтью. Рeзeрвнoe
+кoпирoвaниe дoлжнo прoизвoдитьcя кaждый дeнь, рoвнo в 00:00
+пo Мocкoвcкoму врeмeни.
+
+5.1.3 Кoнтрoль рeзультaтoв рeзeрвнoгo кoпирoвaния
+
+5.1.3.1 Кoнтрoль рeзультaтoв вceх прoцeдур рeзeрвнoгo
+кoпирoвaния ocущecтвляeтcя cиcтeмным aдминиcтрaтoрoм.
+
+5.1.3.2 Нa прoтяжeнии пeриoдa врeмeни, кoгдa cиcтeмa рeзeрвнoгo
+кoпирoвaния нaхoдитcя в aвaрийнoм cocтoянии, дoлжнo
+ocущecтвлятьcя eжeднeвнoe кoпирoвaниe инфoрмaции,
+пoдлeжaщeй рeзeрвирoвaнию, c иcпoльзoвaниeм cрeдcтв
+фaйлoвых cиcтeм.
+
+5.1.4 Вoccтaнoвлeниe инфoрмaции из рeзeрвнoй кoпии
+
+5.1.4.1 В cлучae нeoбхoдимocти, вoccтaнoвлeниe дaнных из
+рeзeрвных кoпий прoизвoдитcя caмocтoятeльнo. Дeлaeтcя этo
+cлeдующим oбрaзoм: определить используемый файл базы данных
+.sqlite3, затем заменить файл резервной копией.
+
+Перечень резервируемой информации:
+
+- Копируемый ресурс: данные информационной системы;
+
+- Метод копирования: бэкап данных с помощью средств планировщика
+ОС;
+
+- Тип копирования: полное копирование;
+
+- Тип носителя: внешнее файловое хранилище;
+
+- Периодичность смены носителя: согласно технической
+документации установленного заводом изготовителем,
+либо после диагностики диска;
+
+- Раписания копирования: раз в неделю;
+
+- Срок хранения: 3 месяца;
+
+- Первичность проверки резервных копий: раз в месяц.
+
 Список использованных источников
 ================================
 
@@ -404,7 +509,7 @@ text
 
 Путь к фотографии в медиатеке.
 
--
+UNIQUE
 
 Таблица В.2 — Словарь данных сущности Student
 
@@ -459,10 +564,450 @@ FOREIGN KEY
 
 student_id
 
-Int
+int
 
 Ссылается на студента, которому, как считает система,
 принадлежит данное лицо.
 
 FOREIGN KEY
 
+приложение г
+============
+
+(обязательное)
+
+ИНФОРМАЦИОННАЯ СИСТЕМА «ЛИЦО УСПЕХА»
+
+МОДУЛЬ «ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ»
+
+РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
+
+ВЕРСИЯ 1.0
+
+2025
+
+1 Введение
+==========
+
+1.1 Область применения
+
+Областью применения Модуля является взаимодействие пользователя
+с системой.
+
+1.2 Краткое описание возможностей
+
+Информационная система «Лицо успеха» предназначена для
+обработки медиатеки техникума, поиска и идентификации
+лиц, найденных на фотографиях.
+
+В Модуле реализованы следующие возможности:
+
+Снятие фотографии пользователя;
+
+Автоматический поиск подключенных устройств внешнего хранения;
+
+Сохранение результата работы системы на внешнее хранилище.
+
+1.3 Уровень подготовки пользователя
+
+Пользователь должен иметь базовые навыки работы с компьютером.
+
+1.4 Перечень эксплуатационной документации, с которой необходимо
+ознакомиться пользователю
+
+Настоящее Руководство.
+
+2 Назначение и условия применения
+=================================
+
+Модуль «Интерфейс пользователя» в составе системы «Лицо успеха»
+предназначен для предоставления возможности пользователю
+взаимодействовать с системой. В модуле реализована
+возможность снятия фотографии и сохранения результата
+работы системы.
+
+Работа с Модулем доступна всем пользователям. Работа с Модулем
+доступна всегда, когда есть необходимость в получении или
+подаче информации.
+
+3 Подготовка к работе
+=====================
+
+Для работы с системой «Лицо успеха» необходимо следующее
+аппаратное обеспечение:
+
+• Внешнее хранилище данных, подключаемое по USB.
+
+4 Описание операций
+===================
+
+4.1 Выполняемые функции и задачи
+
+Модуль «Интерфейс пользователя» в составе системы «Лицо успеха»
+выполняет задачи, приведённые в таблице ниже:
+
+Таблица Г.1 — Описание функций и задач
+
+Задачи
+
+Описание
+
+Снятие фотографии
+
+Пользователю предоставляется возможность снять фотографию
+своего лица, с живым предпросмотром.
+
+Просмотр результата работы системы
+
+Пользователю предоставляется возможность просмотреть результат
+работы системы. Отображается до 6 фотографий.
+
+Сохранение результата работы системы
+
+Пользователю предоставляется возможность сохранить результат
+работы системы на внешнее хранилище. Хранилище должно быть
+подключено перед началом работы системы.
+
+4.2 Описание операций технологического процесса обработки
+данных, необходимых для выполнения задач
+
+Ниже приведено описание пользовательских операций для
+выполнения каждой из задач.
+
+Задача: «Снятие фотографии»
+
+Действия для выполнения:
+
+1 Нажать на кнопку «Начать»;
+
+2 Оставить своё лицо в кадре;
+
+3 Нажать на кнопку «Сфотографироваться»;
+
+Задача: «Просмотр результата работы системы»
+
+Действия для выполнения:
+
+1 Сфотографироваться;
+
+2 Подождать от 2 до 10 секунд;
+
+3 Просмотреть результат.
+
+Задача «Сохранение результата работы системы»
+
+Действия для выполнения:
+
+1 Подключить внешнее хранилище;
+
+2 Сфотографироваться;
+
+3 Нажать на кнопку «Сохранить»;
+
+4 Подтвердить местоположение файла;
+
+5 Отключить внешнее хранилище.
+
+5 Аварийные ситуации
+====================
+
+В случае возникновения ошибок при работе системы «Лицо успеха»,
+не описанных ниже в данном разделе, необходимо обращаться к
+сотруднику подразделения технической поддержки, либо к
+ответственному Администратору системы «Лицо успеха».
+
+Таблица Г.2 — Описание аварийных ситуаций
+
+Ошибка
+
+Описание ошибки
+
+Требуемые действия пользователя при возникновении ошибки
+
+USB хранилище не подключено
+
+Пользователь пытается начать работу с системой, не подключив
+внешнее хранилище данных.
+
+Подключить в терминал внешнее хранилище данных (флешка, ssd
+накопитель)
+
+На фотографии не обнаружено ни одного лица
+
+Системе не удалось распознать ни одного лица на сделанной
+фотографии.
+
+Принять другую позу лица, снять любые предметы одежды,
+закрывающие лицо.
+
+На фотографии обнаружено больше одного лица
+
+Система распознала на фотографии больше одного лица.
+
+Оставьте в кадре только одно лицо.
+
+Нет связанных с тобой фотографий
+
+Система распознала пользователя, но не нашла ни одной
+фотографии, на котором запечатлено его лицо.
+
+-
+
+приложение д
+============
+
+(обязательное)
+
+ИНФОРМАЦИОННАЯ СИСТЕМА «ЛИЦО УСПЕХА»
+
+МОДУЛЬ «НЕЙРОДВИЖОК»
+
+РУКОВОДСТВО АДМИНИСТРАТОРА
+
+ВЕРСИЯ 1.0
+
+2025
+
+Аннотация
+
+Документ представляет руководство по сбору и обработке
+фотографий в медиатеке техникума с использованием
+системы распознавания лиц. Описаны основные возможности
+системы, такие как идентификация людей, ведение базы данных
+и развертывание HTTP API. Уровень подготовки пользователей
+требует базовых навыков работы с компьютером.
+
+В разделе «Подготовка системы» указаны требования к
+программному обеспечению и шаги по настройке,
+включая сбор ресурсов интерфейса, настройку SSL, загрузку
+фотографий и запуск нейродвижка. Раздел "Аварийные ситуации"
+содержит информацию о возможных ошибках и рекомендации по их
+устранению. Документ служит справочным материалом для
+пользователей и администраторов системы.
+
+1 Введение
+==========
+
+Область применения: сбор фотографий медиатеки техникума.
+
+Краткое описание возможностей:
+
+Распознавание лиц на фотографиях;
+
+Идентификация людей на снимках, формирование выборки фотографий
+по снимку пользователя;
+
+Ведение базы данных;
+
+Развертывание HTTP API для взаимодействия с системой.
+
+Уровень подготовки пользователей: от пользователей требуются
+базовые знания работы с компьютером.
+
+Перечень эксплуатационной информации:
+
+uvicorn (https://www.uvicorn.org/)
+
+веб-сервер для развертывания интерфейса пользователя — apache
+(https://apache.org/)
+
+установка ssl сертификата для apache
+(https://losst.pro/ustanovka-ssl-sertifikata-apache-ot-lets-encrypt)
+
+2 Подготовка системы к работе
+=============================
+
+Система была протестирована, работает корректно в следующем
+окружении (таблица Д.1).
+
+Таблица Д.1 — Версии компонентов
+
+Компонент
+
+Версия
+
+Операционная система
+
+Ubuntu Linux, ядро 6.8.0-60-generic
+
+Разрядность процессора
+
+x64
+
+Веб-сервер
+
+Apache 2.4.58
+
+Версия python
+
+3.12.3
+
+Версия npm
+
+9.2.0
+
+Пакеты ОС
+
+build-essential python3-venv libopenblas-dev liblapack-dev
+net-tools
+
+Веб-браузер
+
+Firefox 137.0.2
+
+Версии пакетов python и node.js приведены репозиториях проекта
+и находятся по пути src/face-api/requirements.txt и
+src/web/package-lock.json соответственно.
+
+Для запуска системы, требуется выполнить следующие действия:
+
+1 Собрать все ресурсы пользовательского интерфейса в пакет с
+помощью команды npm run build, выгрузить пакет на
+веб-сервер. Пакет представляет собой папку (обычно
+создаётся под названием dist после выполнения команды).
+
+2 Так как интерфейс системы запускается как сайт, то подключение
+должно быть защищено, так как некоторые возможности системы
+недоступны без безопасного контекста исполнения. Для
+создания защищённого соединения, потребуется настройка
+apache для работы с SSL сертификатами.
+
+3 Загрузить фотографии в систему. За загрузку отвечает скрипт по
+пути src/face-api/scan-dir.py. Скрипт принимает как аргументы
+путь к базе данных (sqlite файл) и путь к папке, в которой
+хранятся фотографии. Скрипт рекурсивно собирает фотографии,
+распознаёт лица и загружает данные в систему.
+
+4 Запустить нейродвижок. Команда для запуска нейродвижка должна
+быть похоже на что-то подобное:
+
+uvicorn api:app --host 0.0.0.0 --port 8000 --ssl-keyfile <ПУТЬ К
+ФАЙЛУ .key> --ssl-certfile <ПУТЬ К ФАЙЛУ .pem>
+
+5 Запустить файловое API на клиенте. Файловое API требуется для
+сохранения результата работы системы. Скрипт запуска
+расположен по пути src/file-api/start.sh.
+
+Для проверки работы системы, необходимо открыть адрес, на
+котором развёрнут веб-сервер. Для проверки подключения
+внешнего хранилища, нужно нажать на кнопку «Начать». Если
+хранилище подключено, система покажет страницу снятия
+фотографии. Если система выдаёт результат слишком долго
+(больше 10 сек.), вероятнее всего, возникла проблема при
+запуске нейродвижка.
+
+3 Авариные ситуации
+
+В процессе эксплуатации системы, может произойти несколько
+видов аварийных ситуаций. Описания и шаги к исправлению
+описаны в таблице Д.2.
+
+Таблица Д.2 — Описание аварийных ситуаций
+
+Описание ошибки
+
+Шаги к исправлению
+
+При запросе проверки подключения USB хранилища, консоль
+браузера выдаёт сетевую ошибку.
+
+1 Проверить статус работы файлового API;
+
+2 Проверить адрес файлого API, указанный в коде интерфейса
+пользователя. Исправить, если отличается от текущего.
+
+При запросе к API нейродвижка, консоль браузера выдаёт сетевую
+ошибку.
+
+1 Проверить статус работы API нейродвижка;
+
+2 Проверить адрес API нейродвижка, исправить если отличается от
+текущего;
+
+3 Убедиться, что API работает по протоколу HTTPS. Если нет, то
+настроить сертификаты HTTP веб-сервера, передать их при
+запуске в API.
+
+Предпросмотр снимка лица не включается.
+
+1 Проверить наличие и подключение USB-камеры;
+
+2 Убедиться, что интерфейс браузера открыт в безопасном
+контексте (localhost или через протокол HTTPS).
+
+Порт уже занят (при запуске любого API)
+
+1 Определить процесс, использующий занятый порт;
+
+2 Если процесс критичный, запустить API на другом порту, иначе
+завершить блокирующий процесс.
+
+3 Аварийные ситуации
+
+В процессе запуска или эскплуатации системы, может быть выдано
+множество сообщений об ошибках. В таблице Д.2 приведены
+описания сообщений и рекомендуемые действия при их
+получении.
+
+Таблица Д.2 — Описание сообщений
+
+Компонент системы
+
+Сообщение
+
+Рекомендуемые действия
+
+scan-dir.py
+
+Файл настроек по указанному пути не найден
+
+Убедиться что по указанному пути файл настроек существует
+
+Ключ настроек не найден
+
+В файле настроек отсутствует требуемый ключ
+
+Файл настроек содержит неверный JSON
+
+Исправить форматирование файла настроек
+
+Не удалось открыть файл базы данных
+
+Убедиться что путь к базе данных существует и есть права на его
+запись и чтение
+
+Каталог не найден
+
+Убедиться что путь к папке с фотографиями действительно
+существует
+
+Не обнаружено новых изображений
+
+- (не обработано ни одной отографии потому что новых изображений
+не найдено)
+
+api.py
+
+Started server process
+
+- (api успешно запущено)
+
+Finished server process
+
+- (api успешно выключено)
+
+Интерфейс пользователя
+
+На фотографии не обнаружено ни одного лица
+
+Попробовать сфотографироваться, убрав с лица закрывающие его
+предметы
+
+На фотографии обнаружено больше одного лица
+
+Оставить в кадре только одно лицо
+
+Нет связанных с тобой фотографий
+
+- (фотографий не найдено)
+