#!/usr/bin/env python3
"""
更新岗位描述脚本
为瑞小美轻医美连锁品牌的真实岗位添加专业描述
"""

import asyncio
import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).parent.parent))

from sqlalchemy import select, update
from app.core.database import AsyncSessionLocal
from app.models.position import Position
from app.core.logger import get_logger

logger = get_logger(__name__)

# 轻医美岗位描述映射
POSITION_DESCRIPTIONS = {
    # 医疗专业类
    "护士": "负责医美项目的护理工作，包括术前准备、术中配合、术后护理及客户健康指导",
    "护士长": "管理护理团队，制定护理标准流程，确保医疗安全和服务质量",
    "副护士长": "协助护士长管理护理团队，负责日常护理工作的督导和质量控制",
    "区域医务主任兼护士长": "统筹区域内各门店的医务管理工作，制定护理标准和培训体系",
    "储备护士长": "接受护士长岗位培训，准备承担护理团队管理工作",
    "皮肤科医生": "提供专业皮肤诊疗服务，制定个性化医美方案，确保客户安全和效果",
    "皮肤科助理医生": "协助主治医生进行皮肤诊疗工作，参与医美项目的实施",
    "微创技术院长": "负责微创医美技术的研发和应用，带领技术团队提升专业水平",
    
    # 咨询销售类
    "美学规划师": "为客户提供专业医美咨询，设计个性化美丽方案，促进项目成交",
    "美学规划师兼店长": "负责门店运营管理的同时，担任首席美学规划师",
    "见习美学规划师": "接受美学规划专业培训，学习咨询技巧和方案设计",
    "会员服务经理": "负责VIP会员的全周期服务管理，提升客户满意度和复购率",
    "网络咨询专员": "通过线上渠道为客户提供医美咨询服务，引导到店体验",
    
    # 管理类
    "院长": "全面负责门店运营管理、团队建设、业绩达成和客户服务质量",
    "连锁院长": "统筹多家门店的运营管理，制定标准化流程，推动连锁发展",
    "店长": "负责门店日常运营管理、团队协调和业绩目标达成",
    "区域总经理&人才战略董事&瑞小美学苑苑长": "负责区域战略规划、人才培养体系建设和学苑运营管理",
    "微创运营经理": "负责微创项目的运营推广和业绩管理",
    "储备总经理助理": "接受高管培训，准备承担门店总经理工作",
    
    # 客服服务类
    "前厅接待": "负责客户接待、预约管理、环境维护，提供优质的前台服务",
    "分诊结算专员": "负责客户分诊引导和费用结算工作，确保流程顺畅",
    "客服总监": "统筹客户服务体系建设，制定服务标准，提升客户满意度",
    
    # 运营支持类
    "保洁员": "负责门店环境卫生维护，确保医美场所的清洁和消毒标准",
    "瑞柏美五象总院保洁员": "负责五象总院的环境卫生和消毒管理工作",
    "药房兼行政": "负责药品和医疗器械管理，同时协助行政事务处理",
    "行政采购": "负责门店物资采购和供应商管理，确保运营物资供应",
    
    # 市场品牌类
    "小红书运营专员": "负责小红书平台的内容运营和粉丝互动，提升品牌影响力",
    "电商运营": "负责线上商城的运营管理，推动电商业务发展",
    "医生IP运营": "负责医生个人品牌打造和IP运营，提升医生影响力",
    "设计总监": "负责品牌视觉设计、营销物料设计和品牌形象管理",
    "平面设计师": "负责平面设计工作，包括海报、宣传册、广告物料等",
    "摄影剪辑师": "负责门店的摄影摄像和视频剪辑工作，制作营销内容",
    "首席文化传播官": "负责企业文化建设和品牌传播策略制定",
    "AI PR": "负责品牌公关工作，运用AI技术提升传播效率",
    
    # 人力财务类
    "人事经理&瑞小美学苑执行秘书长": "负责人力资源管理和学苑行政工作",
    "人事专员&瑞小美学苑执行秘书": "负责人事日常工作和学苑事务协调",
    "薪酬服务BP": "负责薪酬福利管理和人力资源业务支持",
    "财务经理": "负责财务管理、成本控制和财务报表分析",
    "财务专员": "负责日常财务核算、报销审核和账务处理",
    "资金管理专员": "负责资金流管理、账户管理和资金调度",
    
    # 战略发展类
    "战投经理": "负责战略投资项目的评估和推进，支持公司扩张发展",
    "商业分析师": "负责业务数据分析和商业模式研究，支持决策制定",
    "AI维护程序员": "负责AI系统的维护和优化，支持智能化运营",
    
    # 高管类
    "总裁": "负责公司整体战略规划和经营管理，带领团队实现发展目标",
    "区域经理": "负责区域内多家门店的运营管理和业绩达成",
}


async def update_position_descriptions():
    """更新岗位描述"""
    logger.info("=" * 60)
    logger.info("开始更新岗位描述")
    logger.info("=" * 60)
    
    async with AsyncSessionLocal() as db:
        try:
            # 查询所有未删除的岗位
            stmt = select(Position).where(Position.is_deleted == False)
            result = await db.execute(stmt)
            positions = result.scalars().all()
            
            logger.info(f"找到 {len(positions)} 个岗位")
            
            updated_count = 0
            for position in positions:
                # 查找匹配的描述
                description = POSITION_DESCRIPTIONS.get(position.name)
                
                if description:
                    position.description = description
                    logger.info(f"✓ 更新岗位: {position.name}")
                    updated_count += 1
                else:
                    # 如果没有匹配的描述，使用通用描述
                    position.description = f"{position.name}岗位，负责相关专业工作"
                    logger.info(f"○ 使用通用描述: {position.name}")
                    updated_count += 1
            
            # 提交更新
            await db.commit()
            
            logger.info("=" * 60)
            logger.info(f"✅ 成功更新 {updated_count} 个岗位描述")
            logger.info("=" * 60)
            
        except Exception as e:
            logger.error(f"更新失败: {str(e)}")
            await db.rollback()
            raise


if __name__ == "__main__":
    asyncio.run(update_position_descriptions())


