99 lines
3.4 KiB
Markdown
99 lines
3.4 KiB
Markdown
# Project Schema Update Summary
|
|
|
|
## New Fields Added to Project Model
|
|
|
|
The project database schema has been updated to include three new required fields:
|
|
|
|
### 1. Code Name (`code_name`)
|
|
- **Type**: String (VARCHAR)
|
|
- **Constraints**: NOT NULL, UNIQUE, Indexed
|
|
- **Purpose**: Unique project identifier/code (e.g., "PROJ_001", "MARVEL_THOR_2024")
|
|
- **Validation**: 1-50 characters, must be unique across all projects
|
|
|
|
### 2. Client Name (`client_name`)
|
|
- **Type**: String (VARCHAR)
|
|
- **Constraints**: NOT NULL, Indexed
|
|
- **Purpose**: Name of the client or studio commissioning the project
|
|
- **Validation**: 1-255 characters
|
|
|
|
### 3. Project Type (`project_type`)
|
|
- **Type**: Enum
|
|
- **Values**:
|
|
- `tv` - TV Series/Shows
|
|
- `cinema` - Cinema/Film projects
|
|
- `game` - Game development projects
|
|
- **Constraints**: NOT NULL
|
|
- **Purpose**: Categorize projects by production type for better organization
|
|
|
|
## Database Migration
|
|
|
|
A migration script (`migrate_project_fields.py`) was created and executed to:
|
|
- Add the new columns to existing `projects` table
|
|
- Set default values for existing projects:
|
|
- `code_name`: Generated from project name + ID (e.g., "PROJECT_NAME_001")
|
|
- `client_name`: Set to "Default Client"
|
|
- `project_type`: Set to "tv"
|
|
- Create unique index on `code_name` field
|
|
|
|
## Backend Changes
|
|
|
|
### Models (`models/project.py`)
|
|
- Added `ProjectType` enum with TV, Cinema, Game values
|
|
- Updated `Project` model with new fields
|
|
- Added proper column constraints and indexing
|
|
|
|
### Schemas (`schemas/project.py`)
|
|
- Updated `ProjectBase`, `ProjectCreate`, `ProjectUpdate` schemas
|
|
- Added field validation and descriptions
|
|
- Updated response schemas to include new fields
|
|
|
|
### API Endpoints (`routers/projects.py`)
|
|
- Added validation for unique `code_name` constraint
|
|
- Enhanced error handling for duplicate code names
|
|
- Updated create/update endpoints to handle new fields
|
|
|
|
## Frontend Changes
|
|
|
|
### Services (`services/project.ts`)
|
|
- Updated `Project`, `ProjectCreate`, `ProjectUpdate` interfaces
|
|
- Added new fields with proper TypeScript types
|
|
|
|
### Stores (`stores/projects.ts`)
|
|
- Enhanced icon assignment logic to use `project_type` field
|
|
- Updated project filtering and organization
|
|
|
|
### UI (`views/ProjectsView.vue`)
|
|
- Added form fields for code name, client name, and project type
|
|
- Enhanced project cards to display new information
|
|
- Updated search functionality to include new fields
|
|
- Added project type formatting helper
|
|
|
|
## Benefits
|
|
|
|
1. **Better Organization**: Projects can now be categorized by type (TV, Cinema, Game)
|
|
2. **Unique Identification**: Code names provide consistent project references
|
|
3. **Client Tracking**: Clear client/studio association for each project
|
|
4. **Enhanced Search**: Users can search by code name, client name, or project type
|
|
5. **Visual Indicators**: Project cards show type badges and client information
|
|
6. **Industry Standards**: Aligns with common VFX production workflows
|
|
|
|
## Usage Examples
|
|
|
|
### Creating a New Project
|
|
```json
|
|
{
|
|
"name": "Marvel Thor: Love and Thunder",
|
|
"code_name": "MARVEL_THOR_2024",
|
|
"client_name": "Marvel Studios",
|
|
"project_type": "cinema",
|
|
"description": "VFX work for Thor sequel",
|
|
"status": "planning"
|
|
}
|
|
```
|
|
|
|
### Project Types
|
|
- **TV**: Series, shows, streaming content
|
|
- **Cinema**: Feature films, movies
|
|
- **Game**: Video game cinematics, in-game VFX
|
|
|
|
The schema update maintains backward compatibility while adding essential production management features commonly used in the VFX industry. |