From 9f116ea7e8f7d53a22b4dce10de942d564818a01 Mon Sep 17 00:00:00 2001
From: zhaoqingang <zhaoqg0118@163.com>
Date: 星期三, 15 一月 2025 14:01:22 +0800
Subject: [PATCH] tmp
---
app/config/env_conf/default_agent_conf.json | 88 ++++++++-
alembic/versions/019bbe8d4833_dialogs_add_parameters.py | 92 ++++++++++
alembic/versions/37606c5a9b9e_account_token.py | 136 +++++++++++++++
app/config/env_conf/config.yaml | 13
app/service/user.py | 13 +
app/utils/password_handle.py | 22 ++
app/api/v2/chat.py | 3
app/api/auth.py | 13 +
app/service/auth.py | 12
app/service/v2/app_driver/chat_data.py | 2
app/models/__init__.py | 1
app/service/v2/chat.py | 31 +-
app/config/env_conf/config116.yaml | 13
app/init_config/init_run_data.py | 1
app/models/user_model.py | 9
app/task/fetch_agent.py | 29 ++-
app/task/sync_account_token.py | 1
main.py | 8
app/models/dialog_model.py | 1
app/service/v2/initialize_data.py | 3
app/models/token_model.py | 4
21 files changed, 412 insertions(+), 83 deletions(-)
diff --git a/alembic/versions/019bbe8d4833_dialogs_add_parameters.py b/alembic/versions/019bbe8d4833_dialogs_add_parameters.py
new file mode 100644
index 0000000..d8b2a14
--- /dev/null
+++ b/alembic/versions/019bbe8d4833_dialogs_add_parameters.py
@@ -0,0 +1,92 @@
+"""dialogs add parameters
+
+Revision ID: 019bbe8d4833
+Revises: 37606c5a9b9e
+Create Date: 2025-01-15 11:26:21.253007
+
+"""
+from typing import Sequence, Union
+
+from alembic import op
+import sqlalchemy as sa
+from sqlalchemy.dialects import mysql
+
+# revision identifiers, used by Alembic.
+revision: str = '019bbe8d4833'
+down_revision: Union[str, None] = '37606c5a9b9e'
+branch_labels: Union[str, Sequence[str], None] = None
+depends_on: Union[str, Sequence[str], None] = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_table('user_tenant')
+ op.drop_table('knowledgebase')
+ op.drop_table('apps')
+ op.drop_table('dialog')
+ op.drop_table('flow')
+ op.add_column('dialogs', sa.Column('parameters', sa.Text(), nullable=True))
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_column('dialogs', 'parameters')
+ op.create_table('flow',
+ sa.Column('id', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('name', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('status', mysql.INTEGER(), autoincrement=False, nullable=False),
+ sa.Column('description', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('user_id', mysql.INTEGER(), autoincrement=False, nullable=False),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_collate='utf8mb4_0900_ai_ci',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('dialog',
+ sa.Column('id', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('name', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('status', mysql.VARCHAR(length=1), nullable=False),
+ sa.Column('description', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('tenant_id', mysql.VARCHAR(length=36), nullable=False),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_collate='utf8mb4_0900_ai_ci',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('apps',
+ sa.Column('id', mysql.VARCHAR(length=36), nullable=False),
+ sa.Column('name', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('status', mysql.VARCHAR(length=16), nullable=False),
+ sa.Column('description', mysql.TEXT(), nullable=False),
+ sa.Column('tenant_id', mysql.VARCHAR(length=36), nullable=False),
+ sa.Column('mode', mysql.VARCHAR(length=36), nullable=False),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_collate='utf8mb4_0900_ai_ci',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('knowledgebase',
+ sa.Column('id', mysql.VARCHAR(length=36), nullable=False),
+ sa.Column('name', mysql.VARCHAR(length=128), nullable=True),
+ sa.Column('permission', mysql.VARCHAR(length=32), nullable=True),
+ sa.Column('tenant_id', mysql.VARCHAR(length=32), nullable=True),
+ sa.Column('description', mysql.TEXT(), nullable=True),
+ sa.Column('status', mysql.VARCHAR(length=1), nullable=True),
+ sa.Column('doc_num', mysql.INTEGER(), autoincrement=False, nullable=True),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_collate='utf8mb4_0900_ai_ci',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('user_tenant',
+ sa.Column('id', mysql.VARCHAR(length=36), nullable=False),
+ sa.Column('tenant_id', mysql.VARCHAR(length=32), nullable=True),
+ sa.Column('user_id', mysql.VARCHAR(length=32), nullable=True),
+ sa.Column('role', mysql.VARCHAR(length=32), nullable=True),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_collate='utf8mb4_0900_ai_ci',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ # ### end Alembic commands ###
diff --git a/alembic/versions/37606c5a9b9e_account_token.py b/alembic/versions/37606c5a9b9e_account_token.py
new file mode 100644
index 0000000..830dc1d
--- /dev/null
+++ b/alembic/versions/37606c5a9b9e_account_token.py
@@ -0,0 +1,136 @@
+"""account token
+
+Revision ID: 37606c5a9b9e
+Revises:
+Create Date: 2025-01-15 09:57:58.619279
+
+"""
+from typing import Sequence, Union
+
+from alembic import op
+import sqlalchemy as sa
+from sqlalchemy.dialects import mysql
+
+# revision identifiers, used by Alembic.
+revision: str = '37606c5a9b9e'
+down_revision: Union[str, None] = None
+branch_labels: Union[str, Sequence[str], None] = None
+depends_on: Union[str, Sequence[str], None] = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_table('flow')
+ op.drop_table('dialog')
+ op.drop_table('apps')
+ op.drop_table('user_tenant')
+ op.drop_table('knowledgebase')
+ op.drop_index('session_id_ix', table_name='chat_sessions')
+ op.drop_index('tenant_id_ix', table_name='chat_sessions')
+ op.drop_index('update_tine_ix', table_name='chat_sessions')
+ op.drop_table('chat_sessions')
+ op.alter_column('chat_api_tokens', 'app_id',
+ existing_type=mysql.VARCHAR(charset='utf8mb3', collation='utf8mb3_general_ci', length=36),
+ nullable=True)
+ op.alter_column('chat_api_tokens', 'type',
+ existing_type=mysql.VARCHAR(charset='utf8mb3', collation='utf8mb3_general_ci', length=16),
+ nullable=True)
+ op.drop_index('app_id_ix', table_name='chat_api_tokens')
+ op.create_index(op.f('ix_chat_api_tokens_app_id'), 'chat_api_tokens', ['app_id'], unique=False)
+ op.drop_index('update_ix_index', table_name='conversation')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_index('update_ix_index', 'conversation', ['update_time'], unique=False)
+ op.drop_index(op.f('ix_chat_api_tokens_app_id'), table_name='chat_api_tokens')
+ op.create_index('app_id_ix', 'chat_api_tokens', ['app_id'], unique=False)
+ op.alter_column('chat_api_tokens', 'type',
+ existing_type=mysql.VARCHAR(charset='utf8mb3', collation='utf8mb3_general_ci', length=16),
+ nullable=False)
+ op.alter_column('chat_api_tokens', 'app_id',
+ existing_type=mysql.VARCHAR(charset='utf8mb3', collation='utf8mb3_general_ci', length=36),
+ nullable=False)
+ op.create_table('chat_sessions',
+ sa.Column('id', mysql.VARCHAR(charset='utf8mb3', collation='utf8mb3_general_ci', length=36), nullable=False),
+ sa.Column('name', mysql.VARCHAR(charset='utf8mb3', collation='utf8mb3_general_ci', length=255), nullable=True),
+ sa.Column('agent_id', mysql.VARCHAR(charset='utf8mb3', collation='utf8mb3_general_ci', length=255), nullable=True),
+ sa.Column('agent_type', mysql.INTEGER(), autoincrement=False, nullable=True),
+ sa.Column('create_date', mysql.DATETIME(), nullable=True),
+ sa.Column('update_date', mysql.DATETIME(), nullable=True),
+ sa.Column('tenant_id', mysql.INTEGER(), autoincrement=False, nullable=True),
+ sa.Column('message', mysql.LONGTEXT(charset='utf8mb3', collation='utf8mb3_general_ci'), nullable=True),
+ sa.Column('reference', mysql.LONGTEXT(charset='utf8mb3', collation='utf8mb3_general_ci'), nullable=True),
+ sa.Column('conversation_id', mysql.VARCHAR(charset='utf8mb3', collation='utf8mb3_general_ci', length=36), nullable=True),
+ sa.Column('event_type', mysql.VARCHAR(charset='utf8mb3', collation='utf8mb3_general_ci', length=16), nullable=True),
+ sa.Column('session_type', mysql.VARCHAR(charset='utf8mb3', collation='utf8mb3_general_ci', length=16), nullable=True),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_default_charset='utf8mb3',
+ mysql_engine='InnoDB',
+ mysql_row_format='DYNAMIC'
+ )
+ op.create_index('update_tine_ix', 'chat_sessions', ['update_date'], unique=False)
+ op.create_index('tenant_id_ix', 'chat_sessions', ['tenant_id'], unique=False)
+ op.create_index('session_id_ix', 'chat_sessions', ['conversation_id'], unique=False)
+ op.create_table('knowledgebase',
+ sa.Column('id', mysql.VARCHAR(length=36), nullable=False),
+ sa.Column('name', mysql.VARCHAR(length=128), nullable=True),
+ sa.Column('create_date', mysql.DATETIME(), nullable=True),
+ sa.Column('update_date', mysql.DATETIME(), nullable=True),
+ sa.Column('tenant_id', mysql.VARCHAR(length=32), nullable=True),
+ sa.Column('description', mysql.TEXT(), nullable=True),
+ sa.Column('status', mysql.VARCHAR(length=1), nullable=True),
+ sa.Column('documents', mysql.INTEGER(), autoincrement=False, nullable=True),
+ sa.Column('icon', mysql.VARCHAR(length=128), nullable=True),
+ sa.Column('knowledge_type', mysql.VARCHAR(length=1), nullable=True),
+ sa.Column('permission', mysql.VARCHAR(length=32), nullable=True),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_collate='utf8mb4_0900_ai_ci',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('user_tenant',
+ sa.Column('id', mysql.VARCHAR(length=36), nullable=False),
+ sa.Column('tenant_id', mysql.VARCHAR(length=32), nullable=True),
+ sa.Column('user_id', mysql.VARCHAR(length=32), nullable=True),
+ sa.Column('role', mysql.VARCHAR(length=32), nullable=True),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_collate='utf8mb4_0900_ai_ci',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('apps',
+ sa.Column('id', mysql.VARCHAR(length=36), nullable=False),
+ sa.Column('name', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('status', mysql.VARCHAR(length=16), nullable=False),
+ sa.Column('description', mysql.TEXT(), nullable=False),
+ sa.Column('tenant_id', mysql.VARCHAR(length=36), nullable=False),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_collate='utf8mb4_0900_ai_ci',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('dialog',
+ sa.Column('id', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('name', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('status', mysql.VARCHAR(length=1), nullable=False),
+ sa.Column('description', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('tenant_id', mysql.VARCHAR(length=36), nullable=False),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_collate='utf8mb4_0900_ai_ci',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('flow',
+ sa.Column('id', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('name', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('status', mysql.INTEGER(), autoincrement=False, nullable=False),
+ sa.Column('description', mysql.VARCHAR(length=255), nullable=False),
+ sa.Column('user_id', mysql.INTEGER(), autoincrement=False, nullable=False),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_collate='utf8mb4_0900_ai_ci',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ # ### end Alembic commands ###
diff --git a/app/api/auth.py b/app/api/auth.py
index c028ad1..3637cda 100644
--- a/app/api/auth.py
+++ b/app/api/auth.py
@@ -111,6 +111,7 @@
user = authenticate_user(db, login_data.username, password)
if not user:
return Response(code=400, msg="Incorrect username or password")
+ """
app_register = AppRegisterDao(db).get_apps()
token_dict = {}
for app in app_register:
@@ -136,12 +137,13 @@
token_dict[app["id"]] = token
except Exception as e:
return Response(code=500, msg=f"Failed to login with {app['id']}: {str(e)}")
-
+ """
# 鍒涘缓鏈湴token
access_token = create_access_token(data={"sub": user.username, "user_id": user.id})
- await update_token(db, user.id, access_token, token_dict)
- await update_user_token(db, user.id, token_dict)
+ # await update_token(db, user.id, access_token, token_dict)
+ # await update_user_token(db, user.id, token_dict)
+ '''
result = await pdb.execute(select(AppToken).where(AppToken.id == user.id))
db_app_token = result.scalars().first()
if isinstance(access_token, bytes):
@@ -158,6 +160,7 @@
db_app_token.app_token = json.dumps(token_dict)
await pdb.commit()
await pdb.refresh(db_app_token)
+ '''
return Response(code=200, msg="Login successful", data={
"access_token": access_token,
"token_type": "bearer",
@@ -176,6 +179,7 @@
db_user = db.query(UserModel).filter(UserModel.username == user.username).first()
if db_user:
return Response(code=200, msg="Username already registered")
+ """
app_register = AppRegisterDao(db).get_apps()
register_dict = {}
token = ""
@@ -202,7 +206,8 @@
register_dict[app['id']] = {"id":register_info.get("id"), "name": name, "email": register_info.get("email")}
except Exception as e:
return Response(code=500, msg=f"Failed to register with {app['id']}: {str(e)}")
- user_id = await save_register_user(db, user.username, password, user.email, app_password, register_dict)
+ """
+ user_id = await save_register_user(db, user.username, password, user.email, "", {})
if not user_id:
return Response(code=500, msg=f"Failed to register with app")
return Response(code=200, msg="User registered successfully",data={"userFlag": user_id})
diff --git a/app/api/v2/chat.py b/app/api/v2/chat.py
index b8ec8c7..0d6b9a5 100644
--- a/app/api/v2/chat.py
+++ b/app/api/v2/chat.py
@@ -58,7 +58,8 @@
data = await service_chat_parameters(db, chatId, 1)
if not data:
status_code = http_400
- return Response(json.dumps(data), media_type="application/json", status_code=status_code)
+ data = "{}"
+ return Response(data, media_type="application/json", status_code=status_code)
# @chat_router_v2.get("/{chatId}/parameters")
# async def api_chat_parameters(chatId:str, db: Session = Depends(get_db)): # current_user: UserModel = Depends(get_current_user)
diff --git a/app/config/env_conf/config.yaml b/app/config/env_conf/config.yaml
index 5bdca69..b3a8273 100644
--- a/app/config/env_conf/config.yaml
+++ b/app/config/env_conf/config.yaml
@@ -1,10 +1,10 @@
secret_key: your-secret-key
-sgb_base_url: http://192.168.20.116:13001
-sgb_websocket_url: ws://192.168.20.116:13001
-fwr_base_url: http://192.168.20.116:11080
-database_url: mysql+pymysql://root:rag_gateway@192.168.20.116:23306/rag_gateway
+sgb_base_url: http://192.168.20.119:13001
+sgb_websocket_url: ws://192.168.20.119:13001
+fwr_base_url: http://192.168.20.119:11080
+database_url: mysql+pymysql://root:infini_rag_flow@192.168.20.119:5455/rag_basic
sgb_db_url: mysql+pymysql://root:1234@192.168.20.119:13306/bisheng
-fwr_db_url: mysql+pymysql://root:infini_rag_flow@192.168.20.116:15455/rag_flow
+fwr_db_url: mysql+pymysql://root:infini_rag_flow@192.168.20.119:15455/rag_flow
PUBLIC_KEY: |
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArq9XTUSeYr2+N1h3Afl/z8Dse/2yD0ZGrKwx+EEEcdsBLca9Ynmx3nIB5obmLlSfmskLpBo0UACBmB5rEjBp2Q2f3AG3Hjd4B+gNCG6BDaawuDlgANIhGnaTLrIqWrrcm4EMzJOnAOI1fgzJRsOOUEfaS318Eq9OVO3apEyCCt0lOQK6PuksduOjVxtltDav+guVAA068NrPYmRNabVKRNLJpL8w4D44sfth5RvZ3q9t+6RTArpEtc5sh5ChzvqPOzKGMXW83C95TxmXqpbK6olN4RevSfVjEAgCydH6HN6OhtOQEcnrU97r9H0iZOWwbw3pVrZiUkuRD1R56Wzs2wIDAQAB
@@ -17,10 +17,9 @@
basic_paper_url: http://192.168.20.231:8000
dify_base_url: http://192.168.20.116
dify_api_token: app-YmOAMDsPpDDlqryMHnc9TzTO
-postgresql_database_url: postgresql+asyncpg://kong:kongpass@192.168.20.116:15433/kong
+postgresql_database_url: postgresql+asyncpg://kong:kongpass@192.168.20.119:5432/kong
dify_workflow_clean: app-OpF0drPu0XcgqcekQpT4FA8a
dify_workflow_report: app-0MAkdFWqh9zxwmU69O0BFU1s
dify_database_url: postgresql+psycopg2://postgres:difyai123456@192.168.20.116:15432/dify
-
diff --git a/app/config/env_conf/config1.yaml b/app/config/env_conf/config116.yaml
similarity index 79%
rename from app/config/env_conf/config1.yaml
rename to app/config/env_conf/config116.yaml
index b3a8273..5bdca69 100644
--- a/app/config/env_conf/config1.yaml
+++ b/app/config/env_conf/config116.yaml
@@ -1,10 +1,10 @@
secret_key: your-secret-key
-sgb_base_url: http://192.168.20.119:13001
-sgb_websocket_url: ws://192.168.20.119:13001
-fwr_base_url: http://192.168.20.119:11080
-database_url: mysql+pymysql://root:infini_rag_flow@192.168.20.119:5455/rag_basic
+sgb_base_url: http://192.168.20.116:13001
+sgb_websocket_url: ws://192.168.20.116:13001
+fwr_base_url: http://192.168.20.116:11080
+database_url: mysql+pymysql://root:rag_gateway@192.168.20.116:23306/rag_gateway
sgb_db_url: mysql+pymysql://root:1234@192.168.20.119:13306/bisheng
-fwr_db_url: mysql+pymysql://root:infini_rag_flow@192.168.20.119:15455/rag_flow
+fwr_db_url: mysql+pymysql://root:infini_rag_flow@192.168.20.116:15455/rag_flow
PUBLIC_KEY: |
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArq9XTUSeYr2+N1h3Afl/z8Dse/2yD0ZGrKwx+EEEcdsBLca9Ynmx3nIB5obmLlSfmskLpBo0UACBmB5rEjBp2Q2f3AG3Hjd4B+gNCG6BDaawuDlgANIhGnaTLrIqWrrcm4EMzJOnAOI1fgzJRsOOUEfaS318Eq9OVO3apEyCCt0lOQK6PuksduOjVxtltDav+guVAA068NrPYmRNabVKRNLJpL8w4D44sfth5RvZ3q9t+6RTArpEtc5sh5ChzvqPOzKGMXW83C95TxmXqpbK6olN4RevSfVjEAgCydH6HN6OhtOQEcnrU97r9H0iZOWwbw3pVrZiUkuRD1R56Wzs2wIDAQAB
@@ -17,9 +17,10 @@
basic_paper_url: http://192.168.20.231:8000
dify_base_url: http://192.168.20.116
dify_api_token: app-YmOAMDsPpDDlqryMHnc9TzTO
-postgresql_database_url: postgresql+asyncpg://kong:kongpass@192.168.20.119:5432/kong
+postgresql_database_url: postgresql+asyncpg://kong:kongpass@192.168.20.116:15433/kong
dify_workflow_clean: app-OpF0drPu0XcgqcekQpT4FA8a
dify_workflow_report: app-0MAkdFWqh9zxwmU69O0BFU1s
dify_database_url: postgresql+psycopg2://postgres:difyai123456@192.168.20.116:15432/dify
+
diff --git a/app/config/env_conf/default_agent_conf.json b/app/config/env_conf/default_agent_conf.json
index 70c35f7..396fbb9 100644
--- a/app/config/env_conf/default_agent_conf.json
+++ b/app/config/env_conf/default_agent_conf.json
@@ -5,28 +5,96 @@
"name": "鎶ヨ〃鍚堝苟",
"description": "鎶ヨ〃鍚堝苟",
"icon": "intellFrame4",
- "agentType": "excelMerge"
+ "agentType": "excelMerge",
+ "parameters": {
+ "retriever_resource": {
+ "enabled": false
+ },
+ "user_input_form": [
+ {
+ "file-list": {
+ "allowed_file_extensions": [
+ "xlsx"
+ ],
+ "allowed_file_types": [
+ "document"
+ ],
+ "allowed_file_upload_methods": [
+ "local_file"
+ ],
+ "label": "鏂囨。瑙f瀽绔�",
+ "max_length": 30,
+ "options": [],
+ "required": true,
+ "type": "file-list",
+ "variable": "file_list"
+ }
+ }
+ ],
+ "file_upload":{
+ "enabled": false
+ }
+ }
},
{
"id": "basic_excel_talk",
"name": "鏅鸿兘鏁版嵁",
"description": "鏅鸿兘鏁版嵁",
"icon": "intellFrame4",
- "agentType": "excelTalk"
+ "agentType": "excelTalk",
+ "parameters": {
+ "retriever_resource": {
+ "enabled": true
+ },
+ "user_input_form": [
+ {
+ "file-list": {
+ "allowed_file_extensions": [
+ "xlsx", "xls","csv","db"
+ ],
+ "allowed_file_types": [
+ "document"
+ ],
+ "allowed_file_upload_methods": [
+ "local_file"
+ ],
+ "label": "涓婁紶鏂囨。",
+ "max_length": 30,
+ "options": [],
+ "required": true,
+ "type": "file-list",
+ "variable": "file_list",
+ "fileUploadConfig": {
+ "file_size_limit": 30,
+ "batch_count_limit": 5,
+ "image_file_size_limit": 10,
+ "video_file_size_limit": 100,
+ "audio_file_size_limit": 50,
+ "workflow_file_upload_limit": 100
+ }
+ }
+ }
+ ],
+ "file_upload":{
+ "enabled": false
+ }
+ }
},
{
"id": "basic_question_talk",
"name": "鍑洪缁勫嵎",
"description": "鍑洪缁勫嵎",
"icon": "intellFrame4",
- "agentType": "questionTalk"
- },
- {
- "id": "basic_paper_talk",
- "name": "鏂囨。鍑哄嵎",
- "description": "鏂囨。鍑哄嵎",
- "icon": "intellFrame4",
- "agentType": "paperTalk"
+ "agentType": "questionTalk",
+ "parameters": {
+ "retriever_resource": {
+ "enabled": true
+ },
+ "user_input_form": [],
+ "file_upload":{
+ "enabled": false
+ }
+ }
}
],
"bs": []
diff --git a/app/init_config/init_run_data.py b/app/init_config/init_run_data.py
index ddb32e7..8bcff03 100644
--- a/app/init_config/init_run_data.py
+++ b/app/init_config/init_run_data.py
@@ -1,6 +1,7 @@
from app.models.base_model import SessionLocal
from app.service.v2.initialize_data import dialog_menu_sync, default_group_sync, default_role_sync, app_register_sync, \
basic_agent_sync, admin_account_sync
+from app.task.fetch_agent import sync_resources_from_json
async def sync_default_data():
diff --git a/app/models/__init__.py b/app/models/__init__.py
index 126abc8..9f8a749 100644
--- a/app/models/__init__.py
+++ b/app/models/__init__.py
@@ -16,6 +16,7 @@
from .public_api_model import *
from .menu_model import *
from .label_model import *
+from .v2.session_model import *
# 鑾峰彇褰撳墠鏃跺尯鐨勬椂闂�
diff --git a/app/models/dialog_model.py b/app/models/dialog_model.py
index 4a6a29e..1ab181f 100644
--- a/app/models/dialog_model.py
+++ b/app/models/dialog_model.py
@@ -23,6 +23,7 @@
dialog_type = Column(String(1)) # 骞冲彴
# agent_id = Column(String(36))
mode = Column(String(36))
+ parameters = Column(Text)
def get_id(self):
return str(self.id)
diff --git a/app/models/token_model.py b/app/models/token_model.py
index 7ad0e01..ef120dc 100644
--- a/app/models/token_model.py
+++ b/app/models/token_model.py
@@ -94,8 +94,8 @@
class ApiTokenModel(Base):
__tablename__ = "chat_api_tokens"
- id = Column(String(32), primary_key=True)
- app_id = Column(String(32), index=True)
+ id = Column(String(36), primary_key=True)
+ app_id = Column(String(36), index=True)
type = Column(String(16))
token = Column(String(255))
created_at = Column(DateTime, default=datetime.now())
diff --git a/app/models/user_model.py b/app/models/user_model.py
index 10b3fed..8dc7183 100644
--- a/app/models/user_model.py
+++ b/app/models/user_model.py
@@ -254,11 +254,4 @@
'password': self.password,
'access_token': self.access_token,
'refresh_token': self.refresh_token,
- }
- @staticmethod
- def encrypted_password(password):
- return cipher_suite.encrypt(password.encode("utf-8")).decode("utf-8")
-
- @staticmethod
- def decrypted_password(password):
- return cipher_suite.decrypt(password).decode("utf-8")
\ No newline at end of file
+ }
\ No newline at end of file
diff --git a/app/service/auth.py b/app/service/auth.py
index 8c6544c..8354200 100644
--- a/app/service/auth.py
+++ b/app/service/auth.py
@@ -83,23 +83,21 @@
try:
hashed_password = pwd_context.hash(password)
db_user = UserModel(username=username, hashed_password=hashed_password, email=email, sync_flag=sync_flag)
- pwd = db_user.encrypted_password(app_password)
- db_user.password = pwd
+ # pwd = db_user.encrypted_password(app_password)
+ # db_user.password = pwd
db_user.roles = [db.query(RoleModel).filter(RoleModel.role_type == 2).first()]
db_user.groups = [db.query(GroupModel).filter(GroupModel.group_type == 2).first()]
db.add(db_user)
db.commit()
db.refresh(db_user)
+ '''
user_id = db_user.id
for k, v in register_dict.items():
await UserAppDao(db).update_and_insert_data(v.get("name"), pwd, v.get("email"), user_id, str(v.get("id")), k)
-
+ '''
except Exception as e:
logger.error(e)
- # db.roolback()
- if user_id:
- db.query(UserModel).filter(UserModel.id == user_id).delete()
- db.commit
+ db.rollback()
return False
return sync_flag
diff --git a/app/service/user.py b/app/service/user.py
index 015d404..b6c916e 100644
--- a/app/service/user.py
+++ b/app/service/user.py
@@ -58,10 +58,13 @@
async def create_user(db, user_name, email, phone, login_name, password, roles, groups, user_id):
try:
- app_register = AppRegisterDao(db).get_apps()
+
register_dict = {}
token = ""
+
+ """
app_password = await generate_password()
+ app_register = AppRegisterDao(db).get_apps()
for app in app_register:
if app["id"] == RAGFLOW:
service = RagflowService(settings.fwr_base_url)
@@ -82,26 +85,28 @@
except Exception as e:
logger.error(e)
return False
-
+ """
# 瀛樺偍鐢ㄦ埛淇℃伅
hashed_password = pwd_context.hash(password)
sync_flag = str(uuid.uuid4())
user_model = UserModel(username=user_name, hashed_password=hashed_password, email=email,
## ragflow_id=ragflow_info.get("id"),bisheng_id=bisheng_info.get("user_id"),
phone=phone, login_name=login_name,sync_flag=sync_flag)
- pwd = user_model.encrypted_password(app_password)
+ # pwd = user_model.encrypted_password(app_password)
+ # user_model.password = pwd
user_model.roles = [db.get(RoleModel, roleId) for roleId in roles]
- user_model.password = pwd
if groups:
user_model.groups = [db.get(GroupModel, groupId) for groupId in groups]
user_model.creator = user_id
db.add(user_model)
db.commit()
db.refresh(user_model)
+ """
u_id = user_model.id
user_app_dao = UserAppDao(db)
for k, v in register_dict.items():
await user_app_dao.update_and_insert_data(v.get("name"), pwd, v.get("email"), u_id, str(v.get("id")), k)
+ """
except Exception as e:
logger.error(e)
# db.rollback()
diff --git a/app/service/v2/app_driver/chat_data.py b/app/service/v2/app_driver/chat_data.py
index dad38e2..308f0fc 100644
--- a/app/service/v2/app_driver/chat_data.py
+++ b/app/service/v2/app_driver/chat_data.py
@@ -24,7 +24,7 @@
async def chat_post(self, url, data, headers):
res = await self.http_post(url, data, headers)
- if res.status_code == 200:
+ if res.status_code == 200 or res.status_code == 201:
return res.json()
else:
return {}
diff --git a/app/service/v2/chat.py b/app/service/v2/chat.py
index ddd17a2..2575e70 100644
--- a/app/service/v2/chat.py
+++ b/app/service/v2/chat.py
@@ -200,21 +200,22 @@
chat_info = db.query(DialogModel).filter_by(id=chat_id).first()
if not chat_info:
return {}
- if chat_info.dialog_type == RG_TYPE:
- return {"retriever_resource":
- {
- "enabled": True
- }
- }
- elif chat_info.dialog_type == BASIC_TYPE:
- ...
- elif chat_info.dialog_type == DF_TYPE:
- token = await get_chat_token(db, chat_id)
- if not token:
- return {}
- url = settings.dify_base_url + DF_CHAT_PARAMETERS
- chat = ChatBaseApply()
- return await chat.chat_get(url, {"user": str(user_id)}, await chat.get_headers(token))
+ return chat_info.parameters
+ # if chat_info.dialog_type == RG_TYPE:
+ # return {"retriever_resource":
+ # {
+ # "enabled": True
+ # }
+ # }
+ # elif chat_info.dialog_type == BASIC_TYPE:
+ # ...
+ # elif chat_info.dialog_type == DF_TYPE:
+ # token = await get_chat_token(db, chat_id)
+ # if not token:
+ # return {}
+ # url = settings.dify_base_url + DF_CHAT_PARAMETERS
+ # chat = ChatBaseApply()
+ # return await chat.chat_get(url, {"user": str(user_id)}, await chat.get_headers(token))
async def service_chat_sessions(db, chat_id, name):
diff --git a/app/service/v2/initialize_data.py b/app/service/v2/initialize_data.py
index 958af75..08da5fb 100644
--- a/app/service/v2/initialize_data.py
+++ b/app/service/v2/initialize_data.py
@@ -135,6 +135,7 @@
dialog.name = agent["name"]
dialog.description = agent["description"]
dialog.icon = agent["icon"]
+ dialog.parameters = json.dumps(agent["parameters"])
db.commit()
except Exception as e:
logger.error(e)
@@ -142,7 +143,7 @@
try:
dialog = DialogModel(id=agent["id"], name=agent["name"], description=agent["description"],
icon=agent["icon"], tenant_id=user.id if user else "", dialog_type="3",
- agent_id=agent["id"])
+ agent_id=agent["id"], parameters = json.dumps(agent["parameters"]))
db.add(dialog)
db.commit()
db.refresh(dialog)
diff --git a/app/task/fetch_agent.py b/app/task/fetch_agent.py
index bbb4da9..f361265 100644
--- a/app/task/fetch_agent.py
+++ b/app/task/fetch_agent.py
@@ -240,6 +240,15 @@
def get_data_from_ragflow_v2(names: List[str]) -> List[Dict]:
db = SessionRagflow()
+ para = {
+ "user_input_form": [],
+ "retriever_resource": {
+ "enabled": True
+ },
+ "file_upload": {
+ "enabled": False
+ }
+ }
try:
if names:
query = db.query(Dialog.id, Dialog.name, Dialog.description, Dialog.status, Dialog.tenant_id) \
@@ -251,13 +260,13 @@
results = query.all()
formatted_results = [
{"id": row[0], "name": row[1], "description": row[2], "status": "1" if row[3] == "1" else "2",
- "user_id": str(row[4]), "mode": "agent-dialog"} for row in results]
+ "user_id": str(row[4]), "mode": "agent-dialog", "parameters": para} for row in results]
return formatted_results
finally:
db.close()
-def get_data_from_dify_v2(names: List[str]) -> List[Dict]:
+def get_data_from_dy_v2(names: List[str]) -> List[Dict]:
db = SessionDify()
try:
if names:
@@ -269,7 +278,7 @@
results = query.all()
formatted_results = [
{"id": str(row[0]), "name": row[1], "description": row[2], "status": "1",
- "user_id": str(row[4]), "mode": row[5]} for row in results]
+ "user_id": str(row[4]), "mode": row[5], "parameters": {}} for row in results]
return formatted_results
finally:
db.close()
@@ -286,14 +295,12 @@
if existing_agent:
existing_agent.name = row["name"]
existing_agent.description = row["description"]
- # existing_agent.status = row["status"]
existing_agent.mode = row["mode"]
- # existing_agent.tenant_id = get_rag_user_id(db, row["user_id"], type_dict[dialog_type])
else:
existing = DialogModel(id=row["id"], status=row["status"], name=row["name"],
description=row["description"],
tenant_id=get_rag_user_id(db, row["user_id"], type_dict[dialog_type]),
- dialog_type=dialog_type, mode=row["mode"])
+ dialog_type=dialog_type, mode=row["mode"], parameters=json.dumps(row["parameters"]))
db.add(existing)
db.commit()
for dialog in db.query(DialogModel).filter_by(dialog_type=dialog_type).all():
@@ -332,12 +339,12 @@
ragflow_data = get_data_from_ragflow_v2([])
if ragflow_data:
update_ids_in_local_v2(ragflow_data, "1")
- elif app["id"] == BISHENG:
- bisheng_data = get_data_from_bisheng_v2([])
- if bisheng_data:
- update_ids_in_local_v2(bisheng_data, "2")
+ # elif app["id"] == BISHENG:
+ # bisheng_data = get_data_from_bisheng_v2([])
+ # if bisheng_data:
+ # update_ids_in_local_v2(bisheng_data, "2")
elif app["id"] == DIFY:
- dify_data = get_data_from_dify_v2([])
+ dify_data = get_data_from_dy_v2([])
if dify_data:
update_ids_in_local_v2(dify_data, "4")
print("v2 Agents synchronized successfully")
diff --git a/app/task/sync_account_token.py b/app/task/sync_account_token.py
index 9d2ee32..1e7747c 100644
--- a/app/task/sync_account_token.py
+++ b/app/task/sync_account_token.py
@@ -9,5 +9,6 @@
4.token鑾峰彇锛歭ogin
df:/console/api/workspaces
rg:/v1/system/version
+ 5.璺熸柊鏈湴token鍜宬ong缃戝叧token
:return:
"""
\ No newline at end of file
diff --git a/app/utils/password_handle.py b/app/utils/password_handle.py
index 8852a11..a6e421b 100644
--- a/app/utils/password_handle.py
+++ b/app/utils/password_handle.py
@@ -2,6 +2,10 @@
import random
import string
+from cryptography.fernet import Fernet
+from app.config.config import settings
+
+cipher_suite = Fernet(settings.PASSWORD_KEY.encode("utf-8"))
async def generate_password(length=10):
if length < 6: # 鑷冲皯闇�瑕�3浣嶅瘑鐮佷互鍖呭惈鎵�鏈夊繀瑕佺殑瀛楃
@@ -24,8 +28,22 @@
# 灏嗗垪琛ㄨ浆鎹负瀛楃涓�
return ''.join(password)
+
+async def password_encrypted(password):
+ hash_pwd = cipher_suite.encrypt(password.encode("utf-8")).decode("utf-8")
+ print(hash_pwd)
+ return hash_pwd
+
+
+async def password_decrypted(hash_password):
+ pwd = cipher_suite.decrypt(hash_password).decode("utf-8")
+ print(pwd)
+ return pwd
if __name__ == "__main__":
# 鐢熸垚涓�涓�10浣嶇殑瀵嗙爜
- asyncio.run(generate_password(10))
+ # asyncio.run(generate_password(10))
# password = generate_password(10)
- # print(password)
\ No newline at end of file
+ # print(password)
+
+ asyncio.run(password_encrypted("123456"))
+ asyncio.run(password_decrypted("gAAAAABnhyOiGUnAqK7FW_pHsXifje8WG1cirtF_eu3a44FrMYM3AkSBsWjsJrwpzUlD2GDzzZOS6yYu4Ie5gnkYuy8HVN3FBw=="))
\ No newline at end of file
diff --git a/main.py b/main.py
index b4bbe0a..fc24d9c 100644
--- a/main.py
+++ b/main.py
@@ -43,11 +43,11 @@
- # await sync_default_data()
+ await sync_default_data()
#
- # sync_agents_v2()
- # sync_knowledge()
- # sync_resources_from_json()
+ sync_agents_v2()
+ sync_knowledge()
+ sync_resources_from_json()
yield
# 鍦ㄥ簲鐢ㄥ叧闂椂鎵ц娓呯悊鎿嶄綔锛堝鏋滈渶瑕侊級
pass
--
Gitblit v1.8.0