"""用户简历表(bg_user_resume) 简历维度信息 + 个人基本信息合并存储 """ from datetime import datetime from typing import Optional from sqlalchemy import BigInteger, Integer, String, DateTime, JSON from sqlalchemy.orm import Mapped, mapped_column from app.core.database import Base class UserResume(Base): """用户简历表 bg_user_resume""" __tablename__ = "bg_user_resume" id: Mapped[int] = mapped_column(BigInteger, primary_key=True) user_id: Mapped[int] = mapped_column(BigInteger, nullable=False, comment="用户ID") # 简历维度信息 resume_name: Mapped[Optional[str]] = mapped_column(String(128), nullable=True, comment="简历名称") target_position: Mapped[Optional[str]] = mapped_column(String(128), nullable=True, comment="目标岗位") is_default: Mapped[int] = mapped_column(Integer, default=0, comment="是否默认简历 0=否 1=是") sort_order: Mapped[Optional[int]] = mapped_column(Integer, nullable=True, comment="排序序号") # 个人信息 avatar_url: Mapped[Optional[str]] = mapped_column(String(512), nullable=True, comment="头像URL") name: Mapped[Optional[str]] = mapped_column(String(64), nullable=True, comment="真实姓名") email: Mapped[Optional[str]] = mapped_column(String(128), nullable=True, comment="邮箱") mobile_number: Mapped[Optional[str]] = mapped_column(String(20), nullable=True, comment="手机号码") city: Mapped[Optional[str]] = mapped_column(String(64), nullable=True, comment="所在城市") wechat_number: Mapped[Optional[str]] = mapped_column(String(64), nullable=True, comment="微信号") portfolio_url: Mapped[Optional[str]] = mapped_column(String(512), nullable=True, comment="作品集链接") skills: Mapped[Optional[list]] = mapped_column(JSON, nullable=True, comment="技能标签列表") certificates: Mapped[Optional[list]] = mapped_column(JSON, nullable=True, comment="证书标签列表") summary: Mapped[Optional[str]] = mapped_column(String(2000), nullable=True, comment="个人概述") create_time: Mapped[datetime] = mapped_column(DateTime, default=datetime.now, comment="创建时间") update_time: Mapped[datetime] = mapped_column(DateTime, default=datetime.now, onupdate=datetime.now, comment="更新时间")