From fa2fbc59b03d25e2a6af09b468b89501fffaf88b Mon Sep 17 00:00:00 2001 From: dmitriylaukhin Date: Fri, 26 Jun 2026 12:53:04 +0500 Subject: [PATCH] =?UTF-8?q?chore:=20seed=20repo=20=E2=80=94=20README,=20.g?= =?UTF-8?q?itignore,=20synthetic=20price=20fixtures=20(6=20=D1=84=D0=BE?= =?UTF-8?q?=D1=80=D0=BC=D0=B0=D1=82=D0=BE=D0=B2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- .gitignore | 27 +++++ README.md | 37 +++++++ fixtures/README.md | 20 ++++ fixtures/raw/clinic_alpha_clean.xlsx | Bin 0 -> 5276 bytes fixtures/raw/clinic_beta_dirty.xlsx | Bin 0 -> 5491 bytes fixtures/raw/clinic_delta_messy.txt | 11 ++ fixtures/raw/clinic_epsilon_scan.png | Bin 0 -> 50432 bytes fixtures/raw/clinic_gamma.csv | 9 ++ fixtures/raw/clinic_zeta_prices.pdf | Bin 0 -> 42356 bytes scripts/gen_fixtures.py | 149 +++++++++++++++++++++++++++ 10 files changed, 253 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 fixtures/README.md create mode 100644 fixtures/raw/clinic_alpha_clean.xlsx create mode 100644 fixtures/raw/clinic_beta_dirty.xlsx create mode 100644 fixtures/raw/clinic_delta_messy.txt create mode 100644 fixtures/raw/clinic_epsilon_scan.png create mode 100644 fixtures/raw/clinic_gamma.csv create mode 100644 fixtures/raw/clinic_zeta_prices.pdf create mode 100644 scripts/gen_fixtures.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d5ae763 --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Python +__pycache__/ +*.py[cod] +.venv/ +venv/ +.env +.env.* +!.env.example + +# Node / Next.js +node_modules/ +.next/ +out/ +dist/ +*.log + +# Claude Code worktrees (изоляция агентов) +.claude/worktrees/ + +# OS +.DS_Store +Thumbs.db + +# Данные (реальные прайсы НЕ коммитим; синтетика в fixtures/raw — коммитим) +data/raw/ +data/uploads/ +*.sqlite diff --git a/README.md b/README.md new file mode 100644 index 0000000..daa906b --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +# medtech-hackathon + +Terricon Valley · Medtech Hackathon (26–28.06.2026) · **Кейс 1 — автоматическая обработка архива прайсов клиник-партнёров.** + +Превращаем архив разнородных прайс-листов клиник (Excel / PDF / скан / фото / .doc, RU/KZ/EN, грязные данные) в единый сравнимый каталог **услуга → клиника → цена** с поиском, сравнением цен и экспортом. + +## Стек + +- **ETL/бэкенд:** Python + FastAPI (pandas для Excel, LLM-vision для грязного, pdfplumber, Tesseract `kaz+rus` fallback) +- **Канонизация услуг:** sentence-transformers + pgvector + детерминированная матрица конфликтов (см. словарик) +- **БД:** PostgreSQL + pgvector +- **Фронт:** Next.js + Tailwind + shadcn/ui (дизайн на палитре Nomad) +- **Деплой:** Docker Compose + Caddy → `med.secondbrain.tools` (Selectel KZ) + +## Языки + +KAZ / RUS / ENG — сквозное требование (данные и UI). + +## Структура (план) + +``` +contracts/ — модель данных + Zod-схемы + openapi.yaml (агент A) +db/ — миграции (агент A) +etl/ — парсинг и нормализация (агент B) +api/ — REST API поиска/сравнения (агент C) +web/ — Next.js UI (агент D) +infra/ — docker-compose, Caddyfile (агент E) +docs/ — документация, ADR (агент F) +pitch/ — слайды и демо-сценарий (агент F) +fixtures/ — синтетические + эталонные данные +``` + +Скелет кода поднимается в Фазе 0 хакатона после заморозки контрактов. + +## Полный план + +В хранилище Obsidian: `Base/_Inbox/Хакатон Medtech/` (план, словарик нормализации, дизайн-система, памятка). diff --git a/fixtures/README.md b/fixtures/README.md new file mode 100644 index 0000000..7a180fe --- /dev/null +++ b/fixtures/README.md @@ -0,0 +1,20 @@ +# Fixtures — синтетические прайсы клиник + +Сгенерированы скриптом `scripts/gen_fixtures.py` (seed=42, детерминированно) для отладки pipeline **до** выдачи реальных данных от организатора. Намеренно разнородные и «грязные». + +## `raw/` — входные прайсы (6 форматов) + +| Файл | Формат | Особенности (что тестирует) | +|---|---|---| +| `clinic_alpha_clean.xlsx` | Excel | Чистая таблица — быстрый путь pandas, без LLM | +| `clinic_beta_dirty.xlsx` | Excel | Секции-заголовки, «от 12000», KZ-названия, лишние колонки | +| `clinic_gamma.csv` | CSV (`;`) | Смешанные RU/KZ, единицы измерения | +| `clinic_delta_messy.txt` | Текст | Прайс абзацем, разные разделители и валюты (тг/тенге/₸/KZT) | +| `clinic_epsilon_scan.png` | Картинка | Имитация фото/скана (наклон) → путь LLM-vision / OCR | +| `clinic_zeta_prices.pdf` | PDF | Текстовый PDF, RU/EN заголовок | + +Одни и те же услуги названы по-разному между файлами (ОАК / Общий анализ крови / Қанның жалпы анализі) — это материал для канонизации и дедупликации. + +## TODO (Фаза 0 хакатона) +- `normalized/*.json` — эталонные нормализованные записи (для TDD ETL) +- `api/*.json` — эталонные ответы API (для MSW-моков фронта) diff --git a/fixtures/raw/clinic_alpha_clean.xlsx b/fixtures/raw/clinic_alpha_clean.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f52559492a135d2f9343bfb13ef90daad20ce0bf GIT binary patch literal 5276 zcmZ`-1yodP*B-iSNC%JxrMnvkkP-w5X<;ti-Qh6O!jO_ug3_IWq(}`V-60?%ATW~h zkJt5Gul(P4&N}C;v(|a`dH1vSv-f_twmJqT1polR1vvaQXQKRGQ#A$kHjKJRQJ1xg zmA1Q!s|TN@t1GXslcOd=lc0;A5PPNLp?Bkp=-Y+F_hh1T+7P^65e;{ppy&I0m~zg3 ze*Luhyiv^T4e8)R-VG-q!S_V+Q!MAQg9CZdc^d&00*hg>)gY2WhT9n3`A*ZJ5dwtb zLu-vyJCnT1HeQHSMV}f;9ro@uLt)8k4u;YNI(*VCe>T||a&?I`F0AVq-9bv-oKFKT zm)2MvI4#uLf4Jb=sGai}we&$W0D$b@E?Bv^Lw@>Dl-Q}&%})q3hYY;+%8X(LoAN4U z$tykqMjCJU8iOa4qjXvuIe3h5!fD^1USH1Y+aKd!$Un&YPSKRt1TvimM+CFP51FCe zlZFckJh+$E6~vIWdQ6COfW15%CQk*%ik~s;#%8ztL|q`x#lx$1O*Us_K~}=1La%b? z2w1_b>w1WQNf`ADh!ThpD#@1F@H**r?XGtpwFORjCTc!o^>os)Wb6(aodEw3ZV(CN zn%bH*$Eqn6Ryh1Hp=<(AJ3%`8@YQi!r%*m(FEw>5byj2BoZmPf3!!XT6217u&=(^= zeXzTH%<(5NFHEvnNU;HcEDivG97T+;BcG=�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 literal 0 HcmV?d00001 diff --git a/fixtures/raw/clinic_beta_dirty.xlsx b/fixtures/raw/clinic_beta_dirty.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..dd032cfbe9203fb80b588ad687f2dce488f2e382 GIT binary patch literal 5491 zcmZ`-1yodB*B-iKXhA@vrBk{G5RglNnRxPY+dJqP_-D4=L)g zak18RcX9RLvvhUk^>uQ5IP{R9gP#z4sZH0rAtRarPOKyyo!c_R>lI$l=@fSMeHT;K z+0U<=E}u8*E?a#%XrFh@Nl5S$k=z9HnM_}AUUc5t(+Yw4kl1&$BydIsjLv+g$>4AS zLb3jphN`X4yvk6op;QH*Y6%^-&J{ypiFfRbrE|CONjLmiWn#$H#nZU3u4DB2DD`r` z^txQwV71{iQEUIMTWF~JF?`*d=BF|BWZh<`4pmG_gPF|U!K#YrrSM3@&V*~~kv#QXm za2$|TaO=7555dHZx&=fDL+Qf{)MqC zMs9L%d-0I{Phv7mvzbY;0f20F0Dv4tjISe~r!B+@@_Q8cMa{0UiN}l>#k22~!@kgC zCxR}~kosD34?FMK+KjMWO~!DbVVt9%O=4J3n~ErDUnCvA`a3vd+2C7+iH< zioOZcB@oEXY8Hwj}5UL!9~P4DSRDy1ZG_G>%+;)Pek950%w-_%t%A8XVdan1a>x z;J9Fn5?7E&QX;&zs8Hh!Fm)|i9O{8)TcSNX6nQR}`|L}x`*SLv|lwjCS$ zWrYKLi^^6(d3D>LjIwTBZtM=g(A9gQe-tCtob${pg?5_0d0yUh&+wag6!5C+Bj$wN z=&e*?W%rx}EMmZYEpBFa$dO7Y)5p2W%cHdB9=MQy zPN2k~LrRccDcYOe=B%OQ3y;mUS8tLhA1VyGws7O^pEH|SMzA|elDkXXhAIRM9Umta zvI-7;KgHkHl!7wqr&gH_4Xx$Ix-&P=9~%Z9YpFOhPrm(7b9XXDnFaK!o2O|FC|37? zNRV6>HwTt(uYDUGjwg_s2Ro_lDg!Q&2R5|gb}z<7{w#ILls3pSd@vJsLaI!=lI`)u zW5n?sr%-w1_;JfzL7E{YS{luwaES=_#|ht;ANI?$rRd4Y22u#HuSz0>Wr`UD@v-(13^MEfzWDc3yIQm>LZ6~tkIdZfC_M@NARfdU zI8^u@aVVWP+Hjva5ZXQ#W3r&^Y=S(m5SW=1=H;+9a3ARY^r$kKb4vWxhn-7XncV%| zvuT#F%1k33W~v1BkQ#ZG#*3KVy?aQ!O&b$dyuL?cko(bOxe9d7TY5)oFDKV45gd(D zCTm-jd7d)dL#I*}8?^%jLW&LU>R;;>8`GLhg~{3w6u2t@~-_c{m^5R zA62dP(zTSDLsv%S-LD9Nnp6a2s@5sgMQZs6xAa;!xE>%Mi?xA->dDe*T2{Y&a?{jn zB=fE(K^H_ci@)`U2tbQ|EbwT8y(+>V|>Dr@0vM#w{ zacHJk@$7hh^~^b0QdJ|{?;{Y+6NJwE@-{XVwcwiex1P@AIL!RcoN z?|%>?I4K9qWyFI(+|OZ}=A*1+6wy_LSWMLJtKYvT+xx^$o^gjbg*_6q8K>@5jB1w_ za#x&s#ClLM!$uH3yYgtDnYNV;tlsJGoWsL@J!}41x|Uj6`JfOKBg?8p~ zxpmpu&qTJzM8dZdvCIWB>O~9IH1Vb8uD%mhbs*!HcVpVn{@g%XN0L>BF#rHILI8l~ z_XgtQ;_l#K3xRlg@cs4rYZrNG(C0iRM{)Tw(cq5KPLCu<6lOUocLFJ{Veb7x6 zI;pI)rH<#k4TX%eeJavX?pWp0Ke-@w=u9hO^c9VORDoeR!P7*LHN=yN>gXbCa z)?H>gH=l4DAkmZ#Fwlj1z={=77Bn?GtRMPqEoFLgH)Eu$c9@+`(N&KUgaFqq=>U<^ zaDOguAx^S2X1pH~c&U?7Q(@1iLcnsaghW^0dJH~jx8OMUkuD2OxnjaCeWDu_*2-VE zSmtq$+l`w>mzt=mM@lCwC%mS;CmC;fO0Pfr;H)cWtuIyN8&rQIg3PUqrj;s!($EJefy8yO=2zXFj%pIGxlc2yE5+do@hSRA55ATaNp-p-tFu$Dwn;BUF`s$rzNng! zy+6qX^kmJ2k)!JiJLAx$lVC;@+dTi;VGdx$S(r>hjwn zx*i`q;wUkV=~*wS%S>9aJsCX#mucvJj$h<+t@C>elNEOJqV$ax$?Dc72qp9|BI-?xd7^o#(zr-+vJ_lILY8@)T zT8JnJBKmp___GR(V(lyIq5}Xb_y7RW?<(No>E{UX_|-tp>(55d@{?Xtu96fdr)M^@ z_!Tp0+xB&QQ?yt&)WmFRtZresJhNxnsLxu}J=4!x$`F?jg2Dv`OMKXSUXf%suNA|; zO>VU#zUieNHDef*U4tbmq(^B>(+?`VG88Af@o$e+EnsYACBd$$zm=pr1WHds5dhww4&g-TR1?wW;IXCdRR zN5iDw#19o2h-3;3Y-)$hdJ3GjZR{dT-Cp4=CJB;kXf=-Jk)P3# zQe0eV#j$}zub*3vo`uFHjL}aou3~<&U87~WFWvy$5?;TIPHF=pmBZ{X*2cC0F_az2 z9@ilQL8SLgWnii4b;z>rr?`)oVReAgLuy+D_dyHC(y{)y^)1S|&ivPms<@P7I1~By zLCpu`82kdFLFq)ky~)-XCb={^Q$LV{81829@pT52&D{LIofJ>TTf;arEHh{Waz!sXLT*1J!U@AiQ>5Hq4p_T+I-MsPG(0XI9O5T#H+j@TeDEob&`v5kGnv&Cji=p$h19PH z=7#V;XXaFv?OePO*(>TlIJ%RNuL5%AK1_sb#CWGv%H+V++#hTNL(U zloie-z&P$#F~aQ>`Q2XC^VX@Z+;g*B-AaRR!)mk4#AWJRvsX_ucHXf_urV6nx?dA+ zo6&5P*;InXGf(6Nz9?fVWj&u@(6y&61A`t{w!3CRr-kcYvoPP9wAw(*os;x=QQ7Po z119X{?4p#pzZBHOJsjPRrzzRf(|%s9BG$YZKFr4MX_&8Y#jO;;MH;32oR&|U`Yw5t z!`6ic6`ze^i5cXAJ$&<%8Dvdz!@AcdZn$W(>+4eqb?i};Iu6pJB4CYr5q6gK189mr=b;zzmQhkihModLl-`wg?9#OZROy@e zjfPU&e%e6!grlEI>P$+K9oVwu~LEFSaw@ zs_u^0(BUDzW|}G55|Jr?_Cjo*gg>B+u~^ZD^WM72nrVmQv1q$-5=TNI$F}KNwI)2c zj||9%ZTF&PD>=x&P&UGBZr1=IGNjU2&a`y6y+ZJ(lUXo@Fglcjlc>(^*RkJ3(Z$&l z;_PYh$j=qxVfHJU%9DqFDI#4KgzD)q;8!%&dM`H0O>tn zbSM?bHv;dVj}fsWw5(C9D@#WtYWpA#gnM^;my)Tg zLT*$|B-0_+@}m>~;FMUHBNzF5)lYW$HRxNmXnlRO&?Z7JCyLG2$MNcFv3T$!utu97YhT<-~@!~+Gi(x;B*~k&_<5qR%uMPLPEEx_*$6F?lgPYf*aA9zL?et zGu(R*^J7&%X0M(g}1`u~)woA8?o&foAk)b#(N=iD@KvxEPyfe?D!zYP3qKY!E8 z%?{wdR?wJHCj-9hzM1ELgTJ9f qP89fmWc^J$H&f|vJ7XxN@m~^4TOA7}xB&oos9OeA$r*noAmBfX1D(SF literal 0 HcmV?d00001 diff --git a/fixtures/raw/clinic_delta_messy.txt b/fixtures/raw/clinic_delta_messy.txt new file mode 100644 index 0000000..a1ec6a8 --- /dev/null +++ b/fixtures/raw/clinic_delta_messy.txt @@ -0,0 +1,11 @@ +МЕДЦЕНТР «ТЕНГРИ» — действующие цены + +Қан биохимиясы — 8300 KZT (1 иссл.) +Терапевт қабылдауы 7000 KZT (1 приём) +Глюкоза крови: 1100 тг (1 иссл.) +Құрсақ қуысы УДЗ — 6700 ₸ (1 иссл.) +МРТ головного мозга: 21600 тг (1 иссл.) +Рентгенография ОГК: 5100 KZT (1 иссл.) +Удаление зуба простое ... 12900 KZT (1 зуб) + +* Цены справочные, уточняйте в регистратуре. Бағалар анықтамалық. diff --git a/fixtures/raw/clinic_epsilon_scan.png b/fixtures/raw/clinic_epsilon_scan.png new file mode 100644 index 0000000000000000000000000000000000000000..4d929c578d72a35c74168fb75741b6563c973e59 GIT binary patch literal 50432 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\Sk&(9WFPmocdwy!8D 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 MrmtF{eCy$V0JyE1Qvd(} literal 0 HcmV?d00001 diff --git a/fixtures/raw/clinic_gamma.csv b/fixtures/raw/clinic_gamma.csv new file mode 100644 index 0000000..524c01f --- /dev/null +++ b/fixtures/raw/clinic_gamma.csv @@ -0,0 +1,9 @@ +service;price_kzt;unit +УЗИ ОБП;11600;1 иссл. +Приём врача-терапевта;4500;1 приём +Электрокардиография;2100;1 иссл. +Флюорография;4100;1 иссл. +Б/х крови;4000;1 иссл. +Консультация кардиолога;9600;1 приём +Экстракция зуба;9500;1 зуб +Қандағы глюкоза;1600;1 иссл. diff --git a/fixtures/raw/clinic_zeta_prices.pdf b/fixtures/raw/clinic_zeta_prices.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2d35dca2435afaf8e48092994dafdc0aeae9fe0c GIT binary patch literal 42356 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 literal 0 HcmV?d00001 diff --git a/scripts/gen_fixtures.py b/scripts/gen_fixtures.py new file mode 100644 index 0000000..6e7a349 --- /dev/null +++ b/scripts/gen_fixtures.py @@ -0,0 +1,149 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +"""Генератор синтетических прайсов клиник (RU/KZ) в разных форматах для отладки pipeline.""" +import csv, os, random, subprocess, sys + +OUT = sys.argv[1] if len(sys.argv) > 1 else "fixtures/raw" +os.makedirs(OUT, exist_ok=True) +random.seed(42) # детерминированно + +def ensure(pkg, mod=None): + try: + __import__(mod or pkg) + except ImportError: + subprocess.check_call([sys.executable, "-m", "pip", "install", "-q", pkg]) + +# Базовый каталог: (канон RU, канон KZ, [варианты названий], мин, макс, единица) +CATALOG = [ + ("Общий анализ крови", "Қанның жалпы анализі", + ["Общий анализ крови", "ОАК", "Общий анализ крови (развернутый)", "Клинический анализ крови", "Қанның жалпы анализі"], + 1200, 4500, "1 иссл."), + ("УЗИ органов брюшной полости", "Құрсақ қуысы ағзаларының УДЗ", + ["УЗИ органов брюшной полости", "УЗИ ОБП", "УЗИ брюшной полости", "Құрсақ қуысы УДЗ"], + 6000, 13000, "1 иссл."), + ("Приём врача-терапевта", "Терапевт дәрігердің қабылдауы", + ["Прием терапевта", "Консультация терапевта первичная", "Приём врача-терапевта", "Терапевт қабылдауы"], + 4000, 9000, "1 приём"), + ("Электрокардиография (ЭКГ)", "Электрокардиография (ЭКГ)", + ["ЭКГ", "Электрокардиография", "ЭКГ с расшифровкой", "ЭКГ + описание"], + 2000, 5000, "1 иссл."), + ("Глюкоза крови", "Қандағы глюкоза", + ["Глюкоза", "Глюкоза крови", "Сахар крови", "Қандағы глюкоза"], + 800, 2200, "1 иссл."), + ("Консультация кардиолога", "Кардиолог кеңесі", + ["Консультация кардиолога", "Прием кардиолога", "Кардиолог консультация первичная"], + 5000, 12000, "1 приём"), + ("МРТ головного мозга", "Бас миының МРТ", + ["МРТ головного мозга", "Магнитно-резонансная томография головного мозга", "МРТ г/м", "Бас миы МРТ"], + 18000, 35000, "1 иссл."), + ("Биохимический анализ крови", "Қанның биохимиялық анализі", + ["Биохимия крови", "Биохимический анализ крови (базовый)", "Б/х крови", "Қан биохимиясы"], + 3500, 9000, "1 иссл."), + ("Удаление зуба", "Тісті жұлу", + ["Удаление зуба", "Удаление зуба простое", "Экстракция зуба", "Тіс жұлу"], + 6000, 15000, "1 зуб"), + ("Рентген грудной клетки", "Кеуде клеткасының рентгені", + ["Рентген грудной клетки", "Рентгенография ОГК", "Флюорография", "Кеуде рентгені"], + 2500, 6000, "1 иссл."), +] + +CLINICS = ["Клиника «Аль-Шифа»", "Медцентр «Сункар»", "Diagnostic Lab Astana", "Клиника «Береке»", "Медцентр «Тенгри»"] + +def price(lo, hi): + return round(random.randint(lo, hi), -2) # круглые сотни + +def variants_for(clinic_idx, n): + """Выбрать n услуг с разными вариантами написания и ценами.""" + rows = [] + chosen = random.sample(CATALOG, k=min(n, len(CATALOG))) + for ru, kz, names, lo, hi, unit in chosen: + name = random.choice(names) + rows.append((name, price(lo, hi), unit)) + return rows + +ensure("openpyxl") +from openpyxl import Workbook + +# 1) Чистый Excel +wb = Workbook(); ws = wb.active; ws.title = "Прайс" +ws.append(["Наименование услуги", "Цена, тг"]) +for name, p, _ in variants_for(0, 9): + ws.append([name, p]) +wb.save(f"{OUT}/clinic_alpha_clean.xlsx") + +# 2) Грязный Excel: секции-заголовки, "от", разные колонки, KZ +wb = Workbook(); ws = wb.active; ws.title = "PRICE 2026" +ws.append(["Прайс-лист медцентра «Сункар» (с 01.06.2026)"]) +ws.append([]) +ws.append(["№", "Услуга / Қызмет", "Стоимость (тенге)", "Ед."]) +section = ["— Лаборатория / Зертхана —", "— Диагностика —", "— Приём специалистов —"] +i = 1 +for s in section: + ws.append([s, None, None, None]) + for name, p, unit in variants_for(1, 3): + val = f"от {p}" if random.random() < 0.3 else p + ws.append([i, name, val, unit]); i += 1 +wb.save(f"{OUT}/clinic_beta_dirty.xlsx") + +# 3) CSV с разделителем ; и смешанными языками +with open(f"{OUT}/clinic_gamma.csv", "w", encoding="utf-8", newline="") as f: + w = csv.writer(f, delimiter=";") + w.writerow(["service", "price_kzt", "unit"]) + for name, p, unit in variants_for(2, 8): + w.writerow([name, p, unit]) + +# 4) Грязный текст (прайс абзацем) +with open(f"{OUT}/clinic_delta_messy.txt", "w", encoding="utf-8") as f: + f.write("МЕДЦЕНТР «ТЕНГРИ» — действующие цены\n\n") + for name, p, unit in variants_for(3, 7): + sep = random.choice([" — ", " ... ", ": ", " "]) + cur = random.choice(["тг", "тенге", "₸", "KZT"]) + f.write(f"{name}{sep}{p} {cur} ({unit})\n") + f.write("\n* Цены справочные, уточняйте в регистратуре. Бағалар анықтамалық.\n") + +# 5) Картинка-«скан» прайса (имитация фото) +ensure("Pillow", "PIL") +from PIL import Image, ImageDraw, ImageFont +img = Image.new("RGB", (900, 700), (250, 248, 244)) +d = ImageDraw.Draw(img) +def font(sz): + for p in ["/System/Library/Fonts/Supplemental/Arial.ttf", "/Library/Fonts/Arial.ttf", + "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"]: + if os.path.exists(p): + return ImageFont.truetype(p, sz) + return ImageFont.load_default() +d.text((40, 30), "Клиника «Береке» — прайс-лист", fill=(20, 20, 20), font=font(34)) +d.line((40, 85, 860, 85), fill=(180, 180, 180), width=2) +y = 110 +for name, p, unit in variants_for(4, 9): + d.text((50, y), name, fill=(30, 30, 30), font=font(24)) + d.text((720, y), f"{p} тг", fill=(30, 30, 30), font=font(24)) + y += 58 +img = img.rotate(-1.4, expand=False, fillcolor=(250, 248, 244)) # лёгкий наклон как у фото +img.save(f"{OUT}/clinic_epsilon_scan.png") + +# 6) PDF (если есть reportlab) +try: + ensure("reportlab") + from reportlab.lib.pagesizes import A4 + from reportlab.pdfgen import canvas + from reportlab.pdfbase import pdfmetrics + from reportlab.pdfbase.ttfonts import TTFont + fp = next((p for p in ["/Library/Fonts/Arial.ttf", "/System/Library/Fonts/Supplemental/Arial.ttf", + "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"] if os.path.exists(p)), None) + if fp: + pdfmetrics.registerFont(TTFont("U", fp)) + c = canvas.Canvas(f"{OUT}/clinic_zeta_prices.pdf", pagesize=A4) + c.setFont("U", 18); c.drawString(60, 790, "Diagnostic Lab Astana — Price list / Прайс") + c.setFont("U", 12); y = 750 + for name, p, unit in variants_for(2, 10): + c.drawString(60, y, name[:55]); c.drawRightString(540, y, f"{p} KZT"); y -= 28 + c.save() + pdf = "ok" + else: + pdf = "no font" +except Exception as e: + pdf = f"skip ({e})" + +print("PDF:", pdf) +print("Files:", sorted(os.listdir(OUT)))