4.9 KiB
4.9 KiB
IGNY8 Backend Architecture (code-sourced, Dec 2025)
Purpose: backend-only view based on current code under backend/. No legacy docs or assumptions.
1) Stack & Cross-Cutting
- Django + DRF; Celery present via
backend/igny8_core/celery.pyandtasks/. - Multi-tenancy: models inherit
AccountBaseModel(tenant FKtenant_id) orSiteSectorBaseModelfor site/sector scoping (backend/igny8_core/auth/models.py). Account carries billing fields (email/address/tax_id). - Project URLs wired in
backend/igny8_core/urls.py.
2) API Namespaces (as routed)
/api/v1/auth/→igny8_core.auth.urls(auth + CSV admin helpers)./api/v1/account/→igny8_core.api.urls(account settings, team, usage analytics)./api/v1/planner/→igny8_core.modules.planner.urls(keywords, clusters, ideas ViewSets)./api/v1/writer/→igny8_core.modules.writer.urls(tasks, images, content, taxonomies ViewSets)./api/v1/system/→igny8_core.modules.system.urls(prompts, author profiles, strategies, settings: system/account/user/modules/ai, module-enable toggle, health/status/metrics, Gitea webhook, integration settings save/test/generate/progress)./api/v1/billing/→igny8_core.business.billing.urls(tenant billing: invoices, payments, credit-packages, credit-transactions, payment-methods CRUD/default, credits balance/usage/transactions; manual payment submit; available methods)./api/v1/admin/→igny8_core.modules.billing.admin_urls(billing admin: stats, user credit adjustments, credit costs, invoices/payments/pending approvals, approve/reject, payment-method configs, account payment methods CRUD/default)./api/v1/automation/→igny8_core.business.automation.urls(automation ViewSet)./api/v1/linker/→igny8_core.modules.linker.urls(linker ViewSet)./api/v1/optimizer/→igny8_core.modules.optimizer.urls(optimizer ViewSet)./api/v1/publisher/→igny8_core.modules.publisher.urls(publishing records, deployments, root publisher actions, public site definition)./api/v1/integration/→igny8_core.modules.integration.urls(integrations ViewSet + WordPress status/metadata webhooks).- OpenAPI docs:
/api/schema/,/api/docs/,/api/redoc/.
3) Key Domain Models (code references)
- Billing (
business/billing/models.py):- Invoice:
subtotal,tax,total,currency,status(draft|pending|paid|void|uncollectible), dates,line_items,stripe_invoice_id,payment_method, billing period, helperssubtotal_amount|tax_amount|total_amount. - Payment: statuses include
pending_approval,processing,completed/succeeded,failed/refunded/cancelled; methodsstripe|paypal|bank_transfer|local_wallet|manual; intent/charge ids, manual references, approvals, timestamps,failure_reason. - CreditPackage: slugged packages with
price,credits,discount_percentage, stripe/paypal ids,is_active,is_featured,sort_order,features. - CreditTransaction:
transaction_type,amount,balance_after,metadata,reference_id. - CreditUsageLog:
operation_type,credits_used, tokens/model, related object refs, metadata. - CreditCostConfig: per-operation configurable costs (admin-editable).
- AccountPaymentMethod: CRUD + default toggle; PaymentMethodConfig for availability by country/method.
- Invoice:
- Account (
auth/models.py): Account with billing fields, credits balance, status, owner, stripe_customer_id; base models enforce tenant scoping. - Other business areas (content, planning, optimization, publishing, integration) define models/services under
backend/igny8_core/business/*(models present incontent,planning,optimization,publishing,integration;linkinguses services).
4) Services & Admin Surfaces
- Billing services:
business/billing/services/invoice_service.py,payment_service.py(used by InvoiceViewSet/PaymentViewSet/admin aliases). - Admin billing aliases in
modules/billing/admin_urls.pymap toAdminBillingViewSetplus legacy stats/credit-cost endpoints. - Module enable and settings handled in
modules/system/settings_views.pyand integration settings inmodules/system/integration_views.py.
5) Automation & Tasks
- Automation API exposed via
business/automation/urls.py(AutomationViewSet). - Celery tasks scaffolded under
igny8_core/tasksandtasks.py; workers started via standard Celery entrypoints (see repo root README for commands).
6) Integration & Webhooks
- WordPress webhooks:
/api/v1/integration/webhooks/wordpress/status/,/metadata/. - Gitea webhook:
/api/v1/system/webhook/. - Public site definition:
/api/v1/publisher/sites/<site_id>/definition/.
7) Observations / gaps for follow-up
docs/user-flow/lacks flows; backend routes above should anchor those docs.- Ensure billing/admin docs use the namespaces and models listed here (avoid legacy paths). Data shape examples still need to be added alongside serializers.