问题: 预算数据无map_id, 两地图共用KPI时预算无法区分(切地图数据均显示) 修复: - budget_plans 加 map_id 字段+索引 - list 支持 map_id 过滤(含NULL历史预算兼容迁移) - create 收 map_id + 去重键含map_id(同KPI不同地图可各自预算) - 前端: loadBudget/loadStrategyBudget 传 map_id, 保存带 map_id - 端到端验证: 地图51 F_REVENUE 300(map_id=51) 地图51显示/地图32不显示 ✓ pytest 35+11 passed, 部署
24 lines
1.3 KiB
Python
24 lines
1.3 KiB
Python
"""预算计划模型 — 管理会计OS"""
|
|
from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey, Text, func
|
|
from app.database import Base
|
|
|
|
|
|
class BudgetPlan(Base):
|
|
"""预算计划 — 按KPI按月分解的目标值"""
|
|
__tablename__ = "budget_plans"
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
entity_id = Column(Integer, default=1, comment="企业ID (P2多租户隔离 2026-08-23)")
|
|
map_id = Column(Integer, nullable=True, comment="归属战略地图ID (预算按地图隔离 2026-08-27)")
|
|
kpi_id = Column(Integer, ForeignKey("kpi_definitions.id"), nullable=False, comment="关联KPI")
|
|
period = Column(String(20), nullable=False, comment="预算期间 2026-05")
|
|
budget_value = Column(Float, nullable=False, comment="预算值")
|
|
budget_year = Column(Integer, nullable=False, comment="预算年份")
|
|
budget_month = Column(Integer, nullable=False, comment="预算月份 1-12")
|
|
version = Column(String(20), default="v1.0", comment="版本号 v1.0/v2.0")
|
|
status = Column(String(20), default="active", comment="active/archived")
|
|
remark = Column(String(500), nullable=True, comment="备注")
|
|
created_by = Column(String(100), nullable=True)
|
|
created_at = Column(DateTime, server_default=func.now())
|
|
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
|