diff --git a/.opencode/plans/2026-05-23-legal-docs-fix.md b/.opencode/plans/2026-05-23-legal-docs-fix.md index e682a5f..0b6cdfa 100644 --- a/.opencode/plans/2026-05-23-legal-docs-fix.md +++ b/.opencode/plans/2026-05-23-legal-docs-fix.md @@ -12,17 +12,18 @@ ## Файловая структура изменений -| Файл | Что делаем | -|---|---| -| `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/terms/ui/TermsPage.tsx` | Импорт из config, правка пунктов 1, 3, 7, 8, 9, убираем противоречие 6.1 vs 2.2 | +| Файл | Что делаем | +| ---------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `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/terms/ui/TermsPage.tsx` | Импорт из config, правка пунктов 1, 3, 7, 8, 9, убираем противоречие 6.1 vs 2.2 | --- ### Task 1: Вынести данные оператора в shared/config **Files:** + - Modify: `client/src/shared/config/index.ts` - [ ] **Step 1: Добавить константы оператора в shared/config** @@ -30,10 +31,11 @@ Вставить после строки 17 (перед `export const VK_URL`): ```ts -export const STORE_OP_NAME = 'Индивидуальный предприниматель Новоселова Наталия Владимировна' -export const STORE_OP_INN = '402900832341' -export const STORE_OP_OGRN = '305402922700051' -export const STORE_OP_ADDR = '248000, Россия, г. Калуга, ул. Никитина, д. 12А' +export const STORE_OP_NAME = + "Индивидуальный предприниматель Новоселова Наталия Владимировна"; +export const STORE_OP_INN = "402900832341"; +export const STORE_OP_OGRN = "305402922700051"; +export const STORE_OP_ADDR = "248000, Россия, г. Калуга, ул. Никитина, д. 12А"; ``` - [ ] **Step 2: Проверить синтаксис** @@ -41,6 +43,7 @@ export const STORE_OP_ADDR = '248000, Россия, г. Калуга, ул. Ни ```bash cd client && npx tsc -b --noEmit ``` + Expected: no errors. --- @@ -48,6 +51,7 @@ Expected: no errors. ### Task 2: Исправить Политику конфиденциальности **Files:** + - Modify: `client/src/pages/privacy-policy/ui/PrivacyPolicyPage.tsx` - [ ] **Step 1: Заменить импорт и локальные константы** @@ -55,21 +59,33 @@ Expected: no errors. Заменить строки 4-10 (импорт STORE_EMAIL + локальные константы). Было: -```ts -import { STORE_EMAIL } from '@/shared/config' -const OP_NAME = 'Индивидуальный предприниматель Новоселова Наталия Владимировна' -const OP_INN = '402900832341' -const OP_OGRN = '305402922700051' -const OP_ADDR = '248000, Россия, г. Калуга, ул. Никитина, д. 12А' -const SITE_URL = window.location.origin +```ts +import { STORE_EMAIL } from "@/shared/config"; + +const OP_NAME = + "Индивидуальный предприниматель Новоселова Наталия Владимировна"; +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). @@ -79,6 +95,7 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo Заменить `items` в секции 2. Было: + ```ts items: [ '2.1. Оператор обрабатывает следующие персональные данные Пользователей:', @@ -92,6 +109,7 @@ items: [ ``` Стало: + ```ts items: [ '2.1. Оператор обрабатывает следующие персональные данные Пользователей:', @@ -106,6 +124,7 @@ items: [ - [ ] **Step 3: Исправить раздел 3 — убрать несуществующую персонализацию** Было: + ```ts items: [ '3.1. Оператор обрабатывает персональные данные в следующих целях:', @@ -118,6 +137,7 @@ items: [ ``` Стало: + ```ts items: [ '3.1. Оператор обрабатывает персональные данные в следующих целях:', @@ -131,6 +151,7 @@ items: [ - [ ] **Step 4: Исправить раздел 5 — убрать неавтоматизированную обработку и нереалистичный срок** Было: + ```ts items: [ '5.1. Обработка осуществляется путём сбора, записи, систематизации, накопления, хранения, уточнения, извлечения, использования, передачи, обезличивания, блокирования, удаления и уничтожения персональных данных.', @@ -140,6 +161,7 @@ items: [ ``` Стало: + ```ts items: [ '5.1. Обработка осуществляется путём сбора, записи, систематизации, накопления, хранения, уточнения, извлечения, использования, передачи, блокирования, удаления и уничтожения персональных данных.', @@ -151,6 +173,7 @@ items: [ - [ ] **Step 5: Исправить раздел 6 — Яндекс.Метрика → ЮKassa** Было: + ```ts items: [ '6.1. Оператор может передать персональные данные третьим лицам в следующих случаях:', @@ -161,6 +184,7 @@ items: [ ``` Стало: + ```ts items: [ '6.1. Оператор может передать персональные данные третьим лицам в следующих случаях:', @@ -173,10 +197,13 @@ items: [ - [ ] **Step 6: Добавить дату обновления** Заменить текст подзаголовка (строка 99): + ``` Политика в отношении обработки персональных данных. ``` + на: + ``` Последнее обновление: 23 мая 2026 г. ``` @@ -186,6 +213,7 @@ items: [ ```bash cd client && npm run lint ``` + Expected: 0 новых ошибок. --- @@ -193,6 +221,7 @@ Expected: 0 новых ошибок. ### Task 3: Исправить Пользовательское соглашение **Files:** + - Modify: `client/src/pages/terms/ui/TermsPage.tsx` - [ ] **Step 1: Заменить локальные константы на импорт из config** @@ -200,22 +229,41 @@ Expected: 0 новых ошибок. Заменить строки 4-11. Было: + ```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_INN = '402900832341' -const OP_OGRN = '305402922700051' -const OP_ADDR = '248000, Россия, г. Калуга, ул. Никитина, д. 12А' +const OP_NAME = + "Индивидуальный предприниматель Новоселова Наталия Владимировна"; +const OP_INN = "402900832341"; +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). @@ -223,10 +271,13 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo - [ ] **Step 2: Дополнить раздел 1 — упомянуть OAuth и вход по коду** В секции 1, в определении «Аутентификационные данные». Найти: + ``` '— Аутентификационные данные Пользователя — адрес электронной почты Пользователя и пароль (код доступа), которые в совокупности признаются простой электронной подписью Пользователя.', ``` + Заменить на: + ``` '— Аутентификационные данные Пользователя — адрес электронной почты и пароль (код доступа), либо данные, полученные через сервисы авторизации третьих лиц (VK ID, Яндекс ID), либо одноразовый код, направляемый на электронную почту. Совокупность аутентификационных данных признаётся простой электронной подписью Пользователя.', ``` @@ -234,10 +285,13 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo - [ ] **Step 3: Убрать «рекламные» сообщения из п. 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»)** Найти в секции 6: + ``` '6.1. Администратор гарантирует достоверность и полноту только той информации, которую он разместил на Сайте самостоятельно.', ``` + Заменить на: + ``` '6.1. Администратор прилагает разумные усилия для обеспечения достоверности и полноты информации, размещённой на Сайте, однако не даёт явных гарантий точности такой информации.', ``` @@ -258,6 +315,7 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo Заменить всю секцию 7. Было: + ```ts { title: '7. Доступ к ресурсам третьих лиц', @@ -270,11 +328,12 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo ``` Стало: + ```ts { title: '7. Доступ к ресурсам третьих лиц', items: [ - '7.1. Для обеспечения функциональности Сайта используются сервисы третьих лиц: платёжный сервис ЮKassa (для обработки онлайн-платежей), картографический сервис OpenStreetMap/Nominatim (для выбора адреса доставки).', + '7.1. Для обеспечения функциональности Сайта используются сервисы третьих лиц: платёжный сервис ЮKassa (для обработки онлайн-платежей). '7.2. Владельцы указанных ресурсов имеют собственную политику конфиденциальности и самостоятельно определяют условия обработки получаемой информации.', '7.3. При переходе на сторонние ресурсы Пользователи самостоятельно определяют пределы использования своей информации согласно правилам соответствующих ресурсов.', ], @@ -286,6 +345,7 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo Заменить всю секцию 8. Было: + ```ts { title: '8. Информация, хранящаяся на стороне браузера', @@ -302,6 +362,7 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo ``` Стало: + ```ts { title: '8. Информация, хранящаяся на стороне браузера', @@ -318,12 +379,14 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo Заменить строки 9.3 и 9.4 в секции 9. Было: + ```ts '9.3. Администратор обрабатывает следующие персональные данные: Ф. И. О., адрес электронной почты, номер телефона, IP-адрес, тип браузера, данные о действиях на Сайте.', '9.4. Цели обработки персональных данных: обеспечение функционирования Сайта, оказание информационной поддержки, предоставление персонализированных сервисов, направление информационных сообщений.', ``` Стало: + ```ts '9.3. Администратор обрабатывает следующие персональные данные: адрес электронной почты, имя (при добровольном указании), номер телефона (при оформлении доставки), адрес доставки.', '9.4. Цели обработки персональных данных: обеспечение функционирования Сайта, аутентификация Пользователя, оформление и доставка заказов, направление транзакционных уведомлений.', @@ -334,6 +397,7 @@ const SITE_URL = STORE_PUBLIC_SITE_URL || (typeof window !== 'undefined' ? windo ```bash cd client && npm run lint ``` + Expected: 0 новых ошибок. --- @@ -347,6 +411,7 @@ Expected: 0 новых ошибок. ```bash cd client && npx tsc -b --noEmit ``` + Expected: no errors. - [ ] **Step 2: Lint** @@ -354,6 +419,7 @@ Expected: no errors. ```bash cd client && npm run lint ``` + Expected: 0 errors (warnings OK). - [ ] **Step 3: Сборка** @@ -361,6 +427,7 @@ Expected: 0 errors (warnings OK). ```bash cd client && npm run build ``` + Expected: успешная сборка. - [ ] **Step 4: Format check** @@ -368,4 +435,5 @@ Expected: успешная сборка. ```bash cd client && npm run format:check ``` + Expected: все файлы отформатированы (или отформатировать через `npm run format`). diff --git a/client/src/pages/privacy-policy/ui/PrivacyPolicyPage.tsx b/client/src/pages/privacy-policy/ui/PrivacyPolicyPage.tsx index 6635387..4901f71 100644 --- a/client/src/pages/privacy-policy/ui/PrivacyPolicyPage.tsx +++ b/client/src/pages/privacy-policy/ui/PrivacyPolicyPage.tsx @@ -30,8 +30,7 @@ const sections = [ '2.1. Оператор обрабатывает следующие персональные данные Пользователей:', '— адрес электронной почты;', '— имя (отображаемое имя, может быть указано Пользователем добровольно);', - '— номер телефона (указывается Пользователем добровольно при оформлении доставки);', - '— адрес доставки и геолокационные координаты (указываются Пользователем при оформлении заказа);', + '— ФИО получателя, номер телефона и адрес доставки (указывается Пользователем добровольно при оформлении доставки);', '— сессионные cookie-файлы (исключительно для поддержания входа в Личный кабинет).', ], }, diff --git a/client/src/pages/terms/ui/TermsPage.tsx b/client/src/pages/terms/ui/TermsPage.tsx index b61b5ed..be64128 100644 --- a/client/src/pages/terms/ui/TermsPage.tsx +++ b/client/src/pages/terms/ui/TermsPage.tsx @@ -101,7 +101,7 @@ const sections = [ { title: '7. Доступ к ресурсам третьих лиц', items: [ - '7.1. Для обеспечения функциональности Сайта используются сервисы третьих лиц: платёжный сервис ЮKassa (для обработки онлайн-платежей), картографический сервис OpenStreetMap/Nominatim (для выбора адреса доставки).', + '7.1. Для обеспечения функциональности Сайта используются сервисы третьих лиц: платёжный сервис ЮKassa (для обработки онлайн-платежей)', '7.2. Владельцы указанных ресурсов имеют собственную политику конфиденциальности и самостоятельно определяют условия обработки получаемой информации.', '7.3. При переходе на сторонние ресурсы Пользователи самостоятельно определяют пределы использования своей информации согласно правилам соответствующих ресурсов.', ], diff --git a/client/src/shared/config/index.ts b/client/src/shared/config/index.ts index 22be88d..fe3d22f 100644 --- a/client/src/shared/config/index.ts +++ b/client/src/shared/config/index.ts @@ -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_TYPE = 'самозанятый' -/** Тестовый ИНН — заменить на реальный. */ -export const STORE_OP_INN = '402900832341' +export const STORE_OP_TYPE = 'Самозанятый' +export const STORE_OP_INN = '591878584346' export const STORE_OP_ADDR = '618909, Россия, Пермский край, Лысьвенский муниципальный округ, Лысьва, улица Мира, 34, кв. 24' diff --git a/server/prisma/prisma/dev.db b/server/prisma/prisma/dev.db index 7db2685..084cd71 100644 Binary files a/server/prisma/prisma/dev.db and b/server/prisma/prisma/dev.db differ