docs re-org

This commit is contained in:
IGNY8 VPS (Salman)
2025-12-09 13:26:35 +00:00
parent 4d13a57068
commit 6a4f95c35a
231 changed files with 11353 additions and 31152 deletions

View File

@@ -0,0 +1,68 @@
# Writer Endpoints
## Purpose
Document writer API endpoints for tasks, content, images, and taxonomies, including bulk actions and AI content generation triggers.
## Code Locations (exact paths)
- Routing: `backend/igny8_core/modules/writer/urls.py`
- Views: `backend/igny8_core/modules/writer/views.py`
- Serializers: `backend/igny8_core/modules/writer/serializers.py`
- Services: `backend/igny8_core/business/content/services/content_generation_service.py`
## High-Level Responsibilities
- CRUD for writer entities scoped by account/site/sector.
- Provide bulk operations and AI content generation for tasks.
- Manage images and taxonomy terms linked to content/tasks.
## Detailed Behavior
- Base path: `/api/v1/writer/`
- Viewsets (inherit `SiteSectorModelViewSet`, throttled `writer`, paginated):
- `TasksViewSet` (`/tasks/`):
- Filters: status, cluster_id, content_type, content_structure; search title/keywords; ordering by title/created_at/status.
- Bulk: `bulk_delete`, `bulk_update` (status).
- `auto_generate_content`: accepts task IDs (max 10), requires account, enforces credit checks via `ContentGenerationService`, returns async task_id or synchronous result; 402 on insufficient credits.
- Create requires site_id/sector_id; validates site/sector alignment; sets account/site/sector explicitly.
- `ImagesViewSet` (`/images/`):
- Filters: task_id, content_id, image_type, status; ordering by created_at/position/id.
- perform_create enforces site/sector presence (from request or defaults), sets account/site/sector; serves local files via `file` action with existence checks.
- `ContentViewSet` (`/content/`):
- Filters/order/search defined in viewset (titles, status, etc.); manages taxonomy relationships; exposes status, SEO fields, cluster link, external IDs/URLs.
- `ContentTaxonomyViewSet` (`/taxonomies/`):
- CRUD for taxonomy terms (category/tag) scoped to site/sector.
- Serializers enforce required fields on create (e.g., cluster/content_type/content_structure for tasks; site/sector for content) and expose read-only derived fields (cluster/sector names, image/taxonomy info).
- Error handling: unified responses; validation errors return 400; missing resources return 404; `auto_generate_content` can return 402/500 on credits/other errors.
## Data Structures / Models Involved (no code)
- `Tasks`, `Content`, `Images`, `ContentTaxonomy`, and related domain models; `Account`, `Site`, `Sector`.
## Execution Flow
- Requests → DRF auth → base viewset filtering (account/site/sector) → serializer validation → model save → unified response; bulk/AI actions invoke services.
## Cross-Module Interactions
- Planner clusters/ideas feed tasks; automation stages 36 operate on writer data; publishing/integration uses content/taxonomies/images.
- Billing credits enforced during AI content generation via `ContentGenerationService`.
## State Transitions
- Tasks: `queued``completed`; Content: `draft``review``published`; Images: `pending``generated`.
## Error Handling
- Standard unified responses; credit errors mapped to 402 in `auto_generate_content`; file serving returns 404 for missing images.
## Tenancy Rules
- All endpoints scoped to account/site/sector; base viewset and permissions enforce access; admin/developer/system may bypass filtering but records retain tenant/site/sector fields.
## Billing Rules
- AI generation actions check/deduct credits via billing services; other CRUD does not alter credits.
## Background Tasks / Schedulers
- `auto_generate_content` may enqueue Celery AI tasks when returning task_id; automation uses writer endpoints indirectly via services.
## Key Design Considerations
- Strict site/sector validation on create; max 10 tasks per auto_generate_content to manage load/credits.
- Image file serving is permissive but guarded by existence checks.
## How Developers Should Work With This Module
- Supply site_id/sector_id on create; use bulk actions for batch changes.
- When extending AI flows, keep credit checks and account/site scoping intact.
- Reuse existing viewsets/serializers for new fields; ensure filters/throttles stay aligned with module scope.