Files
cma-management/backend/scripts/seed_manufacturing_pack.py

125 lines
5.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""OKR模板库 — 制造业行业包(6个模板,source='industry_pack', industry_tag='manufacturing'"""
import sys, os, logging
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
from app.database import get_session_local
from app.models import OKRTemplate
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("seed_manufacturing_pack")
MANUFACTURING_TEMPLATES = [
{
"name": "提升产能利用率",
"description": "优化排产与设备管理,提升产能利用率",
"dimension": "process",
"layer": "level2",
"industry_tag": "manufacturing",
"source": "industry_pack",
"sort_order": 301,
"preset_krs": [
{"name": "产能利用率≥85%", "target_value": "≥85%", "weight": 34, "sort_order": 1},
{"name": "设备停机时间下降≥20%", "target_value": "≥20%", "weight": 33, "sort_order": 2},
{"name": "OEE综合效率≥75%", "target_value": "≥75%", "weight": 33, "sort_order": 3},
],
},
{
"name": "降低生产成本",
"description": "通过精益生产与供应链优化降低制造成本",
"dimension": "finance",
"layer": "level2",
"industry_tag": "manufacturing",
"source": "industry_pack",
"sort_order": 302,
"preset_krs": [
{"name": "单位制造成本下降≥10%", "target_value": "≥10%", "weight": 34, "sort_order": 1},
{"name": "原材料损耗率≤2%", "target_value": "≤2%", "weight": 33, "sort_order": 2},
{"name": "采购成本下降≥5%", "target_value": "≥5%", "weight": 33, "sort_order": 3},
],
},
{
"name": "提升产品一次合格率",
"description": "强化质量管控,降低不良品率",
"dimension": "process",
"layer": "level2",
"industry_tag": "manufacturing",
"source": "industry_pack",
"sort_order": 303,
"preset_krs": [
{"name": "一次合格率≥98%", "target_value": "≥98%", "weight": 34, "sort_order": 1},
{"name": "客户投诉率下降≥30%", "target_value": "≥30%", "weight": 33, "sort_order": 2},
{"name": "质量返工成本下降≥20%", "target_value": "≥20%", "weight": 33, "sort_order": 3},
],
},
{
"name": "缩短交付周期",
"description": "优化生产计划与供应链协同,缩短订单交付周期",
"dimension": "customer",
"layer": "level2",
"industry_tag": "manufacturing",
"source": "industry_pack",
"sort_order": 304,
"preset_krs": [
{"name": "订单交付周期缩短≥15%", "target_value": "≥15%", "weight": 34, "sort_order": 1},
{"name": "准时交付率≥95%", "target_value": "≥95%", "weight": 33, "sort_order": 2},
{"name": "在制品库存下降≥20%", "target_value": "≥20%", "weight": 33, "sort_order": 3},
],
},
{
"name": "设备智能化升级",
"description": "推进设备数字化改造与智能制造",
"dimension": "learning",
"layer": "level2",
"industry_tag": "manufacturing",
"source": "industry_pack",
"sort_order": 305,
"preset_krs": [
{"name": "核心设备联网率≥70%", "target_value": "≥70%", "weight": 34, "sort_order": 1},
{"name": "自动化覆盖率≥50%", "target_value": "≥50%", "weight": 33, "sort_order": 2},
{"name": "数据采集点覆盖关键工序100%", "target_value": "100%", "weight": 33, "sort_order": 3},
],
},
{
"name": "安全生产零事故",
"description": "完善安全管理体系,实现安全生产零事故",
"dimension": "learning",
"layer": "level2",
"industry_tag": "manufacturing",
"source": "industry_pack",
"sort_order": 306,
"preset_krs": [
{"name": "重大安全事故0起", "target_value": "0起", "weight": 40, "sort_order": 1},
{"name": "安全隐患整改率100%", "target_value": "100%", "weight": 30, "sort_order": 2},
{"name": "安全培训覆盖率100%", "target_value": "100%", "weight": 30, "sort_order": 3},
],
},
]
def seed_manufacturing_pack():
"""插入制造业行业包(幂等:按industry_tag去重)"""
db = get_session_local()()
try:
existing = db.query(OKRTemplate).filter(
OKRTemplate.industry_tag == "manufacturing",
OKRTemplate.source == "industry_pack",
).count()
if existing > 0:
logger.info(f"已有 {existing} 条制造业行业包模板,跳过")
return
for item in MANUFACTURING_TEMPLATES:
db.add(OKRTemplate(**item))
db.commit()
logger.info(f"✔ 已插入 {len(MANUFACTURING_TEMPLATES)} 条制造业行业包模板")
except Exception as e:
db.rollback()
logger.error(f"制造业行业包插入失败: {e}")
raise
finally:
db.close()
if __name__ == "__main__":
seed_manufacturing_pack()
logger.info("OKR制造业行业包初始化完成")