feat: 项目经费进度播报助手首版 v1.0.1(track-fund-progress-default)
All checks were successful
技能自动化发布 / release (push) Successful in 7s
All checks were successful
技能自动化发布 / release (push) Successful in 7s
This commit is contained in:
63
scripts/db/seed_data.py
Normal file
63
scripts/db/seed_data.py
Normal file
@@ -0,0 +1,63 @@
|
||||
"""业务种子数据:预警规则阈值。
|
||||
|
||||
init-db 幂等写入(存在即跳过,不覆盖管理员修改)。
|
||||
阈值缺省口径来自《核心建设内容:各部门"Skill"深度需求规格书》财务处 Skill 002:
|
||||
低于序时进度 10% 记"严重滞后",高于 20% 记"支出异常偏快";暂付款账龄 90 天。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import sqlite3
|
||||
|
||||
from util.timeutil import now_unix
|
||||
|
||||
# (rule_key, display_name, threshold_value, description)
|
||||
_SEED_ALERT_RULES: tuple[tuple[str, str, float, str], ...] = (
|
||||
(
|
||||
"lag_threshold",
|
||||
"严重滞后阈值",
|
||||
0.10,
|
||||
"实际支出率低于序时进度该比例(小数,0.10=10个百分点)时标记“严重滞后”。",
|
||||
),
|
||||
(
|
||||
"overshoot_threshold",
|
||||
"支出异常偏快阈值",
|
||||
0.20,
|
||||
"实际支出率高于序时进度该比例(小数,0.20=20个百分点)时标记“支出异常偏快”,预警年底突击花钱。",
|
||||
),
|
||||
(
|
||||
"pending_aging_days",
|
||||
"暂付款账龄提醒天数",
|
||||
90.0,
|
||||
"暂付款自最早发生日起超过该天数(天)时提醒及时冲销。",
|
||||
),
|
||||
(
|
||||
"closing_warn_days",
|
||||
"结题临近预警天数",
|
||||
90.0,
|
||||
"距执行期结束不足该天数(天)且支出率低于 80% 时提醒尽快完成报销。",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def seed_alert_rules(cursor: sqlite3.Cursor) -> int:
|
||||
"""幂等写入预警规则种子,返回新增条数。"""
|
||||
inserted = 0
|
||||
for rule_key, display_name, threshold_value, description in _SEED_ALERT_RULES:
|
||||
cursor.execute("SELECT COUNT(*) FROM alert_rules WHERE rule_key = ?", (rule_key,))
|
||||
if int(cursor.fetchone()[0]) > 0:
|
||||
continue
|
||||
cursor.execute(
|
||||
"""
|
||||
INSERT INTO alert_rules (rule_key, display_name, threshold_value, description, created_at, updated_at)
|
||||
VALUES (?, ?, ?, ?, ?, ?)
|
||||
""",
|
||||
(rule_key, display_name, threshold_value, description, now_unix(), now_unix()),
|
||||
)
|
||||
inserted += 1
|
||||
return inserted
|
||||
|
||||
|
||||
def seed_all(cursor: sqlite3.Cursor) -> dict[str, int]:
|
||||
"""写入全部业务种子,返回各类新增条数。"""
|
||||
return {"alert_rules": seed_alert_rules(cursor)}
|
||||
Reference in New Issue
Block a user