65 lines
2.0 KiB
Markdown
65 lines
2.0 KiB
Markdown
# Data Models
|
|
|
|
The following data models will be implemented using SQLAlchemy.
|
|
|
|
## 1. User
|
|
|
|
**Purpose**: Stores user credentials and role information.
|
|
|
|
**Key Attributes**:
|
|
- `id`: Integer, Primary Key
|
|
- `username`: String, Unique, Not Null
|
|
- `hashed_password`: String, Not Null
|
|
- `role`: String, Not Null ("Admin" or "User")
|
|
|
|
**Relationships**: A User can have many Projects.
|
|
|
|
## 2. Project
|
|
|
|
**Purpose**: Represents a single content generation job initiated from a CORA report.
|
|
|
|
**Key Attributes**:
|
|
- `id`: Integer, Primary Key
|
|
- `user_id`: Integer, Foreign Key to User
|
|
- `project_name`: String, Not Null
|
|
- `cora_data`: JSON (stores extracted keywords, entities, etc.)
|
|
- `status`: String (e.g., "Pending", "Generating", "Complete")
|
|
|
|
**Relationships**: A Project belongs to one User and has many GeneratedContents.
|
|
|
|
## 3. GeneratedContent
|
|
|
|
**Purpose**: Stores the AI-generated content from the three-stage pipeline.
|
|
|
|
**Key Attributes**:
|
|
- `id`: Integer, Primary Key, Auto-increment
|
|
- `project_id`: Integer, Foreign Key to Project, Indexed
|
|
- `tier`: String(20), Not Null, Indexed (tier1, tier2, tier3)
|
|
- `keyword`: String(255), Not Null, Indexed
|
|
- `title`: Text, Not Null (Generated in stage 1)
|
|
- `outline`: JSON, Not Null (Generated in stage 2)
|
|
- `content`: Text, Not Null (HTML fragment from stage 3)
|
|
- `word_count`: Integer, Not Null (Validated word count)
|
|
- `status`: String(20), Not Null (generated, augmented, failed)
|
|
- `created_at`: DateTime, Not Null
|
|
- `updated_at`: DateTime, Not Null
|
|
|
|
**Relationships**: Belongs to one Project.
|
|
|
|
**Status Values**:
|
|
- `generated`: Content was successfully generated within word count range
|
|
- `augmented`: Content was below minimum and was augmented
|
|
- `failed`: Generation failed (error details in outline JSON)
|
|
|
|
## 4. FqdnMapping
|
|
|
|
**Purpose**: Maps cloud storage buckets to fully qualified domain names for URL generation.
|
|
|
|
**Key Attributes**:
|
|
- `id`: Integer, Primary Key
|
|
- `bucket_name`: String, Not Null
|
|
- `provider`: String, Not Null (e.g., "aws", "bunny", "azure")
|
|
- `fqdn`: String, Not Null
|
|
|
|
**Relationships**: None.
|