Base code

This commit is contained in:
Kunthawat Greethong
2026-01-08 22:39:53 +07:00
parent 697115c61a
commit c35fa52117
2169 changed files with 626670 additions and 0 deletions

View File

@@ -0,0 +1,164 @@
"""
Enhanced Persona Database Models
Improved schema for better writing style mimicry and quality tracking.
"""
from sqlalchemy import Column, Integer, String, Text, DateTime, Float, JSON, ForeignKey, Boolean, Index
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from datetime import datetime
Base = declarative_base()
class EnhancedWritingPersona(Base):
"""Enhanced writing persona model with improved linguistic analysis."""
__tablename__ = "enhanced_writing_personas"
# Primary fields
id = Column(Integer, primary_key=True)
user_id = Column(Integer, nullable=False, index=True)
persona_name = Column(String(255), nullable=False)
# Core Identity
archetype = Column(String(100), nullable=True)
core_belief = Column(Text, nullable=True)
brand_voice_description = Column(Text, nullable=True)
# Enhanced Linguistic Fingerprint
linguistic_fingerprint = Column(JSON, nullable=True) # More detailed analysis
writing_style_signature = Column(JSON, nullable=True) # Unique style markers
vocabulary_profile = Column(JSON, nullable=True) # Detailed vocabulary analysis
sentence_patterns = Column(JSON, nullable=True) # Sentence structure patterns
rhetorical_style = Column(JSON, nullable=True) # Rhetorical device preferences
# Quality Metrics
style_consistency_score = Column(Float, nullable=True) # 0-100
authenticity_score = Column(Float, nullable=True) # 0-100
readability_score = Column(Float, nullable=True) # 0-100
engagement_potential = Column(Float, nullable=True) # 0-100
# Learning & Adaptation
feedback_history = Column(JSON, nullable=True) # User feedback over time
performance_metrics = Column(JSON, nullable=True) # Content performance data
adaptation_history = Column(JSON, nullable=True) # How persona evolved
# Source data tracking
onboarding_session_id = Column(Integer, nullable=True)
source_website_analysis = Column(JSON, nullable=True)
source_research_preferences = Column(JSON, nullable=True)
# AI Analysis metadata
ai_analysis_version = Column(String(50), nullable=True)
confidence_score = Column(Float, nullable=True)
analysis_date = Column(DateTime, default=datetime.utcnow)
# Metadata
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
is_active = Column(Boolean, default=True)
# Indexes for performance
__table_args__ = (
Index('idx_user_active', 'user_id', 'is_active'),
Index('idx_created_at', 'created_at'),
)
class EnhancedPlatformPersona(Base):
"""Enhanced platform-specific persona with detailed optimization."""
__tablename__ = "enhanced_platform_personas"
# Primary fields
id = Column(Integer, primary_key=True)
writing_persona_id = Column(Integer, ForeignKey("enhanced_writing_personas.id"), nullable=False)
platform_type = Column(String(50), nullable=False, index=True)
# Enhanced Platform-specific Analysis
platform_linguistic_adaptation = Column(JSON, nullable=True) # How language adapts to platform
platform_engagement_patterns = Column(JSON, nullable=True) # Detailed engagement analysis
platform_content_optimization = Column(JSON, nullable=True) # Content optimization rules
platform_algorithm_insights = Column(JSON, nullable=True) # Algorithm-specific insights
# Performance Tracking
content_performance_history = Column(JSON, nullable=True) # Historical performance data
engagement_metrics = Column(JSON, nullable=True) # Engagement statistics
optimization_suggestions = Column(JSON, nullable=True) # AI-generated optimization tips
# Quality Assurance
platform_compliance_score = Column(Float, nullable=True) # 0-100
optimization_effectiveness = Column(Float, nullable=True) # 0-100
# Metadata
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
is_active = Column(Boolean, default=True)
# Relationships
writing_persona = relationship("EnhancedWritingPersona", back_populates="platform_personas")
# Indexes
__table_args__ = (
Index('idx_platform_active', 'platform_type', 'is_active'),
Index('idx_persona_platform', 'writing_persona_id', 'platform_type'),
)
class PersonaQualityMetrics(Base):
"""Tracks persona quality and improvement over time."""
__tablename__ = "persona_quality_metrics"
id = Column(Integer, primary_key=True)
writing_persona_id = Column(Integer, ForeignKey("enhanced_writing_personas.id"), nullable=False)
platform_persona_id = Column(Integer, ForeignKey("enhanced_platform_personas.id"), nullable=True)
# Quality Scores
style_accuracy = Column(Float, nullable=True) # How well it mimics user style
content_quality = Column(Float, nullable=True) # Overall content quality
engagement_rate = Column(Float, nullable=True) # Engagement performance
consistency_score = Column(Float, nullable=True) # Consistency across content
# User Feedback
user_satisfaction = Column(Float, nullable=True) # User rating
user_feedback = Column(Text, nullable=True) # Qualitative feedback
improvement_requests = Column(JSON, nullable=True) # Specific improvement requests
# AI Analysis
ai_quality_assessment = Column(JSON, nullable=True) # AI's quality analysis
improvement_suggestions = Column(JSON, nullable=True) # AI suggestions for improvement
# Metadata
assessment_date = Column(DateTime, default=datetime.utcnow)
assessor_type = Column(String(50), nullable=True) # user, ai, automated
# Relationships
writing_persona = relationship("EnhancedWritingPersona")
platform_persona = relationship("EnhancedPlatformPersona")
class PersonaLearningData(Base):
"""Stores learning data for persona improvement."""
__tablename__ = "persona_learning_data"
id = Column(Integer, primary_key=True)
writing_persona_id = Column(Integer, ForeignKey("enhanced_writing_personas.id"), nullable=False)
# Learning Inputs
user_writing_samples = Column(JSON, nullable=True) # Additional user writing samples
successful_content_examples = Column(JSON, nullable=True) # High-performing content
user_preferences = Column(JSON, nullable=True) # User preferences and adjustments
# Learning Outputs
style_refinements = Column(JSON, nullable=True) # Refinements made to persona
vocabulary_updates = Column(JSON, nullable=True) # Vocabulary additions/removals
pattern_adjustments = Column(JSON, nullable=True) # Pattern adjustments
# Metadata
learning_date = Column(DateTime, default=datetime.utcnow)
learning_type = Column(String(50), nullable=True) # feedback, sample, preference
# Relationships
writing_persona = relationship("EnhancedWritingPersona")
# Add relationships
EnhancedWritingPersona.platform_personas = relationship("EnhancedPlatformPersona", back_populates="writing_persona", cascade="all, delete-orphan")