Files
opc-manager/backend/migrations/seed.py
mac c0fb382d78 feat: 大版本更新-工作台改版+总报完善+UI优化
工作台改版:
- 学会→学术, 总工作台→总览(数据库迁移+session清理)
- 侧边栏工作台从下拉菜单改为竖向平铺+独立图标
- 5个工作台去除部门模块, 只有总览显示
- 工作台顺序: 总览→学术→MCN→科普→医患→科研

经营月报+季度月报:
- 月度/季度总览改名(月度总览→经营月报, 季度总览→季度月报)
- 财务概览增加回款/项目现金流行(7行)
- 新增业务线经营情况卡片(毛利/平台费用/利润)
- 新增业务线现金流卡片(项目现金流/平台费用已付/业务线现金流)
- 季度月报完善为三卡片结构, 与经营月报一致
- 计划模块总览独立数据源(computePlanMonthly)

UI优化:
- 汇总卡片单行显示+5x2网格+去外层卡片
- 项目表格行高压缩(py-px+line-height:0.95)
- 表头不压缩, 只压缩tbody
- 加权/项目类型内联下拉去原生箭头+自定义箭头
- 加权/项目类型表头去除排序箭头
- 实际模块已付→支出, 已回款→回款, 成本→成本(不含平台费用)
- 现金流注释(回款-支出)
- 卡片间距/筛选区/tip高度压缩
- 实际模块增加执行提示tip

修复:
- routes.py planFinances client_name列去重
- plan_expense.js savePlanExpense改用api()+load()
- plan.js createPlanFinance拆分try-catch
- 版本号 v1.0.0.35
2026-07-08 20:39:44 +08:00

58 lines
2.1 KiB
Python

"""migrations/seed.py — 初始化默认用户和示例数据(仅在空库时执行)"""
from datetime import date
def migrate_seed_users():
"""初始化默认用户和工作台权限(仅空库时执行)"""
from db import db, _exec, one
from werkzeug.security import generate_password_hash
conn = db()
try:
if one(conn, "SELECT id FROM users LIMIT 1"):
return # 已有用户,跳过
default_users = [
("qiukai", "yxcowork2026", "qiukai", "admin"),
("kepu", "kepu123", "科普负责人", "opc_owner"),
("keyan", "keyan123", "科研负责人", "opc_owner"),
("yihuan", "yihuan123", "医患负责人", "opc_owner"),
("mcn", "mcn123", "MCN负责人", "opc_owner"),
("wuji", "wuji123", "无界负责人", "opc_owner"),
]
for username, pwd, display, role in default_users:
_exec(conn, "INSERT INTO users (username, password_hash, display_name, role, created_at) VALUES (?,?,?,?,?)",
(username, generate_password_hash(pwd, "pbkdf2:sha256"), display, role, date.today().isoformat()))
# 绑定工作台
tenant_map = [
("kepu", "科普·无界"), ("keyan", "科研·无界"), ("yihuan", "医患·无界"),
("mcn", "MCN·无界"), ("wuji", "学术·无界"),
]
for uname, tenant in tenant_map:
u = one(conn, "SELECT id FROM users WHERE username=?", (uname,))
if u:
_exec(conn, "INSERT INTO user_tenants (user_id, tenant) VALUES (?,?)", (u["id"], tenant))
conn.commit()
print("[migrate] 默认用户已初始化")
finally:
conn.close()
def migrate_seed_demo_data():
"""填充初始示例数据(仅在空库时执行)"""
from db import db, one
from migrations.seed_data import seed_db
conn = db()
try:
if one(conn, "SELECT id FROM sales_leads LIMIT 1"):
return # 已有数据,跳过
finally:
conn.close()
seed_db()
print("[migrate] 示例数据已填充")