# ONEOK Open-Source Stack (Clean Variant) ## Фактичний clean-стек (впроваджено) Поточна платформа працює як `Python + Docker + Router ToolManager`. Для `1OK` у clean-варіанті зафіксовано: 1. `EspoCRM + MariaDB` як окремий CRM-контур агента. 2. `oneok-crm-adapter` як інструментальний API-шар (`crm_*`), ізоляція даних від інших агентів. 3. `oneok-calc-adapter` як доменний калькулятор (`calc_window_quote`). 4. `Gotenberg + oneok-docs-adapter` для PDF (`docs_render_quote_pdf`, `docs_render_invoice_pdf`). 5. `oneok-schedule-adapter` для слотів заміру/монтажу (`Europe/Kyiv`). 6. `Qdrant` використовується через наявний router-memory контур. ## Що впроваджено в router 1. Додано спеціалізовані 1OK tools у `router`: - `crm_search_client`, `crm_upsert_client`, `crm_upsert_site`, `crm_upsert_window_unit` - `crm_create_quote`, `crm_update_quote`, `crm_create_job` - `calc_window_quote` - `docs_render_quote_pdf`, `docs_render_invoice_pdf` - `schedule_propose_slots`, `schedule_confirm_slot` 2. Додано HTTP adapter layer у `ToolManager`. 3. Додано env endpoint-и: - `ONEOK_CRM_BASE_URL` - `ONEOK_CALC_BASE_URL` - `ONEOK_DOCS_BASE_URL` - `ONEOK_SCHEDULE_BASE_URL` 4. Додано ітеративний multi-step tool-calling у `router` (до `ROUTER_TOOL_MAX_ROUNDS`, дефолт `10`). 5. Додано auto-repair аргументів для `oneok` (наприклад, `windows -> window_units`, auto-fill `quote_payload`). ## Download links (reference) ### CRM - https://github.com/espocrm/espocrm - https://github.com/espocrm/espocrm-installer - https://github.com/SuiteCRM/SuiteCRM ### Калькулятори/оцінка - https://github.com/ath31st/window_calculator - https://github.com/ErdincAltuntas/window-estimator ### PDF/документи - https://github.com/gotenberg/gotenberg - https://github.com/InvoicePlane/InvoicePlane ### Пам'ять/RAG - https://github.com/qdrant/qdrant ## Рекомендований rollout (безпечний) 1. `Phase 1`: підняти `EspoCRM + Gotenberg + oneok-* adapters`. 2. `Phase 2`: увімкнути `router` tools для `oneok` і перевірити E2E (`crm -> calc -> quote -> pdf -> slots`). 3. `Phase 3`: стабілізувати політики Telegram/webhook та доступи whitelist. 4. `Phase 4`: за потреби замінити `oneok-schedule-adapter` на `Cal.com` без зміни tool-контрактів. ## Security baseline 1. Мінімізація PII: не зберігати зайві поля. 2. Маскування секретів у логах. 3. Service-to-service auth для adapter endpoint-ів. 4. Явна позначка `ОЦІНКА` для непідтверджених замірів.