This commit is contained in:
Kirill
2026-05-24 12:03:21 +05:00
parent d0d7eab77e
commit ff2271ecb1
5 changed files with 101 additions and 35 deletions
+93 -25
View File
@@ -13,7 +13,7 @@
## Файловая структура изменений ## Файловая структура изменений
| Файл | Что делаем | | Файл | Что делаем |
|---|---| | ---------------------------------------------------------- | ------------------------------------------------------------------------------- |
| `client/src/shared/config/index.ts` | Добавляем `STORE_OP_NAME`, `STORE_OP_INN`, `STORE_OP_OGRN`, `STORE_OP_ADDR` | | `client/src/shared/config/index.ts` | Добавляем `STORE_OP_NAME`, `STORE_OP_INN`, `STORE_OP_OGRN`, `STORE_OP_ADDR` |
| `client/src/pages/privacy-policy/ui/PrivacyPolicyPage.tsx` | Импорт из config, правка пунктов 2, 3, 5, 6, 7, добавляем дату | | `client/src/pages/privacy-policy/ui/PrivacyPolicyPage.tsx` | Импорт из config, правка пунктов 2, 3, 5, 6, 7, добавляем дату |
| `client/src/pages/terms/ui/TermsPage.tsx` | Импорт из config, правка пунктов 1, 3, 7, 8, 9, убираем противоречие 6.1 vs 2.2 | | `client/src/pages/terms/ui/TermsPage.tsx` | Импорт из config, правка пунктов 1, 3, 7, 8, 9, убираем противоречие 6.1 vs 2.2 |
@@ -23,6 +23,7 @@
### Task 1: Вынести данные оператора в shared/config ### Task 1: Вынести данные оператора в shared/config
**Files:** **Files:**
- Modify: `client/src/shared/config/index.ts` - Modify: `client/src/shared/config/index.ts`
- [ ] **Step 1: Добавить константы оператора в shared/config** - [ ] **Step 1: Добавить константы оператора в shared/config**
@@ -30,10 +31,11 @@
Вставить после строки 17 (перед `export const VK_URL`): Вставить после строки 17 (перед `export const VK_URL`):
```ts ```ts
export const STORE_OP_NAME = 'Индивидуальный предприниматель Новоселова Наталия Владимировна' export const STORE_OP_NAME =
export const STORE_OP_INN = '402900832341' "Индивидуальный предприниматель Новоселова Наталия Владимировна";
export const STORE_OP_OGRN = '305402922700051' export const STORE_OP_INN = "402900832341";
export const STORE_OP_ADDR = '248000, Россия, г. Калуга, ул. Никитина, д. 12А' export const STORE_OP_OGRN = "305402922700051";
export const STORE_OP_ADDR = "248000, Россия, г. Калуга, ул. Никитина, д. 12А";
``` ```
- [ ] **Step 2: Проверить синтаксис** - [ ] **Step 2: Проверить синтаксис**
@@ -41,6 +43,7 @@ export const STORE_OP_ADDR = '248000, Россия, г. Калуга, ул. Ни
```bash ```bash
cd client && npx tsc -b --noEmit cd client && npx tsc -b --noEmit
``` ```
Expected: no errors. Expected: no errors.
--- ---
@@ -48,6 +51,7 @@ Expected: no errors.
### Task 2: Исправить Политику конфиденциальности ### Task 2: Исправить Политику конфиденциальности
**Files:** **Files:**
- Modify: `client/src/pages/privacy-policy/ui/PrivacyPolicyPage.tsx` - Modify: `client/src/pages/privacy-policy/ui/PrivacyPolicyPage.tsx`
- [ ] **Step 1: Заменить импорт и локальные константы** - [ ] **Step 1: Заменить импорт и локальные константы**
@@ -55,21 +59,33 @@ Expected: no errors.
Заменить строки 4-10 (импорт STORE_EMAIL + локальные константы). Заменить строки 4-10 (импорт STORE_EMAIL + локальные константы).
Было: Было:
```ts
import { STORE_EMAIL } from '@/shared/config'
const OP_NAME = 'Индивидуальный предприниматель Новоселова Наталия Владимировна' ```ts
const OP_INN = '402900832341' import { STORE_EMAIL } from "@/shared/config";
const OP_OGRN = '305402922700051'
const OP_ADDR = '248000, Россия, г. Калуга, ул. Никитина, д. 12А' const OP_NAME =
const SITE_URL = window.location.origin "Индивидуальный предприниматель Новоселова Наталия Владимировна";
const OP_INN = "402900832341";
const OP_OGRN = "305402922700051";
const OP_ADDR = "248000, Россия, г. Калуга, ул. Никитина, д. 12А";
const SITE_URL = window.location.origin;
``` ```
Стало: Стало:
```ts
import { STORE_EMAIL, STORE_OP_NAME, STORE_OP_INN, STORE_OP_OGRN, STORE_OP_ADDR, STORE_PUBLIC_SITE_URL } from '@/shared/config'
const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? window.location.origin : '') ```ts
import {
STORE_EMAIL,
STORE_OP_NAME,
STORE_OP_INN,
STORE_OP_OGRN,
STORE_OP_ADDR,
STORE_PUBLIC_SITE_URL,
} from "@/shared/config";
const SITE_URL =
STORE_PUBLIC_SITE_URL ||
(typeof window !== "undefined" ? window.location.origin : "");
``` ```
И заменить `OP_NAME``STORE_OP_NAME`, `OP_INN``STORE_OP_INN`, `OP_OGRN``STORE_OP_OGRN`, `OP_ADDR``STORE_OP_ADDR` во всём файле (replaceAll). И заменить `OP_NAME``STORE_OP_NAME`, `OP_INN``STORE_OP_INN`, `OP_OGRN``STORE_OP_OGRN`, `OP_ADDR``STORE_OP_ADDR` во всём файле (replaceAll).
@@ -79,6 +95,7 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo
Заменить `items` в секции 2. Заменить `items` в секции 2.
Было: Было:
```ts ```ts
items: [ items: [
'2.1. Оператор обрабатывает следующие персональные данные Пользователей:', '2.1. Оператор обрабатывает следующие персональные данные Пользователей:',
@@ -92,6 +109,7 @@ items: [
``` ```
Стало: Стало:
```ts ```ts
items: [ items: [
'2.1. Оператор обрабатывает следующие персональные данные Пользователей:', '2.1. Оператор обрабатывает следующие персональные данные Пользователей:',
@@ -106,6 +124,7 @@ items: [
- [ ] **Step 3: Исправить раздел 3 — убрать несуществующую персонализацию** - [ ] **Step 3: Исправить раздел 3 — убрать несуществующую персонализацию**
Было: Было:
```ts ```ts
items: [ items: [
'3.1. Оператор обрабатывает персональные данные в следующих целях:', '3.1. Оператор обрабатывает персональные данные в следующих целях:',
@@ -118,6 +137,7 @@ items: [
``` ```
Стало: Стало:
```ts ```ts
items: [ items: [
'3.1. Оператор обрабатывает персональные данные в следующих целях:', '3.1. Оператор обрабатывает персональные данные в следующих целях:',
@@ -131,6 +151,7 @@ items: [
- [ ] **Step 4: Исправить раздел 5 — убрать неавтоматизированную обработку и нереалистичный срок** - [ ] **Step 4: Исправить раздел 5 — убрать неавтоматизированную обработку и нереалистичный срок**
Было: Было:
```ts ```ts
items: [ items: [
'5.1. Обработка осуществляется путём сбора, записи, систематизации, накопления, хранения, уточнения, извлечения, использования, передачи, обезличивания, блокирования, удаления и уничтожения персональных данных.', '5.1. Обработка осуществляется путём сбора, записи, систематизации, накопления, хранения, уточнения, извлечения, использования, передачи, обезличивания, блокирования, удаления и уничтожения персональных данных.',
@@ -140,6 +161,7 @@ items: [
``` ```
Стало: Стало:
```ts ```ts
items: [ items: [
'5.1. Обработка осуществляется путём сбора, записи, систематизации, накопления, хранения, уточнения, извлечения, использования, передачи, блокирования, удаления и уничтожения персональных данных.', '5.1. Обработка осуществляется путём сбора, записи, систематизации, накопления, хранения, уточнения, извлечения, использования, передачи, блокирования, удаления и уничтожения персональных данных.',
@@ -151,6 +173,7 @@ items: [
- [ ] **Step 5: Исправить раздел 6 — Яндекс.Метрика → ЮKassa** - [ ] **Step 5: Исправить раздел 6 — Яндекс.Метрика → ЮKassa**
Было: Было:
```ts ```ts
items: [ items: [
'6.1. Оператор может передать персональные данные третьим лицам в следующих случаях:', '6.1. Оператор может передать персональные данные третьим лицам в следующих случаях:',
@@ -161,6 +184,7 @@ items: [
``` ```
Стало: Стало:
```ts ```ts
items: [ items: [
'6.1. Оператор может передать персональные данные третьим лицам в следующих случаях:', '6.1. Оператор может передать персональные данные третьим лицам в следующих случаях:',
@@ -173,10 +197,13 @@ items: [
- [ ] **Step 6: Добавить дату обновления** - [ ] **Step 6: Добавить дату обновления**
Заменить текст подзаголовка (строка 99): Заменить текст подзаголовка (строка 99):
``` ```
Политика в отношении обработки персональных данных. Политика в отношении обработки персональных данных.
``` ```
на: на:
``` ```
Последнее обновление: 23 мая 2026 г. Последнее обновление: 23 мая 2026 г.
``` ```
@@ -186,6 +213,7 @@ items: [
```bash ```bash
cd client && npm run lint cd client && npm run lint
``` ```
Expected: 0 новых ошибок. Expected: 0 новых ошибок.
--- ---
@@ -193,6 +221,7 @@ Expected: 0 новых ошибок.
### Task 3: Исправить Пользовательское соглашение ### Task 3: Исправить Пользовательское соглашение
**Files:** **Files:**
- Modify: `client/src/pages/terms/ui/TermsPage.tsx` - Modify: `client/src/pages/terms/ui/TermsPage.tsx`
- [ ] **Step 1: Заменить локальные константы на импорт из config** - [ ] **Step 1: Заменить локальные константы на импорт из config**
@@ -200,22 +229,41 @@ Expected: 0 новых ошибок.
Заменить строки 4-11. Заменить строки 4-11.
Было: Было:
```ts ```ts
import { STORE_EMAIL, STORE_PHONE, STORE_PUBLIC_SITE_URL } from '@/shared/config' import {
STORE_EMAIL,
STORE_PHONE,
STORE_PUBLIC_SITE_URL,
} from "@/shared/config";
const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? window.location.origin : '') const SITE_URL =
STORE_PUBLIC_SITE_URL ||
(typeof window !== "undefined" ? window.location.origin : "");
const OP_NAME = 'Индивидуальный предприниматель Новоселова Наталия Владимировна' const OP_NAME =
const OP_INN = '402900832341' "Индивидуальный предприниматель Новоселова Наталия Владимировна";
const OP_OGRN = '305402922700051' const OP_INN = "402900832341";
const OP_ADDR = '248000, Россия, г. Калуга, ул. Никитина, д. 12А' const OP_OGRN = "305402922700051";
const OP_ADDR = "248000, Россия, г. Калуга, ул. Никитина, д. 12А";
``` ```
Стало: Стало:
```ts
import { STORE_EMAIL, STORE_PHONE, STORE_PUBLIC_SITE_URL, STORE_OP_NAME, STORE_OP_INN, STORE_OP_OGRN, STORE_OP_ADDR } from '@/shared/config'
const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? window.location.origin : '') ```ts
import {
STORE_EMAIL,
STORE_PHONE,
STORE_PUBLIC_SITE_URL,
STORE_OP_NAME,
STORE_OP_INN,
STORE_OP_OGRN,
STORE_OP_ADDR,
} from "@/shared/config";
const SITE_URL =
STORE_PUBLIC_SITE_URL ||
(typeof window !== "undefined" ? window.location.origin : "");
``` ```
Заменить `OP_NAME``STORE_OP_NAME`, `OP_INN``STORE_OP_INN`, `OP_OGRN``STORE_OP_OGRN`, `OP_ADDR``STORE_OP_ADDR` во всём файле (replaceAll). Заменить `OP_NAME``STORE_OP_NAME`, `OP_INN``STORE_OP_INN`, `OP_OGRN``STORE_OP_OGRN`, `OP_ADDR``STORE_OP_ADDR` во всём файле (replaceAll).
@@ -223,10 +271,13 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo
- [ ] **Step 2: Дополнить раздел 1 — упомянуть OAuth и вход по коду** - [ ] **Step 2: Дополнить раздел 1 — упомянуть OAuth и вход по коду**
В секции 1, в определении «Аутентификационные данные». Найти: В секции 1, в определении «Аутентификационные данные». Найти:
``` ```
'— Аутентификационные данные Пользователя — адрес электронной почты Пользователя и пароль (код доступа), которые в совокупности признаются простой электронной подписью Пользователя.', '— Аутентификационные данные Пользователя — адрес электронной почты Пользователя и пароль (код доступа), которые в совокупности признаются простой электронной подписью Пользователя.',
``` ```
Заменить на: Заменить на:
``` ```
'— Аутентификационные данные Пользователя — адрес электронной почты и пароль (код доступа), либо данные, полученные через сервисы авторизации третьих лиц (VK ID, Яндекс ID), либо одноразовый код, направляемый на электронную почту. Совокупность аутентификационных данных признаётся простой электронной подписью Пользователя.', '— Аутентификационные данные Пользователя — адрес электронной почты и пароль (код доступа), либо данные, полученные через сервисы авторизации третьих лиц (VK ID, Яндекс ID), либо одноразовый код, направляемый на электронную почту. Совокупность аутентификационных данных признаётся простой электронной подписью Пользователя.',
``` ```
@@ -234,10 +285,13 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo
- [ ] **Step 3: Убрать «рекламные» сообщения из п. 3.7** - [ ] **Step 3: Убрать «рекламные» сообщения из п. 3.7**
Найти: Найти:
``` ```
'3.7. При регистрации Пользователь даёт согласие на получение информационных и рекламных сообщений от Администратора на указанный адрес электронной почты.', '3.7. При регистрации Пользователь даёт согласие на получение информационных и рекламных сообщений от Администратора на указанный адрес электронной почты.',
``` ```
Заменить на: Заменить на:
``` ```
'3.7. При регистрации Пользователь даёт согласие на получение транзакционных уведомлений (статус заказа, сообщения в чате заказа, статус оплаты) на указанный адрес электронной почты.', '3.7. При регистрации Пользователь даёт согласие на получение транзакционных уведомлений (статус заказа, сообщения в чате заказа, статус оплаты) на указанный адрес электронной почты.',
``` ```
@@ -245,10 +299,13 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo
- [ ] **Step 4: Исправить противоречие 6.1 vs 2.2 («гарантирует» vs «as is»)** - [ ] **Step 4: Исправить противоречие 6.1 vs 2.2 («гарантирует» vs «as is»)**
Найти в секции 6: Найти в секции 6:
``` ```
'6.1. Администратор гарантирует достоверность и полноту только той информации, которую он разместил на Сайте самостоятельно.', '6.1. Администратор гарантирует достоверность и полноту только той информации, которую он разместил на Сайте самостоятельно.',
``` ```
Заменить на: Заменить на:
``` ```
'6.1. Администратор прилагает разумные усилия для обеспечения достоверности и полноты информации, размещённой на Сайте, однако не даёт явных гарантий точности такой информации.', '6.1. Администратор прилагает разумные усилия для обеспечения достоверности и полноты информации, размещённой на Сайте, однако не даёт явных гарантий точности такой информации.',
``` ```
@@ -258,6 +315,7 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo
Заменить всю секцию 7. Заменить всю секцию 7.
Было: Было:
```ts ```ts
{ {
title: '7. Доступ к ресурсам третьих лиц', title: '7. Доступ к ресурсам третьих лиц',
@@ -270,11 +328,12 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo
``` ```
Стало: Стало:
```ts ```ts
{ {
title: '7. Доступ к ресурсам третьих лиц', title: '7. Доступ к ресурсам третьих лиц',
items: [ items: [
'7.1. Для обеспечения функциональности Сайта используются сервисы третьих лиц: платёжный сервис ЮKassa (для обработки онлайн-платежей), картографический сервис OpenStreetMap/Nominatim (для выбора адреса доставки).', '7.1. Для обеспечения функциональности Сайта используются сервисы третьих лиц: платёжный сервис ЮKassa (для обработки онлайн-платежей).
'7.2. Владельцы указанных ресурсов имеют собственную политику конфиденциальности и самостоятельно определяют условия обработки получаемой информации.', '7.2. Владельцы указанных ресурсов имеют собственную политику конфиденциальности и самостоятельно определяют условия обработки получаемой информации.',
'7.3. При переходе на сторонние ресурсы Пользователи самостоятельно определяют пределы использования своей информации согласно правилам соответствующих ресурсов.', '7.3. При переходе на сторонние ресурсы Пользователи самостоятельно определяют пределы использования своей информации согласно правилам соответствующих ресурсов.',
], ],
@@ -286,6 +345,7 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo
Заменить всю секцию 8. Заменить всю секцию 8.
Было: Было:
```ts ```ts
{ {
title: '8. Информация, хранящаяся на стороне браузера', title: '8. Информация, хранящаяся на стороне браузера',
@@ -302,6 +362,7 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo
``` ```
Стало: Стало:
```ts ```ts
{ {
title: '8. Информация, хранящаяся на стороне браузера', title: '8. Информация, хранящаяся на стороне браузера',
@@ -318,12 +379,14 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo
Заменить строки 9.3 и 9.4 в секции 9. Заменить строки 9.3 и 9.4 в секции 9.
Было: Было:
```ts ```ts
'9.3. Администратор обрабатывает следующие персональные данные: Ф. И. О., адрес электронной почты, номер телефона, IP-адрес, тип браузера, данные о действиях на Сайте.', '9.3. Администратор обрабатывает следующие персональные данные: Ф. И. О., адрес электронной почты, номер телефона, IP-адрес, тип браузера, данные о действиях на Сайте.',
'9.4. Цели обработки персональных данных: обеспечение функционирования Сайта, оказание информационной поддержки, предоставление персонализированных сервисов, направление информационных сообщений.', '9.4. Цели обработки персональных данных: обеспечение функционирования Сайта, оказание информационной поддержки, предоставление персонализированных сервисов, направление информационных сообщений.',
``` ```
Стало: Стало:
```ts ```ts
'9.3. Администратор обрабатывает следующие персональные данные: адрес электронной почты, имя (при добровольном указании), номер телефона (при оформлении доставки), адрес доставки.', '9.3. Администратор обрабатывает следующие персональные данные: адрес электронной почты, имя (при добровольном указании), номер телефона (при оформлении доставки), адрес доставки.',
'9.4. Цели обработки персональных данных: обеспечение функционирования Сайта, аутентификация Пользователя, оформление и доставка заказов, направление транзакционных уведомлений.', '9.4. Цели обработки персональных данных: обеспечение функционирования Сайта, аутентификация Пользователя, оформление и доставка заказов, направление транзакционных уведомлений.',
@@ -334,6 +397,7 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo
```bash ```bash
cd client && npm run lint cd client && npm run lint
``` ```
Expected: 0 новых ошибок. Expected: 0 новых ошибок.
--- ---
@@ -347,6 +411,7 @@ Expected: 0 новых ошибок.
```bash ```bash
cd client && npx tsc -b --noEmit cd client && npx tsc -b --noEmit
``` ```
Expected: no errors. Expected: no errors.
- [ ] **Step 2: Lint** - [ ] **Step 2: Lint**
@@ -354,6 +419,7 @@ Expected: no errors.
```bash ```bash
cd client && npm run lint cd client && npm run lint
``` ```
Expected: 0 errors (warnings OK). Expected: 0 errors (warnings OK).
- [ ] **Step 3: Сборка** - [ ] **Step 3: Сборка**
@@ -361,6 +427,7 @@ Expected: 0 errors (warnings OK).
```bash ```bash
cd client && npm run build cd client && npm run build
``` ```
Expected: успешная сборка. Expected: успешная сборка.
- [ ] **Step 4: Format check** - [ ] **Step 4: Format check**
@@ -368,4 +435,5 @@ Expected: успешная сборка.
```bash ```bash
cd client && npm run format:check cd client && npm run format:check
``` ```
Expected: все файлы отформатированы (или отформатировать через `npm run format`). Expected: все файлы отформатированы (или отформатировать через `npm run format`).
@@ -30,8 +30,7 @@ const sections = [
'2.1. Оператор обрабатывает следующие персональные данные Пользователей:', '2.1. Оператор обрабатывает следующие персональные данные Пользователей:',
'— адрес электронной почты;', '— адрес электронной почты;',
'— имя (отображаемое имя, может быть указано Пользователем добровольно);', '— имя (отображаемое имя, может быть указано Пользователем добровольно);',
'— номер телефона (указывается Пользователем добровольно при оформлении доставки);', '— ФИО получателя, номер телефона и адрес доставки (указывается Пользователем добровольно при оформлении доставки);',
'— адрес доставки и геолокационные координаты (указываются Пользователем при оформлении заказа);',
'— сессионные cookie-файлы (исключительно для поддержания входа в Личный кабинет).', '— сессионные cookie-файлы (исключительно для поддержания входа в Личный кабинет).',
], ],
}, },
+1 -1
View File
@@ -101,7 +101,7 @@ const sections = [
{ {
title: '7. Доступ к ресурсам третьих лиц', title: '7. Доступ к ресурсам третьих лиц',
items: [ items: [
'7.1. Для обеспечения функциональности Сайта используются сервисы третьих лиц: платёжный сервис ЮKassa (для обработки онлайн-платежей), картографический сервис OpenStreetMap/Nominatim (для выбора адреса доставки).', '7.1. Для обеспечения функциональности Сайта используются сервисы третьих лиц: платёжный сервис ЮKassa (для обработки онлайн-платежей)',
'7.2. Владельцы указанных ресурсов имеют собственную политику конфиденциальности и самостоятельно определяют условия обработки получаемой информации.', '7.2. Владельцы указанных ресурсов имеют собственную политику конфиденциальности и самостоятельно определяют условия обработки получаемой информации.',
'7.3. При переходе на сторонние ресурсы Пользователи самостоятельно определяют пределы использования своей информации согласно правилам соответствующих ресурсов.', '7.3. При переходе на сторонние ресурсы Пользователи самостоятельно определяют пределы использования своей информации согласно правилам соответствующих ресурсов.',
], ],
+2 -3
View File
@@ -19,8 +19,7 @@ export const VK_URL = import.meta.env.VITE_VK_URL ?? 'https://vk.com/club1583958
/** Данные оператора для юридических документов. */ /** Данные оператора для юридических документов. */
export const STORE_OP_NAME = 'Комарова Лариса Николаевна' export const STORE_OP_NAME = 'Комарова Лариса Николаевна'
export const STORE_OP_TYPE = 'самозанятый' export const STORE_OP_TYPE = 'Самозанятый'
/** Тестовый ИНН — заменить на реальный. */ export const STORE_OP_INN = '591878584346'
export const STORE_OP_INN = '402900832341'
export const STORE_OP_ADDR = export const STORE_OP_ADDR =
'618909, Россия, Пермский край, Лысьвенский муниципальный округ, Лысьва, улица Мира, 34, кв. 24' '618909, Россия, Пермский край, Лысьвенский муниципальный округ, Лысьва, улица Мира, 34, кв. 24'
Binary file not shown.