← всі звіти · 2026-05-14T095249Z-filtrum-14052026-task.md

--- type: task-handoff from: Desktop Claude to: VPS Claude / Dev Crew date: 2026-05-14 priority: high project: med-detective / filtrum

Задача: Med Detective Filtrum — /filtrum-14052026/

Що потрібно

Розгорнути окрему URL-інстанцію Med Detective для кампанії Filtrum з MP-макросом та передачею ліда в CRM.

URL: https://medetective.deltamedicalservices.online/filtrum-14052026/ Приклад: https://medetective.deltamedicalservices.online/filtrum-14052026/?MP=380637141986

CRM

Формат запиту до proxy

{"formData":{"formId":"1e8ad1e0-4f3b-46b9-85f0-947465fec559","formFieldsData":[{"name":"WebFormId","value":"1e8ad1e0-4f3b-46b9-85f0-947465fec559"},{"name":"MobilePhone","value":"<mp_phone>"},{"name":"PhoneNumber","value":"<mp_phone>"},{"name":"Phone","value":"<mp_phone>"},{"name":"TextData1","value":"<case_id>"},{"name":"TextAnswer1","value":"<score>"},{"name":"TextAnswer2","value":"<diagnosis>"},{"name":"BpmHref","value":false}],"contactFieldsData":[{"name":"Phone","value":"<mp_phone>"}],"options":[]}} Відповідь OK: {"SaveWebFormObjectDataResult":"{resultMessage:"Данные успешно сохранены",resultCode:0}"}

Файли для зміни

1. /srv/projects/med-detective/backend/main.py (shared, backward-compatible)

Після REDIS_URL додати: ALLOWED_CASES_ENV = os.getenv("ALLOWED_CASES", "") CRM_ENABLED = os.getenv("CRM_ENABLED","false").lower() == "true" CRM_PROXY_URL = os.getenv("CRM_PROXY_URL","") CRM_WEBFORM_ID = os.getenv("CRM_WEBFORM_ID","") Після CASES_DATA = {...} фільтрація: if ALLOWED_CASES_ENV: _allowed = {c.strip() for c in ALLOWED_CASES_ENV.split(",")} CASES_DATA = {k:v for k,v in CASES_DATA.items() if k in _allowed} StartReq: додати mp_phone: str | None = None /api/start: в sessions.set додати "mp_phone": req.mp_phone or "" Нова функція _submit_crm_lead(phone, case_id, score, diagnosis) через httpx (є у venv). /api/diagnose: після verdict["product"] -> _executor.submit(_submit_crm_lead, sess.get("mp_phone",""), sess["case_id"], verdict.get("score",0), req.diagnosis)

2. /srv/projects/med-detective/frontend/index.html

Перший рядок JS: const mpPhone = new URLSearchParams(window.location.search).get('MP') || ''; В loadCases(): показати номер телефону над списком кейсів якщо mpPhone є. В startSession(): додати mp_phone: mpPhone до JSON body запиту /api/start.

3. /etc/caddy/conf.d/med-detective-filtrum.caddy (НОВИЙ файл)

handle /filtrum-14052026 { redir ... 301 } handle /filtrum-14052026/* { uri strip_prefix /filtrum-14052026; reverse_proxy 127.0.0.1:8770 }

4. /etc/systemd/system/med-detective-filtrum.service (НОВИЙ файл)

WorkingDirectory=/srv/projects/med-detective/ Port: 8770 REDIS_URL=redis://127.0.0.1:6379/5 ALLOWED_CASES=case_02_ibs CRM_ENABLED=true CRM_PROXY_URL=https://proxy.medizine.ua/ CRM_WEBFORM_ID=1e8ad1e0-4f3b-46b9-85f0-947465fec559

Деплой

systemctl daemon-reload systemctl enable --now med-detective-filtrum systemctl reload caddy systemctl restart med-detective

Тест

curl http://127.0.0.1:8770/api/health https://medetective.deltamedicalservices.online/filtrum-14052026/?MP=380637141986

Нотатки