feat(annotation): 支持图像标注项目并添加内置标注模板

- 扩展标注编辑器支持 TEXT/IMAGE 数据类型
- 添加三个内置图像标注模板:目标检测、语义分割(掩码)、语义分割(多边形)
- 实现内置标注模板的数据库初始化功能
- 集成标注配置验证和模板管理服务
- 更新项目不支持提示信息以反映新的数据类型支持
This commit is contained in:
2026-01-25 18:35:07 +08:00
parent c5ace0c4cc
commit 250a13ff70
4 changed files with 166 additions and 3 deletions

View File

@@ -9,6 +9,7 @@ from starlette.exceptions import HTTPException as StarletteHTTPException
from .core.config import settings
from .core.logging import setup_logging, get_logger
from .db.session import AsyncSessionLocal
from .module.annotation.service.builtin_templates import ensure_builtin_annotation_templates
from .exception import (
starlette_http_exception_handler,
fastapi_http_exception_handler,
@@ -31,7 +32,15 @@ async def lifespan(app: FastAPI):
try:
async with AsyncSessionLocal() as session:
await session.execute(text("SELECT 1"))
logger.info(f"Database: mysql+aiomysql://{'*' * len(settings.mysql_user)}:{'*' * len(settings.mysql_password)}@{settings.mysql_host}:{settings.mysql_port}/{settings.mysql_database}")
logger.info(f"Database: mysql+aiomysql://{'*' * len(settings.mysql_user)}:{'*' * len(settings.mysql_password)}@{settings.mysql_host}:{settings.mysql_port}/{settings.mysql_database}")
try:
inserted = await ensure_builtin_annotation_templates(session)
if inserted > 0:
logger.info(f"内置标注模板初始化完成,新增 {inserted}")
else:
logger.info("内置标注模板已存在,跳过初始化")
except Exception as e:
logger.error(f"内置标注模板初始化失败: {e}")
except Exception as e:
logger.error(f"Database connection validation failed: {e}")
logger.debug(f"Connection details: {settings.database_url}")