feat(privacy): страница политики конфиденциальности на /privacy
This commit is contained in:
@@ -10,6 +10,7 @@ import { HealthCheckModule } from './health-check/health-check.module';
|
|||||||
import { ChartsModule } from './charts/charts.module';
|
import { ChartsModule } from './charts/charts.module';
|
||||||
import { AppVersionModule } from './app-version/app-version.module';
|
import { AppVersionModule } from './app-version/app-version.module';
|
||||||
import { ShazamModule } from './shazam/shazam.module';
|
import { ShazamModule } from './shazam/shazam.module';
|
||||||
|
import { PrivacyModule } from './privacy/privacy.module';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -24,6 +25,7 @@ import { ShazamModule } from './shazam/shazam.module';
|
|||||||
ChartsModule,
|
ChartsModule,
|
||||||
AppVersionModule,
|
AppVersionModule,
|
||||||
ShazamModule,
|
ShazamModule,
|
||||||
|
PrivacyModule,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class AppModule {}
|
export class AppModule {}
|
||||||
|
|||||||
88
src/privacy/privacy.controller.ts
Normal file
88
src/privacy/privacy.controller.ts
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
import { Controller, Get, Header } from '@nestjs/common';
|
||||||
|
|
||||||
|
// Статическая страница политики конфиденциальности (для карточки RuStore).
|
||||||
|
// HTML хранится константой — без внешних файлов, чтобы не зависеть от копирования
|
||||||
|
// ассетов в Docker-образ.
|
||||||
|
const PRIVACY_HTML = `<!doctype html>
|
||||||
|
<html lang="ru">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<title>Политика конфиденциальности radiOLA</title>
|
||||||
|
<style>
|
||||||
|
body{font:16px/1.6 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;max-width:760px;margin:40px auto;padding:0 18px;color:#1a1a1a;background:#fff}
|
||||||
|
h1{font-size:1.6rem;margin-bottom:.2rem}
|
||||||
|
h2{font-size:1.15rem;margin-top:2rem}
|
||||||
|
.date{color:#666;margin-top:0}
|
||||||
|
ul{padding-left:1.2rem}
|
||||||
|
a{color:#2b7a2b}
|
||||||
|
footer{margin-top:3rem;color:#888;font-size:.9rem}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Политика конфиденциальности приложения radiOLA</h1>
|
||||||
|
<p class="date">Дата вступления в силу: 8 июня 2026 г.</p>
|
||||||
|
|
||||||
|
<p>Настоящая Политика описывает, какие данные обрабатывает мобильное приложение
|
||||||
|
radiOLA («Приложение»), с какой целью и как вы можете ими управлять. Используя
|
||||||
|
Приложение, вы соглашаетесь с условиями настоящей Политики.</p>
|
||||||
|
|
||||||
|
<h2>1. Какие данные мы обрабатываем</h2>
|
||||||
|
<ul>
|
||||||
|
<li><b>Адрес электронной почты</b> — только если вы добровольно входите в аккаунт.
|
||||||
|
Вход не обязателен и нужен лишь для синхронизации избранного и истории между
|
||||||
|
устройствами. Авторизация выполняется по одноразовой ссылке (magic-link); пароль
|
||||||
|
мы не храним.</li>
|
||||||
|
<li><b>История прослушиваний и распознанных треков</b> — сохраняется локально на
|
||||||
|
вашем устройстве. При входе в аккаунт история станций также сохраняется на сервере
|
||||||
|
для синхронизации.</li>
|
||||||
|
<li><b>Технические данные об ошибках</b> — при сбоях Приложение может отправлять
|
||||||
|
обезличенный отчёт об ошибке (тип устройства, версия приложения, стек вызовов) в
|
||||||
|
нашу систему мониторинга для исправления проблем.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Приложение <b>не</b> собирает ваши контакты, геолокацию, СМС и не отслеживает вас
|
||||||
|
в других приложениях.</p>
|
||||||
|
|
||||||
|
<h2>2. Сторонние сервисы</h2>
|
||||||
|
<ul>
|
||||||
|
<li><b>shazam-api.com</b> — при нажатии кнопки «Распознать трек» короткий фрагмент
|
||||||
|
аудио текущего радиопотока передаётся сервису распознавания музыки для определения
|
||||||
|
исполнителя и названия. Фрагмент не содержит ваших персональных данных.</li>
|
||||||
|
<li><b>Discogs</b> — для получения обложек и сведений о треках мы передаём название
|
||||||
|
и исполнителя композиции.</li>
|
||||||
|
<li><b>Радиостанции третьих лиц</b> — воспроизведение ведётся напрямую с серверов
|
||||||
|
вещателей; на их потоки распространяются их собственные условия.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>3. Цели обработки</h2>
|
||||||
|
<p>Данные обрабатываются исключительно для работы функций Приложения: воспроизведение
|
||||||
|
радио, синхронизация избранного и истории, распознавание треков, отображение обложек и
|
||||||
|
исправление технических ошибок. Мы не продаём и не передаём ваши данные третьим лицам
|
||||||
|
в рекламных целях.</p>
|
||||||
|
|
||||||
|
<h2>4. Хранение и удаление</h2>
|
||||||
|
<p>Локальные данные (история, настройки) хранятся на вашем устройстве и удаляются при
|
||||||
|
удалении Приложения или очистке его данных. Данные аккаунта на сервере хранятся, пока
|
||||||
|
существует аккаунт. Вы можете запросить удаление аккаунта и связанных данных, написав
|
||||||
|
нам (см. контакты ниже).</p>
|
||||||
|
|
||||||
|
<h2>5. Изменения политики</h2>
|
||||||
|
<p>Мы можем обновлять настоящую Политику. Актуальная версия всегда доступна по этому
|
||||||
|
адресу.</p>
|
||||||
|
|
||||||
|
<h2>6. Контакты</h2>
|
||||||
|
<p>По вопросам обработки персональных данных и для запроса на их удаление:
|
||||||
|
<a href="mailto:blinnafeg@gmail.com">blinnafeg@gmail.com</a>.</p>
|
||||||
|
|
||||||
|
<footer>radiOLA — интернет-радио. © 2026</footer>
|
||||||
|
</body>
|
||||||
|
</html>`;
|
||||||
|
|
||||||
|
@Controller()
|
||||||
|
export class PrivacyController {
|
||||||
|
@Get('privacy')
|
||||||
|
@Header('Content-Type', 'text/html; charset=utf-8')
|
||||||
|
getPrivacy(): string {
|
||||||
|
return PRIVACY_HTML;
|
||||||
|
}
|
||||||
|
}
|
||||||
5
src/privacy/privacy.module.ts
Normal file
5
src/privacy/privacy.module.ts
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import { Module } from '@nestjs/common';
|
||||||
|
import { PrivacyController } from './privacy.controller';
|
||||||
|
|
||||||
|
@Module({ controllers: [PrivacyController] })
|
||||||
|
export class PrivacyModule {}
|
||||||
Reference in New Issue
Block a user