- ensure very long chunks get split into smaller chunks - ensure TrackedMistralAIEmbedding is batched if needed to ensure correct execution - upgraded some of the packages to a higher version
115 lines
5.7 KiB
Python
115 lines
5.7 KiB
Python
from common.extensions import db
|
|
|
|
|
|
class BusinessEventLog(db.Model):
|
|
__bind_key__ = 'public'
|
|
__table_args__ = {'schema': 'public'}
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
timestamp = db.Column(db.DateTime, nullable=False)
|
|
event_type = db.Column(db.String(50), nullable=False)
|
|
tenant_id = db.Column(db.Integer, nullable=False)
|
|
trace_id = db.Column(db.String(50), nullable=False)
|
|
span_id = db.Column(db.String(50))
|
|
span_name = db.Column(db.String(255))
|
|
parent_span_id = db.Column(db.String(50))
|
|
document_version_id = db.Column(db.Integer)
|
|
document_version_file_size = db.Column(db.Float)
|
|
specialist_id = db.Column(db.Integer)
|
|
specialist_type = db.Column(db.String(50))
|
|
specialist_type_version = db.Column(db.String(20))
|
|
chat_session_id = db.Column(db.String(50))
|
|
interaction_id = db.Column(db.Integer)
|
|
environment = db.Column(db.String(20))
|
|
llm_metrics_total_tokens = db.Column(db.Integer)
|
|
llm_metrics_prompt_tokens = db.Column(db.Integer)
|
|
llm_metrics_completion_tokens = db.Column(db.Integer)
|
|
llm_metrics_total_time = db.Column(db.Float)
|
|
llm_metrics_nr_of_pages = db.Column(db.Integer)
|
|
llm_metrics_call_count = db.Column(db.Integer)
|
|
llm_interaction_type = db.Column(db.String(20))
|
|
message = db.Column(db.Text)
|
|
license_usage_id = db.Column(db.Integer, db.ForeignKey('public.license_usage.id'), nullable=True)
|
|
license_usage = db.relationship('LicenseUsage', backref='events')
|
|
|
|
|
|
class License(db.Model):
|
|
__bind_key__ = 'public'
|
|
__table_args__ = {'schema': 'public'}
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
tenant_id = db.Column(db.Integer, db.ForeignKey('public.tenant.id'), nullable=False)
|
|
tier_id = db.Column(db.Integer, db.ForeignKey('public.license_tier.id'),nullable=False) # 'small', 'medium', 'custom'
|
|
start_date = db.Column(db.Date, nullable=False)
|
|
end_date = db.Column(db.Date, nullable=True)
|
|
currency = db.Column(db.String(20), nullable=False)
|
|
yearly_payment = db.Column(db.Boolean, nullable=False, default=False)
|
|
basic_fee = db.Column(db.Float, nullable=False)
|
|
max_storage_mb = db.Column(db.Integer, nullable=False)
|
|
additional_storage_price = db.Column(db.Float, nullable=False)
|
|
additional_storage_bucket = db.Column(db.Integer, nullable=False)
|
|
included_embedding_mb = db.Column(db.Integer, nullable=False)
|
|
additional_embedding_price = db.Column(db.Numeric(10, 4), nullable=False)
|
|
additional_embedding_bucket = db.Column(db.Integer, nullable=False)
|
|
included_interaction_tokens = db.Column(db.Integer, nullable=False)
|
|
additional_interaction_token_price = db.Column(db.Numeric(10, 4), nullable=False)
|
|
additional_interaction_bucket = db.Column(db.Integer, nullable=False)
|
|
overage_embedding = db.Column(db.Float, nullable=False, default=0)
|
|
overage_interaction = db.Column(db.Float, nullable=False, default=0)
|
|
|
|
tenant = db.relationship('Tenant', back_populates='licenses')
|
|
license_tier = db.relationship('LicenseTier', back_populates='licenses')
|
|
usages = db.relationship('LicenseUsage', order_by='LicenseUsage.period_start_date', back_populates='license')
|
|
|
|
|
|
class LicenseTier(db.Model):
|
|
__bind_key__ = 'public'
|
|
__table_args__ = {'schema': 'public'}
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
name = db.Column(db.String(50), nullable=False)
|
|
version = db.Column(db.String(50), nullable=False)
|
|
start_date = db.Column(db.Date, nullable=False)
|
|
end_date = db.Column(db.Date, nullable=True)
|
|
basic_fee_d = db.Column(db.Float, nullable=True)
|
|
basic_fee_e = db.Column(db.Float, nullable=True)
|
|
max_storage_mb = db.Column(db.Integer, nullable=False)
|
|
additional_storage_price_d = db.Column(db.Numeric(10, 4), nullable=False)
|
|
additional_storage_price_e = db.Column(db.Numeric(10, 4), nullable=False)
|
|
additional_storage_bucket = db.Column(db.Integer, nullable=False)
|
|
included_embedding_mb = db.Column(db.Integer, nullable=False)
|
|
additional_embedding_price_d = db.Column(db.Numeric(10, 4), nullable=False)
|
|
additional_embedding_price_e = db.Column(db.Numeric(10, 4), nullable=False)
|
|
additional_embedding_bucket = db.Column(db.Integer, nullable=False)
|
|
included_interaction_tokens = db.Column(db.Integer, nullable=False)
|
|
additional_interaction_token_price_d = db.Column(db.Numeric(10, 4), nullable=False)
|
|
additional_interaction_token_price_e = db.Column(db.Numeric(10, 4), nullable=False)
|
|
additional_interaction_bucket = db.Column(db.Integer, nullable=False)
|
|
standard_overage_embedding = db.Column(db.Float, nullable=False, default=0)
|
|
standard_overage_interaction = db.Column(db.Float, nullable=False, default=0)
|
|
|
|
licenses = db.relationship('License', back_populates='license_tier')
|
|
|
|
|
|
class LicenseUsage(db.Model):
|
|
__bind_key__ = 'public'
|
|
__table_args__ = {'schema': 'public'}
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
license_id = db.Column(db.Integer, db.ForeignKey('public.license.id'), nullable=False)
|
|
tenant_id = db.Column(db.Integer, db.ForeignKey('public.tenant.id'), nullable=False)
|
|
storage_mb_used = db.Column(db.Float, default=0)
|
|
embedding_mb_used = db.Column(db.Float, default=0)
|
|
embedding_prompt_tokens_used = db.Column(db.Integer, default=0)
|
|
embedding_completion_tokens_used = db.Column(db.Integer, default=0)
|
|
embedding_total_tokens_used = db.Column(db.Integer, default=0)
|
|
interaction_prompt_tokens_used = db.Column(db.Integer, default=0)
|
|
interaction_completion_tokens_used = db.Column(db.Integer, default=0)
|
|
interaction_total_tokens_used = db.Column(db.Integer, default=0)
|
|
period_start_date = db.Column(db.Date, nullable=False)
|
|
period_end_date = db.Column(db.Date, nullable=False)
|
|
|
|
license = db.relationship('License', back_populates='usages')
|
|
|
|
|