mirror of
https://github.com/thecyberlearn/quantum-ai.git
synced 2026-08-18 11:52:59 +00:00
New features: - Job Posting Generator (4.00 AED): Creates professional job postings with detailed requirements, company culture integration, and SEO optimization - Social Ads Generator (7.00 AED): Creates compelling social media advertisements with platform-optimized copy and emoji support Technical improvements: - Individual agent architecture with namespaced templates - Real-time AJAX form submission without page reload - Wallet deduction only after successful processing - Platform-specific optimization (job posting: 6 platforms, social ads: 6 platforms) - Copy/download functionality for generated content - Comprehensive form validation and error handling Database changes: - Job posting specific fields: job_title, company_name, seniority_level, contract_type, location, language - Social ads specific fields: description, social_platform, include_emoji, language - Response models with structured content fields 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
65 lines
3.8 KiB
Python
65 lines
3.8 KiB
Python
# Generated by Django 5.2.4 on 2025-07-10 11:15
|
|
|
|
import django.db.models.deletion
|
|
import uuid
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
('agent_base', '0001_initial'),
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='JobPostingGeneratorRequest',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('status', models.CharField(choices=[('pending', 'Pending'), ('processing', 'Processing'), ('completed', 'Completed'), ('failed', 'Failed')], default='pending', max_length=20)),
|
|
('cost', models.DecimalField(decimal_places=2, max_digits=10)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('processed_at', models.DateTimeField(blank=True, null=True)),
|
|
('job_title', models.CharField(max_length=200)),
|
|
('company_name', models.CharField(max_length=200)),
|
|
('job_description', models.TextField()),
|
|
('seniority_level', models.CharField(choices=[('entry', 'Entry Level (0-2 years)'), ('mid', 'Mid Level (2-5 years)'), ('senior', 'Senior Level (5-8 years)'), ('lead', 'Lead/Principal (8+ years)'), ('executive', 'Executive/C-Level')], max_length=20)),
|
|
('contract_type', models.CharField(choices=[('full-time', 'Full-time'), ('part-time', 'Part-time'), ('contract', 'Contract'), ('freelance', 'Freelance'), ('internship', 'Internship')], max_length=20)),
|
|
('location', models.CharField(max_length=200)),
|
|
('language', models.CharField(choices=[('English', 'English'), ('Arabic', 'Arabic (العربية)'), ('Spanish', 'Spanish (Español)'), ('French', 'French (Français)'), ('German', 'German (Deutsch)')], default='English', max_length=20)),
|
|
('company_website', models.URLField(blank=True)),
|
|
('how_to_apply', models.TextField(blank=True)),
|
|
('agent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='agent_base.baseagent')),
|
|
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
|
],
|
|
options={
|
|
'verbose_name': 'Job Posting Generator Request',
|
|
'verbose_name_plural': 'Job Posting Generator Requests',
|
|
'db_table': 'job_posting_generator_requests',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='JobPostingGeneratorResponse',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('success', models.BooleanField(default=False)),
|
|
('error_message', models.TextField(blank=True)),
|
|
('processing_time', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('job_posting_content', models.TextField(blank=True)),
|
|
('formatted_posting', models.TextField(blank=True)),
|
|
('raw_response', models.JSONField(blank=True, default=dict)),
|
|
('request', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='response', to='job_posting_generator.jobpostinggeneratorrequest')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Job Posting Generator Response',
|
|
'verbose_name_plural': 'Job Posting Generator Responses',
|
|
'db_table': 'job_posting_generator_responses',
|
|
},
|
|
),
|
|
]
|