From d26d3dc3fa87b19e4b07248daab5c994543ae989 Mon Sep 17 00:00:00 2001 From: Pine Date: Mon, 24 Aug 2026 18:09:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(park):=20/park/api/screen/data=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=85=A8=E9=87=8F=E6=95=B0=E6=8D=AE=E7=BC=96=E8=BE=91?= =?UTF-8?q?=EF=BC=88=E5=8A=A8=E6=80=81/=E5=8C=BA=E5=9F=9F/=E4=BA=A7?= =?UTF-8?q?=E4=B8=9A=E6=9E=84=E6=88=90/=E8=90=A5=E6=94=B6/=E6=88=90?= =?UTF-8?q?=E7=AB=8B=E6=97=B6=E9=97=B4=E7=AD=89=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ScreenBody 增 intro/feed/zones/industryMix/address/phone/email/region/revenue_total/revenue_tax; update_screen 全量写入 data_json 并 refresh_engine;screen_view 返回 zones/industryMix/feed/region。 TestClient:PUT 名称+两段简介+动态+区域+产业+营收+成立时间 → snapshot 反映。 --- app/park/routers.py | 9 +++++++++ app/park/tenants.py | 34 +++++++++++++++++++++++----------- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/app/park/routers.py b/app/park/routers.py index 801ecb1..1125428 100644 --- a/app/park/routers.py +++ b/app/park/routers.py @@ -164,6 +164,15 @@ class ScreenBody(BaseModel): jobs: int | None = None area: int | None = None founded: int | None = None + address: str | None = None + phone: str | None = None + email: str | None = None + revenue_total: float | None = None + revenue_tax: float | None = None + intro: list[str] | None = None + feed: list[dict] | None = None + zones: list[dict] | None = None + industryMix: list[dict] | None = None # ==================== 健康 / 设置 / 引导 ==================== diff --git a/app/park/tenants.py b/app/park/tenants.py index cd9c407..c748185 100644 --- a/app/park/tenants.py +++ b/app/park/tenants.py @@ -382,9 +382,11 @@ def screen_view(tenant_id: str) -> dict: "name": t.get("name", ""), "intro": t.get("intro", []), "founded": park.get("founded"), "province_level": park.get("province_level") or park.get("provinceLevel"), "area": park.get("area"), - "address": park.get("address"), "phone": park.get("phone"), "email": park.get("email"), + "region": park.get("region", ""), "address": park.get("address"), "phone": park.get("phone"), "email": park.get("email"), "capacity": d.get("projects", {}).get("capacity"), "invested": d.get("projects", {}).get("invested"), "jobs": d.get("jobs", {}).get("total"), "revenue_total": d.get("revenue", {}).get("total"), "revenue_tax": d.get("revenue", {}).get("tax"), + "zones": d.get("zones", []), "industryMix": d.get("industryMix", []), "feed": d.get("feed", []), + "as_of": d.get("as_of", ""), } @@ -394,20 +396,30 @@ def update_screen(tenant_id: str, payload: dict) -> dict: if payload.get("name"): d["_name"] = payload["name"] # 名称存租户 name 列,见下 park = dict(d.get("park", {})) - for k in ("founded", "area", "address", "phone", "email"): + for k in ("founded", "area", "address", "phone", "email", "region"): if payload.get(k) is not None: park[k] = payload[k] d["park"] = park - for k, sub in (("capacity", "projects"), ("invested", "projects"), ("jobs", "jobs"), ("revenue_total", "revenue"), ("revenue_tax", "revenue")): + proj = dict(d.get("projects", {})) + if payload.get("capacity") is not None: + proj["capacity"] = payload["capacity"] + if payload.get("invested") is not None: + proj["invested"] = payload["invested"] + d["projects"] = proj + jobs = dict(d.get("jobs", {})) + if payload.get("jobs") is not None: + jobs["total"] = payload["jobs"] + d["jobs"] = jobs + rev = dict(d.get("revenue", {})) + if payload.get("revenue_total") is not None: + rev["total"] = payload["revenue_total"] + if payload.get("revenue_tax") is not None: + rev["tax"] = payload["revenue_tax"] + d["revenue"] = rev + # 动态 / 区域 / 产业构成(整表替换,可全量编辑) + for k in ("feed", "zones", "industryMix"): if payload.get(k) is not None: - s = dict(d.get(sub, {})) - target = "total" if sub in ("jobs", "revenue") and k != "revenue_total" and k != "revenue_tax" else ("capacity" if k == "capacity" else "invested" if k == "invested" else ("tax" if k == "revenue_tax" else "total")) - if sub == "revenue": - target = "total" if k == "revenue_total" else "tax" - if sub == "jobs": - target = "total" - s[target] = payload[k] - d[sub] = s + d[k] = payload[k] conn = _conn() name = payload.get("name") or t["name"] intro = payload.get("intro") or t.get("intro", [])