# Реализация проверки cf_2624 при формировании заявления ## ✅ Что сделано ### 1. Backend API (`/drafts/{claim_id}`) - ✅ Получает `cf_2624` из CRM через webservice `retrieve` - ✅ Преобразует в `contact_data_confirmed` (boolean) - ✅ Возвращает в ответе API вместе с `contact_data_from_crm` **Файл:** `ticket_form/backend/app/api/claims.py` (строки 459-539) ### 2. Frontend - Загрузка черновика - ✅ Получает `contact_data_confirmed` из ответа API - ✅ Сохраняет в `formData` - ✅ Передаёт в `claimPlanData` для `StepClaimConfirmation` **Файл:** `ticket_form/frontend/src/pages/ClaimForm.tsx` (строки 564-848) ### 3. Frontend - Форма подтверждения - ✅ `StepClaimConfirmation` получает `contact_data_confirmed` из `claimPlanData` - ✅ Передаёт в `generateConfirmationFormHTML` - ✅ Форма блокирует персональные данные если `contact_data_confirmed = true` **Файлы:** - `ticket_form/frontend/src/components/form/StepClaimConfirmation.tsx` (строки 89-96) - `ticket_form/frontend/src/components/form/generateConfirmationFormHTML.ts` (строки 4, 293, 724-740, 840, 907-915) ### 4. CreateWebContact - ✅ Возвращает `cf_2624` в JSON ответе - ✅ Для новых контактов: `cf_2624 = "0"` - ✅ Для существующих: берёт значение из CRM **Файл:** `include/Webservices/CreateWebContact.php` --- ## ⏳ Что нужно сделать ### 1. Обновить n8n workflow `6mxRJ2LLHmQXyaDz` **После ноды `CreateWebContacКлиентправ`:** Добавить ноду `Code: Extract Contact Data Confirmed`: ```javascript // Парсим результат CreateWebContact const rawResult = $node["CreateWebContacКлиентправ"].json.result; const contactData = JSON.parse(rawResult); // Извлекаем cf_2624 (Данные подтверждены) const cf_2624 = contactData.cf_2624 || "0"; const contact_data_confirmed = cf_2624 === "1"; return { contact_id: contactData.contact_id, is_new_contact: contactData.is_new, cf_2624: cf_2624, contact_data_confirmed: contact_data_confirmed, contact_data_can_edit: !contact_data_confirmed }; ``` **В ноде `Code in JavaScriptКлиентправ` (формирование ответа):** Добавить в return: ```javascript const contactStatus = $('Code: Extract Contact Data Confirmed').first().json; return { // ... существующие поля ... contact_data_confirmed: contactStatus.contact_data_confirmed || false, contact_data_can_edit: contactStatus.contact_data_can_edit !== false, cf_2624: contactStatus.cf_2624 || "0", // ... остальные поля ... }; ``` **См. подробности:** `ticket_form/docs/N8N_UPDATE_CF_2624_IN_RESPONSE.md` --- ## 🔄 Логика работы ### Сценарий 1: Загрузка черновика 1. Пользователь выбирает черновик 2. Frontend вызывает `/api/v1/claims/drafts/{claim_id}` 3. Backend получает `cf_2624` из CRM 4. Backend возвращает `contact_data_confirmed = (cf_2624 === "1")` 5. Frontend передаёт флаг в форму подтверждения 6. Форма блокирует поля если `contact_data_confirmed = true` ### Сценарий 2: Новое заявление (через n8n) 1. Пользователь вводит телефон 2. n8n вызывает `CreateWebContact` 3. `CreateWebContact` возвращает `cf_2624` в ответе 4. n8n извлекает `cf_2624` и передаёт в ответе для фронтенда 5. Frontend получает `contact_data_confirmed` из ответа n8n 6. Форма блокирует поля если `contact_data_confirmed = true` --- ## 📋 Какие поля блокируются Если `contact_data_confirmed = true`, блокируются следующие поля: - ✅ Фамилия (`lastname`) - ✅ Имя (`firstname`) - ✅ Отчество (`secondname`, `middle_name`) - ✅ ИНН (`inn`) - ✅ Дата рождения (`birthday`) - ✅ Место рождения (`birthplace`, `birth_place`) - ✅ Адрес (`mailingstreet`, `address`) - ✅ Email (`email`) **Телефон (`mobile`) всегда только для чтения** (не зависит от флага) --- ## 🧪 Проверка 1. ✅ Создать контакт в CRM → `cf_2624` должен быть "0" 2. ✅ Загрузить черновик → поля должны быть редактируемыми 3. ⏳ Установить `cf_2624 = "1"` в CRM 4. ⏳ Загрузить черновик → поля должны быть заблокированы 5. ⏳ Проверить предупреждение "⚠️ Данные подтверждены" в форме --- ## 📝 Документация - `ticket_form/docs/CRM_CONTACT_DATA_CONFIRMED_FIELD.md` - Описание поля cf_2624 - `ticket_form/docs/CREATE_WEB_CONTACT_RESPONSE_FORMAT.md` - Формат ответа CreateWebContact - `ticket_form/docs/N8N_UPDATE_CF_2624_IN_RESPONSE.md` - Обновление n8n workflow - `ticket_form/docs/CODE_CREATE_WEB_CONTACT_FINAL.js` - Код для n8n (обновлён)