diff --git a/api/migrations/versions/2025_03_02_0845-c11c071cf21e_add_gender_and_extra_profile_to_end_user.py b/api/migrations/versions/2025_03_02_0845-c11c071cf21e_add_gender_and_extra_profile_to_end_user.py new file mode 100644 index 0000000000..3c457cd98d --- /dev/null +++ b/api/migrations/versions/2025_03_02_0845-c11c071cf21e_add_gender_and_extra_profile_to_end_user.py @@ -0,0 +1,35 @@ +"""add_gender_and_extra_profile_to_end_user + +Revision ID: c11c071cf21e +Revises: a91b476a53de +Create Date: 2025-03-02 08:45:21.731731 + +""" + +import models as models +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = 'c11c071cf21e' +down_revision = 'a91b476a53de' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('end_users', schema=None) as batch_op: + batch_op.add_column(sa.Column('gender', sa.Integer(), server_default=sa.text('0'), nullable=False)) + batch_op.add_column(sa.Column('extra_profile', sa.JSON(), nullable=True)) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('end_users', schema=None) as batch_op: + batch_op.drop_column('extra_profile') + batch_op.drop_column('gender') + + # ### end Alembic commands ### diff --git a/api/models/model.py b/api/models/model.py index d6f73c5ede..9616d8c182 100644 --- a/api/models/model.py +++ b/api/models/model.py @@ -7,18 +7,17 @@ from enum import Enum, StrEnum from typing import TYPE_CHECKING, Any, Literal, Optional, cast import sqlalchemy as sa -from flask import request -from flask_login import UserMixin # type: ignore -from sqlalchemy import Float, func, text -from sqlalchemy.orm import Mapped, mapped_column - from configs import dify_config from core.file import FILE_MODEL_IDENTITY, File, FileTransferMethod, FileType from core.file import helpers as file_helpers from core.file.tool_file_parser import ToolFileParser +from flask import request +from flask_login import UserMixin # type: ignore from libs.helper import generate_string from models.enums import CreatedByRole from models.workflow import WorkflowRunStatus +from sqlalchemy import Float, func, text +from sqlalchemy.orm import Mapped, mapped_column from .account import Account, Tenant from .engine import db @@ -1323,6 +1322,8 @@ class EndUser(UserMixin, db.Model): # type: ignore[name-defined] name = db.Column(db.String(255)) is_anonymous = db.Column(db.Boolean, nullable=False, server_default=db.text("true")) session_id: Mapped[str] = mapped_column() + gender = db.Column(db.Integer, nullable=False, server_default=db.text("0")) # 0: unknown, 1: male, 2: female + extra_profile = db.Column(db.JSON, nullable=True) # JSON format, e.g. { "major":"engineer" } created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp()) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp()) diff --git a/api/pyproject.toml b/api/pyproject.toml index 15cf6a5f30..e633aa90da 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -1,14 +1,17 @@ [project] name = "dify-api" requires-python = ">=3.11,<3.13" -dynamic = [ "dependencies" ] +dynamic = ["dependencies"] [build-system] requires = ["poetry-core>=2.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry] -package-mode = false +name = "jim-api" +version = "0.1.0" +description = "Jim API - LLM application development platform" +authors = ["Jim Team "] ############################################################ # [ Main ] Dependency group @@ -89,9 +92,16 @@ tiktoken = "~0.8.0" tokenizers = "~0.15.0" transformers = "~4.35.0" types-pytz = "~2024.2.0.20241003" -unstructured = { version = "~0.16.1", extras = ["docx", "epub", "md", "msg", "ppt", "pptx"] } +unstructured = { version = "~0.16.1", extras = [ + "docx", + "epub", + "md", + "msg", + "ppt", + "pptx", +] } validators = "0.21.0" -volcengine-python-sdk = {extras = ["ark"], version = "~1.0.98"} +volcengine-python-sdk = { extras = ["ark"], version = "~1.0.98" } websocket-client = "~1.7.0" xinference-client = "0.15.2" yarl = "~1.18.3" @@ -126,7 +136,13 @@ numexpr = "~2.9.0" pydub = "~0.25.1" qrcode = "~7.4.2" twilio = "~9.0.4" -vanna = { version = "0.7.5", extras = ["postgres", "mysql", "clickhouse", "duckdb", "oracle"] } +vanna = { version = "0.7.5", extras = [ + "postgres", + "mysql", + "clickhouse", + "duckdb", + "oracle", +] } wikipedia = "1.4.0" yfinance = "~0.2.40"