diff --git a/backend/routes.py b/backend/routes.py index 89b0ba2..356f528 100644 --- a/backend/routes.py +++ b/backend/routes.py @@ -14,7 +14,7 @@ from helpers import add_file_index, attach_common, monthly_finance bp = Blueprint("api", __name__) -ALL_TENANTS = ["总览", "科普·无界", "科研·无界", "医患·无界", "MCN·无界", "学术·无界"] +ALL_TENANTS = ["科普·无界", "科研·无界", "医患·无界", "MCN·无界", "学术·无界"] TABLES = { "sales": ("sales_leads", ["target_customer", "priority", "status", "tenant"]), @@ -75,7 +75,7 @@ def auth_login(): session["display_name"] = user["display_name"] session["role"] = user["role"] if user["role"] == "admin": - session["tenants"] = ["总览", "科普·无界", "科研·无界", "医患·无界", "MCN·无界", "学术·无界"] + session["tenants"] = ["科普·无界", "科研·无界", "医患·无界", "MCN·无界", "学术·无界"] else: ut = rows(conn, "SELECT tenant FROM user_tenants WHERE user_id=?", (user["id"],)) session["tenants"] = [x["tenant"] for x in ut] @@ -126,10 +126,9 @@ def auth_me(): if "user_id" not in session: return jsonify({"logged_in": False}) tenants = session.get("tenants", []) - tenants = [t if t != "总工作台" else "总览" for t in tenants] + tenants = [t if t != "总工作台" else "科普·无界" for t in tenants] tenants = [t if t != "学会·无界" else "学术·无界" for t in tenants] - if "总览" not in tenants: - tenants = ["总览"] + tenants + tenants = [t for t in tenants if t != "总览" and t != "总工作台"] return jsonify({ "logged_in": True, "user": {"id": session["user_id"], "username": session["username"], "display_name": session["display_name"], "role": session["role"]}, @@ -263,47 +262,13 @@ def bootstrap(): _year = date.today().year tenant = request.args.get("tenant", session.get("tenants", ["科普·无界"])[0]) allowed = session.get("tenants", []) - allowed = [t if t != "总工作台" else "总览" for t in allowed] + allowed = [t if t != "总工作台" else "科普·无界" for t in allowed] allowed = [t if t != "学会·无界" else "学术·无界" for t in allowed] - if "总览" not in allowed: - allowed = ["总览"] + allowed + allowed = [t for t in allowed if t != "总览" and t != "总工作台"] if tenant not in allowed: - tenant = allowed[0] + tenant = allowed[0] if allowed else "" conn = db() try: - if tenant == "总览": - real_tenants = [t for t in allowed if t != "总览"] - all_metrics = [] - all_monthly = [] - all_recent = [] - for t in real_tenants: - t_ops = attach_common(conn, "operations", rows(conn, "SELECT * FROM operation_projects WHERE tenant=? ORDER BY id ASC", [t])) - t_sales = attach_common(conn, "sales", rows(conn, "SELECT * FROM sales_leads WHERE tenant=? ORDER BY id DESC", [t])) - t_products = attach_common(conn, "products", rows(conn, "SELECT * FROM product_versions WHERE tenant=? ORDER BY id DESC", [t])) - t_proposals = attach_common(conn, "proposals", rows(conn, "SELECT * FROM business_proposals WHERE tenant=? ORDER BY id DESC", [t])) - t_pfs = rows(conn, "SELECT * FROM project_finances WHERE tenant=? ORDER BY id DESC", [t]) - t_expense = rows(conn, "SELECT * FROM expense_records WHERE tenant=? ORDER BY id DESC", [t]) - t_metrics = compute_metrics(t_pfs, t_ops, t_sales, t_products, t_proposals, t_expense, _year, conn, t) - all_metrics.append(t_metrics) - all_monthly.append(monthly_finance(conn, t)) - all_recent.extend(rows(conn, "SELECT * FROM follow_up_records WHERE tenant=? ORDER BY id DESC LIMIT 4", [t])) - agg = {} - for key in ["total_projects","total_proposals","total_products","upcoming_products","signed_amount","signed_annual","signed_q2","signed_month","signed_prev_q","signed_prev_month","revenue_annual","revenue_q2","monthly_revenue","revenue_prev_q","revenue_prev_month","gross_annual","gross_q2","monthly_net_profit","gross_prev_q","gross_prev_month","payment_annual","payment_q2","payment_month","payment_prev_q","payment_prev_month","cost_annual","cost_q2","cost_month","cost_prev_q","cost_prev_month","expense_annual","expense_q2","expense_month","expense_prev_q","expense_prev_month","paid_annual","paid_q2","paid_month","paid_prev_q","paid_prev_month","cashflow_annual","cashflow_q2","cashflow_month","cashflow_prev_q","cashflow_prev_month","expense_paid_annual","expense_paid_q2","expense_paid_month","expense_paid_prev_q","expense_paid_prev_month","dept_cf_annual","dept_cf_q2","dept_cf_month","dept_cf_prev_q","dept_cf_prev_month","profit_annual","profit_q2","profit_month","profit_prev_q","profit_prev_month","proj_expense_annual","proj_expense_q2","proj_expense_month","proj_expense_prev_q","proj_expense_prev_month"]: - agg[key] = sum(m.get(key, 0) for m in all_metrics) - merged_monthly = [] - for i in range(12): - m = {"month": all_monthly[0][i]["month"] if all_monthly and len(all_monthly[0]) > i else f"{_year}-{i+1:02d}"} - for field in ["revenue","gross","payment","cost","paid","sign"]: - m[field] = sum(tl[i][field] if i < len(tl) else 0 for tl in all_monthly) - merged_monthly.append(m) - summary = { - "project_name": "总览", - "metrics": agg, - "recent": sorted(all_recent, key=lambda x: x.get("id", 0), reverse=True)[:8], - "risks": [], - } - return jsonify({"summary": summary, "financeMonthly": merged_monthly, "tenant": tenant, "tenants": allowed}) - # 普通工作台:只查 summary 所需的数据(project_finances + operations + sales + products + proposals + expense) pfs = rows(conn, "SELECT * FROM project_finances WHERE tenant=? ORDER BY id DESC", [tenant]) operations = attach_common(conn, "operations", rows(conn, "SELECT * FROM operation_projects WHERE tenant=? ORDER BY id ASC", [tenant])) diff --git a/static/modules/finance.js b/static/modules/finance.js index 620ec32..38058ab 100644 --- a/static/modules/finance.js +++ b/static/modules/finance.js @@ -114,7 +114,7 @@ function renderFinance() { const finHeaderBase = `
OPC Manager v1.2.0.7
+OPC Manager v1.2.0.8