mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-05 17:14:59 +03:00
19ad83ff0aae677c4c65db181c3d0ba68817edda
Phase 3 миграции legacy orders → домен продаж. Команда import_legacy_orders, по умолчанию DRY-RUN (только отчёт по классам, без записи). - classify_legacy_order: external / manual / pending_ambiguous; PENDING не считается продажей и требует ручного решения (§11.2) - import_legacy_order: подтверждённый Order (PAID/REFUNDED/CANCELLED) → Sale + SaleEvent(sale.legacy_imported), sales_source=null, идемпотентно по metadata.legacy_order_id; OrderItem → line_items_snapshot; fulfillment_status и legacy id — только в metadata; contact/conversation сохраняются - provision_product_sales_source: создать SalesSource(PRODUCT_API) и скопировать действующий Product.ingest_token_hash (§11 шаг 2-3) — без генерации/ротации - флаги --apply / --provision-sources / --product; команда НИКОГДА не удаляет legacy, не отключает legacy write API и не ротирует token (гейты §11 11-12) - 7 тестов (dry-run, import, идемпотентность, refund→0, PENDING-skip, provision) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Edevs Hub
Canonical implementation workspace for hub.edevs.tech.
Local start
Copy-Item .env.example .env
.\scripts\start.ps1
The local compose stack contains:
- Django ASGI backend and background worker;
- PostgreSQL;
- Redis;
- Internal Hub UI;
- Web Chat UI;
- local Nginx reverse proxy.
No production secrets are stored in the repository.
Default local URLs:
- Internal Hub UI:
http://localhost:5173 - Django admin:
http://localhost:8010/admin/ - Web Chat:
http://localhost:5175 - Backend API:
http://localhost:8010/api/v1
Local accounts (TOTP disabled). These credentials are fixed — do not change them:
- OWNER —
owner@edevs.tech/Owner-Local-2026 - OPERATOR —
a.kotova@edevs.tech/Operator-Local-2026
Bootstrap the organization and both accounts:
docker compose run --rm backend python manage.py bootstrap_owner --email owner@edevs.tech --password Owner-Local-2026 --name "Иван Петров"
Tests
All suites run in Docker, so no manual environment is required — the test runners auto-detect themselves and relax production hardening (secret-key fail-fast, SSL redirect, throttling) for the duration of the run.
Run everything (backend tests, frontend unit tests, typechecks):
.\scripts\check.ps1
Individual suites:
# Backend (pytest + pytest-django)
docker compose run --rm backend pytest
# Frontend unit tests (vitest)
docker compose run --rm internal-ui npm run test
# End-to-end (Playwright, internal-ui) — auto-starts the dev server
npx playwright install chromium # one-time
npx playwright test --project=internal-ui
Backend pytest configuration lives in apps/backend/pytest.ini (it must sit
next to manage.py so it is also visible inside the backend container).
Description
No description provided
aiai-agentcustomer-servicecustomer-supportdjangodocker-composehelpdeskknowledge-baselive-chatmaxopen-sourcepgvectorragself-hostedtelegramtelegrambot
Readme
AGPL-3.0
10 MiB
0 Stars
1 Watchers
0 Forks
Languages
Python
54.4%
TypeScript
35.6%
CSS
8.2%
Shell
0.8%
JavaScript
0.6%
Other
0.3%