132 lines
4.3 KiB
Python
132 lines
4.3 KiB
Python
"""035_create_chat_log
|
|
|
|
Revision ID: 68a06302cf70
|
|
Revises: 29559ee607af
|
|
Create Date: 2025-08-18 16:02:43.353110
|
|
|
|
"""
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
import sqlmodel.sql.sqltypes
|
|
from sqlalchemy.dialects import postgresql
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision = '68a06302cf70'
|
|
down_revision = '646e7ca28e0e'
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
sql='''
|
|
CREATE OR REPLACE FUNCTION safe_jsonb_cast(text) RETURNS jsonb AS
|
|
$$
|
|
BEGIN
|
|
RETURN $1::jsonb;
|
|
EXCEPTION
|
|
WHEN others THEN
|
|
RETURN to_json($1::text)::jsonb;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
INSERT INTO chat_log(type, operate, pid, ai_modal_id, messages, start_time, finish_time, token_usage, reasoning_content)
|
|
SELECT '0',
|
|
'0',
|
|
id,
|
|
ai_modal_id,
|
|
safe_jsonb_cast(full_sql_message),
|
|
create_time,
|
|
finish_time,
|
|
safe_jsonb_cast(token_sql),
|
|
safe_jsonb_cast(sql_answer)->>'reasoning_content'
|
|
FROM chat_record
|
|
WHERE full_sql_message IS NOT NULL;
|
|
INSERT INTO chat_log(type, operate, pid, ai_modal_id, messages, start_time, finish_time, token_usage, reasoning_content)
|
|
SELECT '0',
|
|
'1',
|
|
id,
|
|
ai_modal_id,
|
|
safe_jsonb_cast(full_chart_message),
|
|
create_time,
|
|
finish_time,
|
|
safe_jsonb_cast(token_chart),
|
|
safe_jsonb_cast(chart_answer)->>'reasoning_content'
|
|
FROM chat_record
|
|
WHERE full_chart_message IS NOT NULL;
|
|
INSERT INTO chat_log(type, operate, pid, ai_modal_id, messages, start_time, finish_time, token_usage, reasoning_content)
|
|
SELECT '0',
|
|
'2',
|
|
id,
|
|
ai_modal_id,
|
|
safe_jsonb_cast(full_analysis_message),
|
|
create_time,
|
|
finish_time,
|
|
safe_jsonb_cast(token_analysis),
|
|
safe_jsonb_cast(analysis)->>'reasoning_content'
|
|
FROM chat_record
|
|
WHERE full_analysis_message IS NOT NULL;
|
|
INSERT INTO chat_log(type, operate, pid, ai_modal_id, messages, start_time, finish_time, token_usage, reasoning_content)
|
|
SELECT '0',
|
|
'3',
|
|
id,
|
|
ai_modal_id,
|
|
safe_jsonb_cast(full_predict_message),
|
|
create_time,
|
|
finish_time,
|
|
safe_jsonb_cast(token_predict),
|
|
safe_jsonb_cast(predict)->>'reasoning_content'
|
|
FROM chat_record
|
|
WHERE full_predict_message IS NOT NULL;
|
|
INSERT INTO chat_log(type, operate, pid, ai_modal_id, messages, start_time, finish_time, token_usage, reasoning_content)
|
|
SELECT '0',
|
|
'4',
|
|
id,
|
|
ai_modal_id,
|
|
safe_jsonb_cast(full_recommended_question_message),
|
|
create_time,
|
|
finish_time,
|
|
safe_jsonb_cast(token_recommended_question),
|
|
safe_jsonb_cast(recommended_question_answer)->>'reasoning_content'
|
|
FROM chat_record
|
|
WHERE full_recommended_question_message IS NOT NULL;
|
|
INSERT INTO chat_log(type, operate, pid, ai_modal_id, messages, start_time, finish_time, token_usage, reasoning_content)
|
|
SELECT '0',
|
|
'6',
|
|
id,
|
|
ai_modal_id,
|
|
safe_jsonb_cast(full_select_datasource_message),
|
|
create_time,
|
|
finish_time,
|
|
safe_jsonb_cast(token_select_datasource_question),
|
|
safe_jsonb_cast(datasource_select_answer)->>'reasoning_content'
|
|
FROM chat_record
|
|
WHERE full_select_datasource_message IS NOT NULL;
|
|
|
|
'''
|
|
|
|
def upgrade():
|
|
# ### commands auto generated by Alembic - please adjust! ###
|
|
op.create_table('chat_log',
|
|
sa.Column('id', sa.BigInteger(), sa.Identity(always=True), nullable=False),
|
|
sa.Column('type', sa.Enum('0', name='typeenum', native_enum=False, length=3), nullable=True),
|
|
sa.Column('operate', sa.Enum('0', '1', '2', '3', '4', '5', '6', name='operationenum', native_enum=False, length=3), nullable=True),
|
|
sa.Column('pid', sa.BigInteger(), nullable=True),
|
|
sa.Column('ai_modal_id', sa.BigInteger(), nullable=True),
|
|
sa.Column('base_modal', sqlmodel.sql.sqltypes.AutoString(length=255), nullable=True),
|
|
sa.Column('messages', postgresql.JSONB(astext_type=sa.Text()), nullable=True),
|
|
sa.Column('reasoning_content', sa.Text(), nullable=True),
|
|
sa.Column('start_time', sa.DateTime(), nullable=True),
|
|
sa.Column('finish_time', sa.DateTime(), nullable=True),
|
|
sa.Column('token_usage', postgresql.JSONB(astext_type=sa.Text()), nullable=True),
|
|
sa.PrimaryKeyConstraint('id')
|
|
)
|
|
|
|
op.execute(sql)
|
|
# ### end Alembic commands ###
|
|
|
|
|
|
def downgrade():
|
|
# ### commands auto generated by Alembic - please adjust! ###
|
|
|
|
op.drop_table('chat_log')
|
|
# ### end Alembic commands ###
|