"""政策匹配 + 启动流程生成（逻辑后移至后端，前端只提交答案拿结果）"""
from . import policy_data


def compute_policy(ans):
    industry = ans.get("industry") or []
    policies = []
    subsidies = []
    loans = []

    # 基础政策（全员）
    policies.append({
        "name": "云南 AI·OPC 创业扶持政策",
        "org": "云南省人社厅 · 2026-07 印发",
        "note": "不强制高新技术背景，作家 / 短视频 / 民宿 / 咨询 / 设计 / 跨境等超级个体均可纳入；围绕创业生态、融资、人才评价、技能培训等 9 大方向。"
    })

    # 身份
    if ans.get("status") == "student":
        policies.append({"name": "高校毕业生创业扶持", "org": "省 / 市人社部门", "note": "毕业 5 年内高校毕业生创业，可享一次性创业补贴、社保补贴、创业担保贷款优先。"})
        subsidies.append({"name": "一次性创业补贴（高校毕业生）", "amount": "参考 5000–10000 元", "note": "首次创办经营主体并正常经营，可申请；以当地最新标准为准。"})
        subsidies.append({"name": "创业社保补贴（高校毕业生）", "amount": "按缴费比例补贴", "note": "毕业 5 年内创业缴纳社保，可申请补贴。"})
    if ans.get("status") == "unemployed":
        policies.append({"name": "就业创业扶持", "org": "人社部门", "note": "失业人员创业可申请一次性创业补贴与创业培训。"})
        subsidies.append({"name": "一次性创业补贴", "amount": "参考 5000–10000 元", "note": "首次创业并注册主体可申请；以当地最新标准为准。"})
    if ans.get("status") == "freelancer":
        subsidies.append({"name": "灵活就业社保补贴", "amount": "按比例", "note": "灵活就业人员缴纳社保可申请补贴（部分地区政策）。"})

    # 行业
    if "tourism" in industry:
        policies.append({"name": "云南文旅创业支持", "org": "文旅部门 / 地方", "note": "依托云南文旅流量，民宿 / 咖啡 / 农特产等轻资产创业有产业配套与专项支持。"})
    if "content" in industry:
        policies.append({"name": "内容创作 / IP 创业支持", "org": "人社 / 文旅", "note": "短视频创作者、内容 IP 属 OPC 重点扶持人群，AI 内容产出被明确鼓励。"})
    if "crossborder" in industry:
        policies.append({"name": "边贸 / 跨境创业支持", "org": "商务 / 边境县市", "note": "依托 25 个边境县市区位，跨境代运营 / 服务有政策倾斜。"})

    # 地区
    if ans.get("region") == "border":
        policies.append({"name": "边境县市创业优惠", "org": "边境县市", "note": "边境县市创业可能有房租 / 场地与就业专项补贴。"})
    if ans.get("region") == "dali":
        policies.append({"name": "大理 / 丽江文旅创业配套", "org": "地方文旅", "note": "文旅产业聚集区，民宿 / 文创有地方配套与资源对接。"})

    # 补贴通用
    subsidies.append({"name": "场地 / 房租补贴（入驻园区）", "amount": "按园区政策", "note": "入驻创业园区 / 孵化器，通常有房租减免或补贴。"})
    subsidies.append({"name": "创业培训补贴", "amount": "免费或补贴", "note": "参加人社部门创业培训，可免费或获补贴。"})

    # 贷款
    loans.append({"name": "创业担保贷款", "amount": "个人参考 10–30 万元", "note": "财政贴息，个人创业可申请；高校毕业生、返乡创业等优先。"})
    if ans.get("capital") in ("needloan", "lowcost"):
        loans.append({"name": "普惠小微贷款", "amount": "按资质核定", "note": "个体户 / 小微企业可申请银行普惠贷，利率较低。"})
    if ans.get("entity") == "company":
        loans.append({"name": "企业经营贷 / 信用贷", "amount": "按经营流水", "note": "企业可申请经营贷 / 信用贷。"})

    summary = f"综合你的身份、行业、地区与资金情况，为你匹配了 {len(policies)} 项适配政策、{len(subsidies)} 项补贴线索、{len(loans)} 项贷款参考。"
    return {"policies": policies, "subsidies": subsidies, "loans": loans, "summary": summary}


# ---------- 启动流程 ----------
STEP = {
    "park": {"title": "入驻创业园区", "desc": "联系园区运营方提交入驻申请，享房租减免、场地工位、政策对接与创业辅导。", "materials": ["创业计划 / 方向说明", "身份材料", "入驻申请表"], "time": "1–2 周", "cost": "多数园区免费或低租", "tips": "如昆明市大学生创业园（政府直属，人社局管理）等；入驻后优先对接园区内政策与资源。"},
    "register": {"title": "核名与注册主体", "desc": "到市场监管局（或线上）核名并注册个体户 / 公司，确定经营范围与经营者。", "materials": ["身份证", "1–3 个备选名称", "注册地址证明"], "time": "1–3 个工作日", "cost": "注册免费（刻章另计）", "tips": "经营范围覆盖实际要做的业务；线上「一窗通」可全程网办。"},
    "seal": {"title": "刻章与公安备案", "desc": "刻公章、财务章、法人章、发票章，并到公安机关备案。", "materials": ["营业执照", "法人身份证"], "time": "1–2 个工作日", "cost": "200–600 元", "tips": "备案章才可对外使用与办理后续业务。"},
    "tax": {"title": "税务登记", "desc": "税务报到、核定税种（增值税 / 个税）；办理银行扣税三方协议，可申领电子发票。", "materials": ["营业执照", "银行账号", "法人身份"], "time": "1–3 个工作日", "cost": "免费", "tips": "小规模纳税人一般季度申报；「三方协议」= 税务 + 银行 + 你 三方绑定扣税。"},
    "bank": {"title": "银行对公开户", "desc": "开对公账户（个体户可选），用于经营收款、贷款申请与扣税。", "materials": ["营业执照", "公章 / 财务章 / 法人章", "法人身份证"], "time": "1–2 周（银行预约制）", "cost": "0–200 元 / 年", "tips": "经营流水建议走对公，利于后续贷款与合规。"},
    "social": {"title": "社保 / 公积金开户（三方协议）", "desc": "为法人或雇员开社保、公积金账户，办理银行代扣三方协议。", "materials": ["营业执照", "身份证", "银行账号"], "time": "1 周内", "cost": "按缴费基数缴纳", "tips": "初创可先为法人参保；有雇工则必须参保。"},
    "report": {"title": "记账报税与补贴申报", "desc": "记账、按期申报（个体户可核定征收）；申报创业补贴 / 贷款 / 政策。", "materials": ["账务记录", "申报材料", "银行流水"], "time": "月度 / 季度", "cost": "代理记账约 100–300 元 / 月", "tips": "政策申报以官方最新文件为准；保留好经营记录，为补贴与贷款做准备。"},
}
ORDER = ["park", "register", "seal", "tax", "bank", "social", "report"]


def build_plan(opt):
    order = []
    if opt.get("needPark"):
        order.append("park")
    if opt.get("needRegister"):
        order.append("register")
    order.append("seal")
    order.append("tax")
    order.append("bank")
    if opt.get("hasStaff"):
        order.append("social")
    order.append("report")
    return [{"no": i + 1, **STEP[k]} for i, k in enumerate(order)]
