交付出件箱

← 返回出件箱

⚠️ 已过期 —— 现行接力档是 handoff-cockpit-20260819.md。本文仅存档。

接力档 · 渠道机构驾驶舱大屏调研

2026-08-15 收口 · 供新会话直接接手
状态:调研定稿,等摸底 SQL 结果。长官明确指示"先别开工"。
本档取代 handoff-geo-cockpit-20260814.md(已过期)


一、开局必读四条

  1. 不写业务代码。 长官原话:"先别开工,我现在要的是数据报告、调研报告"。
  2. 不要提工期排期。 长官后来明确:"我需要的是调研报告,并未到实施的方案(比如具体工期什么的)"。定稿版已删掉全部人日/里程碑。
  3. 报告按长官定的写法:每块先给「结论:」一句话 + 表格承载细节 + 砍掉论证过程。详见记忆 feedback-plain-language-version。
  4. 交付走公网链接:sg devshare -c 'cp ~/reports/x.md ~/reports/shared/',然后给 https://dev-tokyo.tail3912a6.ts.net/x.md。别在本机 curl 验证(返 000 是设计如此)。

二、当前交付物(哪份是正的)

文件 用途 状态
cockpit-research-20260815.md 最终调研报告 · 12 模块 · 九章 ✅ 正本,给长官/老板看这份
cockpit-mockup-20260815.html 原型图 · 12 模块全画 + 详情面板 + 双模式对照 + 3 张说明表 ✅ 正本,但没人肉眼看过(见 §八)
geo-cockpit-baseline-sql-20260814.md 摸底 SQL · 10 段覆盖报告第九章 9 项 ✅ 现行,转给有生产库权限的同事
renewal-cockpit-proposal-20260815.md 技术版 v1.1 · 完整论证与证据索引 📚 供技术评审复核
geo-cockpit-research-v3-20260815.md 技术调研 v3.0 📚 历史
geo-cockpit-exec-brief-20260815.md 管理层汇报版(另一种风格) 📚 历史
geo-cockpit-research-v1/v2 早期版本 📚 历史

三、业务模型(已核实,别再猜)

项 系统实际
服务周期 订单带服务天数,默认 365 天;自助链接强制 365,平台端可自定义
续费 "续费"订单 → 付款确认 → 到期日顺延(未到期从原到期日累加,已过期从当前起算)
增购 新增席位独立算到期日,自开通日起
未激活席位 售出未登录不计时、无到期日,续期加天数不加日期
永久席位 存在,无到期日,不需续费
结算账期 半月制,与服务周期是两套独立时间体系

长官最初说"按月续费、每月结算续约",核实后确认:服务周期是年,"按月"指的是结算账期。后来长官定调"按默认的来,系统本身怎么样就是怎么样"。


四、已定规则(长官拍板,不要再列成待确认)

# 规则 定论
1 待续费机构 任一批席位到期即计入,副指标显示涉及席位数
2 未激活席位 不进预警,单列"已售未启用X个"
3 永久席位 不进续费分母
4 活跃状态 四级:15分钟内 / 今日 / 7日内 / 沉默
5 统计口径 全部复用现有系统,大屏不新增算法
6 未定位机构 数量必须上屏,不隐藏
7 续费率 当期 + 滚动12月双口径
8 大区划分 标准七大区(我定的,长官授权),底层按省存,展示可合并
9 区域管理员角色 本期不做;但省→大区映射本期就建(地图筛选和智能洞察都要用)

五、四个真缺口(全部 grep 实证)

缺口 实证 结论
机构地理位置 全库无省市字段;名片坐标业务不强制;签约地址表单选填、审核只校验四类证照(store_signup.py:98,126-136) 🔴 最大缺口,需补录
在线状态 无状态 JWT,无心跳,登出不落库;access 30 分钟 / refresh 最长一年(jwt_local.py:26-29) ⚠️ 用活跃四级替代
强制下线 黑名单按 token 串拉黑(auth_service.py:357-360),服务端不持有他人 token。例外:席位每请求校验 device_id(middleware.py:255-257),改库即踢 🔧 管理员/渠道需新建,必须同时废 refresh,否则 30 分钟后自动续上
数据行级权限 核心侧 role_menu_permissions 只有(role,menu_key)二元组;但结算侧渠道隔离已在生产跑(settlement/backend/app/auth/zhaoyang_permissions.py:289-314,服务端反查 channel_id 不信任客户端) 🟢 渠道可沿用,区域需新建

关键有利条件:机构、渠道、续费、登录四类数据同一个物理库(settlement/deploy/docker-compose.prod.yml:32-34),一条 SQL 串起来,不需跨服务编排。


六、现成可复用(别重造)

能力 出处
席位每批开通/续费明细(含真实起止日期,甘特图零补录) settlement/backend/app/models/settlement.py:584-613
订单金额与到账 同上 510-583、358-374
通用操作审计表(含前后快照 + request_id) 同上 615-639
启停 / 重置密码 / 解锁 admin_users.py:163,185,203、seat_service.py:288,445
活跃机构统计口径(大屏必须复用) admin_activity.py:674,827,840
暴力破解 + IP 横向扫描防护 seat_auth.py:141-190
IP 归属地库 pypi XdbSearchIP 自带数据,见记忆 reference-ip2region-offline-lib

七、下一步只有一件事

跑摸底 SQL。 云机不连生产库,必须由有权限的同事执行。10 段只读查询,约 2 分钟。

核心判据:

指标 结果 行动
机构可定位率 ≥70% 地图与地区维度全部可做
40~70% 可做,需同步补录
<40% 地图价值有限,先补数据
登录 IP 内网占比 明显偏高 先修部署配置
未来12月到期分布 有高峰月 到期分布视图优先

八、报告里没写的两项(长官明确不加)

若后续要给老板演示交互、或要定手机端范围,这两项需补。


九、原型图状态(2026-08-15 新增)

文件:~/reports/cockpit-mockup-20260815.html(178KB,全内联零外链)

已做到(原型规范 §六 13 项中 11 项):
- 色值全扒自现网(phase52-org-insight-ranking.html 的 :root + minicup-ui.tsx 的 statusClass()),
白名单外 0 个(第一版自造了 3 个,自查抓出已改)
- 字段可得性表带物理代码行号:organization.py:20 / user.py:102,108 / audit.py:37 /
settlement.py:125,205,220,229,567(每个都 sed 打开确认过,不是只信 grep)
- 中国地图用 echarts 4.9.0 官方省级边界(map/json/china.json,zigzag+delta 编码需自写解码器),
34 省独立着色;投影 x=(lng-73)*10, y=(53-lat)*12,与城市点位同一套
- 几何验证:11 个城市点做点在多边形内判定,全部落对省份(北京→北京、广州→广东…)
- DOM 闭合 div/span/svg/path/table/tr/td 差值全为 0
- 标注只有一种(橙虚线,全图 1 处,打在地图上标「需补数据」)
- 双模式对照(投屏 ‖ 操作)满足规范 §二「对照布局」要求

没做到(2 项,环境限制):
- ❌ 真渲染 + 用 Read 看图
- ❌ 溢出自查报 0

原因:本机无浏览器。chromium 二进制已绕白名单下到(见记忆 reference-cloud-chromium-render),
但缺 12 个系统图形库,无免密 sudo、三个 apt 源全 000、dev2 家目录 750、无 docker —— 路已走绝。

root 装完库后要做的第一件事:渲染这张图 + 跑溢出自查,补上那两项自检。

已知待优化(长官已知,未做):
- 联动下钻只在模块 2/3/12 散着提了几句,无系统章节
- 移动端轻量版只剩技术选型表一行
- 地图上未体现「41 家未定位机构」的角标


十、环境注意

  1. 写 ~/reports/shared/ 用 sg devshare -c '...',进程没继承组,直接 cp 会 Permission denied。详见记忆 project-shared-outbox-write-denied。
  2. 当前分支 worktree-bridge-cse_01496791TKo63ySaHYCggqNc,工作区无代码改动,全程只写 ~/reports/ 和 worktree 的 reports-out/。
  3. 本机不连生产库、不跑全量 e2e,数据类结论一律标"未实测"。
  4. 等 root 执行(已 apt-get -s 模拟验证:新增 37 包 · 卸载 0 · 升级 0 · 全 Ubuntu 22.04 官方源):
    sudo apt-get install -y libatk1.0-0 libatk-bridge2.0-0 libxcomposite1 libxdamage1 \ libxfixes3 libxrandr2 libgbm1 libxkbcommon0 libasound2 libatspi2.0-0 libcairo2 libpango-1.0-0
    装前看 free -m(08-15 收口时 available 894MB,略低于云机要求的 1G)。
  5. ECharts 按需引入铁律已立(记忆 reference-echarts-ondemand-rule),
    实施引图表库前必读;08-15 基线:全量 import 0 处、core 0 处、现用 recharts。

本次会话零代码改动,产出为纯调研文档。