|
|
|
|
@@ -1,6 +1,8 @@
|
|
|
|
|
# Database Models Reference
|
|
|
|
|
|
|
|
|
|
**Last Verified:** January 6, 2026
|
|
|
|
|
**Last Verified:** January 20, 2026
|
|
|
|
|
**Version:** 1.8.4
|
|
|
|
|
**Total Models:** 52+
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
@@ -8,14 +10,32 @@
|
|
|
|
|
|
|
|
|
|
| Scope | Models | Base Class | Filter By |
|
|
|
|
|
|-------|--------|------------|-----------|
|
|
|
|
|
| **Global** | `IntegrationProvider`, `AIModelConfig`, `SystemAISettings`, `GlobalAIPrompt`, `GlobalAuthorProfile`, `GlobalStrategy`, `GlobalModuleSettings`, `Industry`, `SeedKeyword` | `models.Model` | None (platform-wide) |
|
|
|
|
|
| **Account** | `Account`, `User`, `Plan`, `AccountSettings`, `ModuleEnableSettings`, `AISettings`, `AIPrompt`, `AuthorProfile`, `CreditBalance` | `AccountBaseModel` | `account` |
|
|
|
|
|
| **Site** | `Site`, `PublishingSettings`, `AutomationConfig`, `SiteIntegration` | `AccountBaseModel` | `account`, `site` |
|
|
|
|
|
| **Site+Sector** | `Keywords`, `Clusters`, `ContentIdeas`, `Tasks`, `Content`, `Images` | `SiteSectorBaseModel` | `site`, `sector` |
|
|
|
|
|
| **Global** | `IntegrationProvider`, `AIModelConfig`, `SystemAISettings`, `GlobalAIPrompt`, `GlobalAuthorProfile`, `GlobalStrategy`, `GlobalModuleSettings`, `Industry`, `IndustrySector`, `SeedKeyword` | `models.Model` | None (platform-wide) |
|
|
|
|
|
| **Account** | `Account`, `User`, `Plan`, `Subscription`, `AccountSettings`, `ModuleEnableSettings`, `AISettings`, `AIPrompt`, `AuthorProfile`, `CreditBalance`, `PasswordResetToken` | `AccountBaseModel` | `account` |
|
|
|
|
|
| **Site** | `Site`, `PublishingSettings`, `AutomationConfig`, `DefaultAutomationConfig`, `AutomationRun`, `SiteIntegration`, `SiteUserAccess` | `AccountBaseModel` | `account`, `site` |
|
|
|
|
|
| **Site+Sector** | `Keywords`, `Clusters`, `ContentIdeas`, `Tasks`, `Content`, `Images`, `ContentTaxonomyRelation` | `SiteSectorBaseModel` | `site`, `sector` |
|
|
|
|
|
| **Billing** | `CreditCostConfig`, `BillingConfiguration`, `CreditPackage`, `PaymentMethodConfig`, `WebhookEvent` | `models.Model` | varies |
|
|
|
|
|
| **System** | `SystemSettings`, `UserSettings`, `EmailSettings`, `EmailTemplate`, `EmailLog` | `models.Model` | varies |
|
|
|
|
|
| **Plugins** | `Plugin`, `PluginVersion`, `PluginInstallation`, `PluginDownload` | `models.Model` | varies |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## System Models (v1.4.0) (`igny8_core/modules/system/`)
|
|
|
|
|
## Model Count by Location
|
|
|
|
|
|
|
|
|
|
| Location | Count | Models |
|
|
|
|
|
|----------|-------|--------|
|
|
|
|
|
| `auth/models.py` | 10 | Account, User, Plan, Subscription, Industry, IndustrySector, SeedKeyword, Site, SiteUserAccess, PasswordResetToken |
|
|
|
|
|
| `modules/system/` | 10 | IntegrationProvider, SystemAISettings, SystemSettings, UserSettings, EmailSettings, EmailTemplate, EmailLog, GlobalAIPrompt, GlobalAuthorProfile, GlobalStrategy |
|
|
|
|
|
| `business/automation/` | 3 | DefaultAutomationConfig, AutomationConfig, AutomationRun |
|
|
|
|
|
| `business/billing/` | 6 | CreditCostConfig, BillingConfiguration, CreditPackage, PaymentMethodConfig, AIModelConfig, WebhookEvent |
|
|
|
|
|
| `business/content/` | 1 | ContentTaxonomyRelation |
|
|
|
|
|
| `plugins/` | 4 | Plugin, PluginVersion, PluginInstallation, PluginDownload |
|
|
|
|
|
| `modules/planner/` | 3 | Keywords, Clusters, ContentIdeas |
|
|
|
|
|
| `modules/writer/` | 3 | Tasks, Content, Images |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## System Models (v1.4.0+) (`igny8_core/modules/system/`)
|
|
|
|
|
|
|
|
|
|
**Purpose:** Centralized AI configuration, provider API keys, and system-wide defaults.
|
|
|
|
|
|
|
|
|
|
@@ -361,17 +381,15 @@ class Keyword(models.Model):
|
|
|
|
|
difficulty = IntegerField(null=True)
|
|
|
|
|
cpc = DecimalField(null=True)
|
|
|
|
|
|
|
|
|
|
status = CharField(choices=KEYWORD_STATUS) # pending, clustered, used, archived
|
|
|
|
|
status = CharField(choices=KEYWORD_STATUS) # new, mapped
|
|
|
|
|
|
|
|
|
|
created_by = ForeignKey(User)
|
|
|
|
|
created_at = DateTimeField(auto_now_add=True)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**Status Values:**
|
|
|
|
|
- `pending` - New, awaiting clustering
|
|
|
|
|
- `clustered` - Assigned to a cluster
|
|
|
|
|
- `used` - Used in content idea
|
|
|
|
|
- `archived` - No longer active
|
|
|
|
|
- `new` - Ready for clustering
|
|
|
|
|
- `mapped` - Assigned to a cluster
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
@@ -433,8 +451,7 @@ class Task(models.Model):
|
|
|
|
|
primary_keyword = CharField(max_length=255)
|
|
|
|
|
secondary_keywords = JSONField(default=list)
|
|
|
|
|
|
|
|
|
|
status = CharField(choices=TASK_STATUS) # pending, in_progress, completed, cancelled
|
|
|
|
|
priority = CharField(choices=PRIORITY) # low, medium, high
|
|
|
|
|
status = CharField(choices=TASK_STATUS) # queued, completed
|
|
|
|
|
|
|
|
|
|
assigned_to = ForeignKey(User, null=True)
|
|
|
|
|
due_date = DateField(null=True)
|
|
|
|
|
|