feat: sync application information with site records

- Enhanced app_service.update_app to sync name, description, and icon settings to Site
- Modified app_service.update_app_name to sync name changes to Site title
- Updated app_service.update_app_icon to sync icon changes to Site

This ensures that users always see the most up-to-date information when viewing
applications through the web interface.
This commit is contained in:
xzj16125 2025-03-13 01:43:05 +08:00
parent 5019547d33
commit 30481ed8db

View File

@ -19,7 +19,7 @@ from core.tools.utils.configuration import ToolParameterConfigurationManager
from events.app_event import app_was_created from events.app_event import app_was_created
from extensions.ext_database import db from extensions.ext_database import db
from models.account import Account from models.account import Account
from models.model import App, AppMode, AppModelConfig from models.model import App, AppMode, AppModelConfig, Site
from models.tools import ApiToolProvider from models.tools import ApiToolProvider
from services.tag_service import TagService from services.tag_service import TagService
from tasks.remove_app_and_related_data_task import remove_app_and_related_data_task from tasks.remove_app_and_related_data_task import remove_app_and_related_data_task
@ -229,6 +229,18 @@ class AppService:
app.use_icon_as_answer_icon = args.get("use_icon_as_answer_icon", False) app.use_icon_as_answer_icon = args.get("use_icon_as_answer_icon", False)
app.updated_by = current_user.id app.updated_by = current_user.id
app.updated_at = datetime.now(UTC).replace(tzinfo=None) app.updated_at = datetime.now(UTC).replace(tzinfo=None)
site = db.session.query(Site).filter(Site.app_id == app.id).first()
if site:
site.title = app.name
site.description = app.description
site.icon_type = app.icon_type
site.icon = app.icon
site.icon_background = app.icon_background
site.use_icon_as_answer_icon = app.use_icon_as_answer_icon
site.updated_by = current_user.id
site.updated_at = datetime.now(UTC).replace(tzinfo=None)
db.session.commit() db.session.commit()
if app.max_active_requests is not None: if app.max_active_requests is not None:
@ -246,6 +258,13 @@ class AppService:
app.name = name app.name = name
app.updated_by = current_user.id app.updated_by = current_user.id
app.updated_at = datetime.now(UTC).replace(tzinfo=None) app.updated_at = datetime.now(UTC).replace(tzinfo=None)
site = db.session.query(Site).filter(Site.app_id == app.id).first()
if site:
site.title = name
site.updated_by = current_user.id
site.updated_at = datetime.now(UTC).replace(tzinfo=None)
db.session.commit() db.session.commit()
return app return app
@ -262,6 +281,14 @@ class AppService:
app.icon_background = icon_background app.icon_background = icon_background
app.updated_by = current_user.id app.updated_by = current_user.id
app.updated_at = datetime.now(UTC).replace(tzinfo=None) app.updated_at = datetime.now(UTC).replace(tzinfo=None)
site = db.session.query(Site).filter(Site.app_id == app.id).first()
if site:
site.icon = icon
site.icon_background = icon_background
site.updated_by = current_user.id
site.updated_at = datetime.now(UTC).replace(tzinfo=None)
db.session.commit() db.session.commit()
return app return app