Backs the schema added in 210d310 with SQLAlchemy 2.0 models.
- SessionFact: "What we know" facts with polymorphic source_ref pointing
at task-lane item UUIDs inside ai_sessions.pending_task_lane (not a FK
per Section 4.2).
- SessionSuggestedFix: AI-proposed resolutions with supersession tracking
and the full user_decision state machine.
- DraftTemplate: post-resolve templatization queue with promotion to
script_templates.
- AccountSettings: per-account JSONB preferences grab-bag with async
classmethod helpers — get_setting(db, account_id, key, default) reads
without creating, set_setting(db, account_id, key, value) upserts via
Postgres ON CONFLICT + jsonb `||` merge so existing keys are preserved.
Lazy row creation matches the Phase 1 design.
Column additions on existing models to mirror the migration:
- AISession: resolution_note_* / escalation_package_* / state_version
(the preview-cache-invalidation counter consumed by Phase 3).
- ScriptTemplate: source_session_id / source_user_id / source_ticket_ref
(provenance for templates promoted from DraftTemplate).
All four new models registered in app.models.__init__ and __all__.
TYPE_CHECKING-guarded relationship imports throughout, matching the
repo's existing model style.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
142 lines
4.2 KiB
Python
142 lines
4.2 KiB
Python
from .user import User
|
|
from .team import Team
|
|
from .account import Account
|
|
from .subscription import Subscription
|
|
from .plan_limits import PlanLimits
|
|
from .account_invite import AccountInvite
|
|
from .tree import Tree
|
|
from .tree_share import TreeShare
|
|
from .session import Session
|
|
from .attachment import Attachment
|
|
from .invite_code import InviteCode
|
|
from .category import TreeCategory
|
|
from .tag import TreeTag, tree_tag_assignments
|
|
from .folder import UserFolder, user_folder_trees
|
|
from .step_category import StepCategory
|
|
from .step_library import StepLibrary, StepRating, StepUsageLog
|
|
from .refresh_token import RefreshToken
|
|
from .audit_log import AuditLog
|
|
from .password_reset_token import PasswordResetToken
|
|
from .session_share import SessionShare, SessionShareView
|
|
from .session_rating import SessionRating
|
|
from .account_limit_override import AccountLimitOverride
|
|
from .feature_flag import FeatureFlag, PlanFeatureDefault, AccountFeatureOverride
|
|
from .platform_setting import PlatformSetting
|
|
from .user_pinned_tree import UserPinnedTree
|
|
from .target_list import TargetList
|
|
from .maintenance_schedule import MaintenanceSchedule
|
|
from .feedback import Feedback
|
|
from .ai_conversation import AIConversation
|
|
from .ai_usage import AIUsage
|
|
from .ai_chat_session import AIChatSession
|
|
from .tree_embedding import TreeEmbedding
|
|
from .copilot_conversation import CopilotConversation
|
|
from .assistant_chat import AssistantChat
|
|
from .survey_response import SurveyResponse
|
|
from .survey_invite import SurveyInvite
|
|
from .kb_import import KBImport, KBImportNode
|
|
from .script_template import ScriptCategory, ScriptTemplate, ScriptGeneration
|
|
from .ai_session import AISession
|
|
from .ai_session_step import AISessionStep
|
|
from .psa_connection import PsaConnection
|
|
from .psa_post_log import PsaPostLog
|
|
from .psa_member_mapping import PsaMemberMapping
|
|
from .supporting_data import SessionSupportingData
|
|
from .flow_proposal import FlowProposal
|
|
from .notification_config import NotificationConfig
|
|
from .notification_log import NotificationLog
|
|
from .notification import Notification
|
|
from .psa_activity_log import PsaActivityLog
|
|
from .file_upload import FileUpload
|
|
from .ai_session_embedding import AISessionEmbedding
|
|
from .beta_feedback import BetaFeedback
|
|
from .session_branch import SessionBranch
|
|
from .fork_point import ForkPoint
|
|
from .session_handoff import SessionHandoff
|
|
from .session_resolution_output import SessionResolutionOutput
|
|
from .template_tree import TemplateTree
|
|
from .platform_step import PlatformStep
|
|
from .device_type import DeviceType
|
|
from .network_diagram import NetworkDiagram
|
|
from .session_fact import SessionFact
|
|
from .session_suggested_fix import SessionSuggestedFix
|
|
from .draft_template import DraftTemplate
|
|
from .account_settings import AccountSettings
|
|
|
|
__all__ = [
|
|
"User",
|
|
"Team",
|
|
"Account",
|
|
"Subscription",
|
|
"PlanLimits",
|
|
"AccountInvite",
|
|
"Tree",
|
|
"TreeShare",
|
|
"Session",
|
|
"Attachment",
|
|
"InviteCode",
|
|
"TreeCategory",
|
|
"TreeTag",
|
|
"tree_tag_assignments",
|
|
"UserFolder",
|
|
"user_folder_trees",
|
|
"StepCategory",
|
|
"StepLibrary",
|
|
"StepRating",
|
|
"StepUsageLog",
|
|
"RefreshToken",
|
|
"AuditLog",
|
|
"PasswordResetToken",
|
|
"SessionShare",
|
|
"SessionShareView",
|
|
"SessionRating",
|
|
"AccountLimitOverride",
|
|
"FeatureFlag",
|
|
"PlanFeatureDefault",
|
|
"AccountFeatureOverride",
|
|
"PlatformSetting",
|
|
"UserPinnedTree",
|
|
"TargetList",
|
|
"MaintenanceSchedule",
|
|
"Feedback",
|
|
"AIConversation",
|
|
"AIUsage",
|
|
"AIChatSession",
|
|
"TreeEmbedding",
|
|
"CopilotConversation",
|
|
"AssistantChat",
|
|
"SurveyResponse",
|
|
"SurveyInvite",
|
|
"KBImport",
|
|
"KBImportNode",
|
|
"ScriptCategory",
|
|
"ScriptTemplate",
|
|
"ScriptGeneration",
|
|
"AISession",
|
|
"AISessionStep",
|
|
"PsaConnection",
|
|
"PsaPostLog",
|
|
"PsaMemberMapping",
|
|
"SessionSupportingData",
|
|
"FlowProposal",
|
|
"NotificationConfig",
|
|
"NotificationLog",
|
|
"Notification",
|
|
"PsaActivityLog",
|
|
"FileUpload",
|
|
"AISessionEmbedding",
|
|
"BetaFeedback",
|
|
"SessionBranch",
|
|
"ForkPoint",
|
|
"SessionHandoff",
|
|
"SessionResolutionOutput",
|
|
"TemplateTree",
|
|
"PlatformStep",
|
|
"DeviceType",
|
|
"NetworkDiagram",
|
|
"SessionFact",
|
|
"SessionSuggestedFix",
|
|
"DraftTemplate",
|
|
"AccountSettings",
|
|
]
|