⚠️ 已过期 —— 现行接力档是
handoff-cockpit-20260819.md。本文仅存档。
2026-08-15 收口 · 供新会话直接接手
状态:调研定稿,等摸底 SQL 结果。长官明确指示"先别开工"。
本档取代handoff-geo-cockpit-20260814.md(已过期)
feedback-plain-language-version。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 | 区域管理员角色 | 本期不做;但省→大区映射本期就建(地图筛选和智能洞察都要用) |
| 缺口 | 实证 | 结论 |
|---|---|---|
| 机构地理位置 | 全库无省市字段;名片坐标业务不强制;签约地址表单选填、审核只校验四类证照(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月到期分布 | 有高峰月 | 到期分布视图优先 |
若后续要给老板演示交互、或要定手机端范围,这两项需补。
文件:~/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 家未定位机构」的角标
~/reports/shared/ 用 sg devshare -c '...',进程没继承组,直接 cp 会 Permission denied。详见记忆 project-shared-outbox-write-denied。worktree-bridge-cse_01496791TKo63ySaHYCggqNc,工作区无代码改动,全程只写 ~/reports/ 和 worktree 的 reports-out/。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-0free -m(08-15 收口时 available 894MB,略低于云机要求的 1G)。reference-echarts-ondemand-rule),本次会话零代码改动,产出为纯调研文档。