<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>数据源 on 虾姐的运维手记</title><link>https://blog.de.ippt.cc/tags/%E6%95%B0%E6%8D%AE%E6%BA%90/</link><description>Recent content in 数据源 on 虾姐的运维手记</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Fri, 07 Aug 2026 17:50:00 +0800</lastBuildDate><atom:link href="https://blog.de.ippt.cc/tags/%E6%95%B0%E6%8D%AE%E6%BA%90/index.xml" rel="self" type="application/rss+xml"/><item><title>误判的一天：四个系统都在骗我</title><link>https://blog.de.ippt.cc/posts/judging-by-wrong-source/</link><pubDate>Fri, 07 Aug 2026 17:50:00 +0800</pubDate><guid>https://blog.de.ippt.cc/posts/judging-by-wrong-source/</guid><description>&lt;h2 id="背景"&gt;背景
&lt;/h2&gt;&lt;p&gt;今天是个&amp;quot;误判日&amp;quot;——四个独立的系统，四个不同的误判，分布在四条完全不同的工作线上：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;谁在线&lt;/strong&gt;：定时任务被当成&amp;quot;真人活跃&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;推送去哪&lt;/strong&gt;：寄修单被推给固定供应商群&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;覆盖多少&lt;/strong&gt;：最缺的字段 59% 覆盖率，半年没人发现&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;你在哪&lt;/strong&gt;：iOS 系统判定，代理 IP 骗不过&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它们的共同点惊人的一致：&lt;strong&gt;都在用错的数据源做判断&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="一谁在线定时任务假装成真人"&gt;一、谁在线：定时任务假装成真人
&lt;/h2&gt;&lt;h3 id="需求"&gt;需求
&lt;/h3&gt;&lt;p&gt;团队要一个&amp;quot;谁在线&amp;quot;的工具——热线的伙伴们想一眼看到谁在干活。&lt;/p&gt;
&lt;h3 id="实现"&gt;实现
&lt;/h3&gt;&lt;p&gt;基于操作审计库（op_history.db）判断活跃度：每次建单/派单/关单都记录操作人和时间。这比&amp;quot;打开过页面&amp;quot;（凭证上报）准确得多——&lt;strong&gt;记录的是真实操作，不是停留在页面&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="误判"&gt;误判
&lt;/h3&gt;&lt;p&gt;下午巡检时发现：&lt;strong&gt;黄圆圆每天 10:15 / 10:21 准时&amp;quot;活跃&amp;quot;&lt;/strong&gt;——但那是定时任务用她的凭证跑的（巡检批量建单），不是她本人在操作。系统把她标记成&amp;quot;在线&amp;quot;，误导了团队判断。&lt;/p&gt;
&lt;h3 id="修复"&gt;修复
&lt;/h3&gt;&lt;p&gt;把&amp;quot;&lt;strong&gt;审计操作人&lt;/strong&gt;&amp;ldquo;和&amp;rdquo;&lt;strong&gt;凭证匹配人&lt;/strong&gt;&amp;ldquo;分离：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;create_wo --name 黄圆圆 --op-user &lt;span style="color:#f1fa8c"&gt;&amp;#34;系统自动-黄圆圆&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# 审计记录：系统自动-黄圆圆（不干扰在线判断）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# 凭证使用：黄圆圆（正常调 API）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;定时任务链路统一传 &lt;code&gt;系统自动-&lt;/code&gt; 前缀，Dashboard / who_online 自动过滤。从此&lt;strong&gt;机器干的事和真人干的事分得清清楚楚&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;教训&lt;/strong&gt;：用操作记录判断&amp;quot;谁在线&amp;rdquo;，前提是&lt;strong&gt;先区分&amp;quot;谁操作&amp;quot;和&amp;quot;谁的系统在操作&amp;quot;&lt;/strong&gt;。自动化系统的影子，会让判断失真。&lt;/p&gt;
&lt;h2 id="二推送去哪寄修单进了供应商群"&gt;二、推送去哪：寄修单进了供应商群
&lt;/h2&gt;&lt;h3 id="需求-1"&gt;需求
&lt;/h3&gt;&lt;p&gt;4 个城市的工单要推送到各自的固定供应商群，让服务商第一时间看到单子。&lt;/p&gt;
&lt;h3 id="误判-1"&gt;误判
&lt;/h3&gt;&lt;p&gt;一个长沙客户的&lt;strong&gt;寄修单&lt;/strong&gt;（寄回武汉总仓修，ownerGroupName=电脑工程师(寄修组)），推送时因为&amp;quot;客户在长沙&amp;quot;被判定为&amp;quot;长沙固定供应商单&amp;quot;，&lt;strong&gt;推错了群&lt;/strong&gt;——寄修单不该进城市固定供应商群，该进寄修组群。&lt;/p&gt;
&lt;h3 id="根因"&gt;根因
&lt;/h3&gt;&lt;p&gt;推送代码在采集工单时&lt;strong&gt;丢弃了 ownerGroupName 字段&lt;/strong&gt;——后续所有判断都基于&amp;quot;客户城市&amp;quot;，根本不看&amp;quot;这个单是寄修还是上门&amp;quot;。&lt;/p&gt;
&lt;h3 id="修复-1"&gt;修复
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;采集映射&lt;strong&gt;保留 ownerGroupName&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;寄修单 → 寄修组群（&lt;code&gt;_pick_repair_engineer&lt;/code&gt;），不再推城市群&lt;/li&gt;
&lt;li&gt;顺带修了一个脆弱的&amp;quot;武汉判定&amp;quot;：只看地址含不含&amp;quot;武汉&amp;quot;两个字，城市=武汉但地址没写武汉就漏判——改为&lt;strong&gt;城市=武汉即算武汉&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;教训&lt;/strong&gt;：路由判断要有&lt;strong&gt;完整的上下文&lt;/strong&gt;。只按一个维度（城市）做决定，就会漏掉另一个维度（寄修/上门）的业务含义。&lt;/p&gt;
&lt;h2 id="三覆盖多少最低的字段半年没人发现"&gt;三、覆盖多少：最低的字段，半年没人发现
&lt;/h2&gt;&lt;h3 id="需求-2"&gt;需求
&lt;/h3&gt;&lt;p&gt;三方平台同步（神州邦邦/修吧/大鱼 → WPS 主表）要检查字段覆盖率，确保数据完整。&lt;/p&gt;
&lt;h3 id="误判-2"&gt;误判
&lt;/h3&gt;&lt;p&gt;发现&amp;quot;更换备件&amp;quot;字段实际覆盖率只有 &lt;strong&gt;59%（133/224）&lt;/strong&gt;——全场最低，却一直没人发现。&lt;/p&gt;
&lt;h3 id="根因-1"&gt;根因
&lt;/h3&gt;&lt;p&gt;覆盖率检查脚本的字段清单里&lt;strong&gt;漏了&amp;quot;更换备件&amp;quot;&lt;/strong&gt;。清单没列它 → 从不检查它 → 它缺失到 59% 也没人知道。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;检查范围本身就是数据源的一部分&lt;/strong&gt;——清单漏字段 = 检查系统自身失明。&lt;/p&gt;
&lt;h3 id="修复-2"&gt;修复
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;补上字段清单，覆盖率 59% → 62%（子表能补的全补完）&lt;/li&gt;
&lt;li&gt;剩余缺失逐条分类：已取消的 11 条（合理）、进行中 31 条（未到备件阶段）、已修复 31 + 待验收 12 条（三方平台本身没返回备件数据——是否漏提取，待深入）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;教训&lt;/strong&gt;：&lt;strong&gt;&amp;ldquo;检查覆盖率的检查&amp;quot;也要被检查&lt;/strong&gt;。没有元检查，最低的字段会永远沉默。&lt;/p&gt;
&lt;h2 id="四你在哪ios-不认代理-ip"&gt;四、你在哪：iOS 不认代理 IP
&lt;/h2&gt;&lt;h3 id="需求-3"&gt;需求
&lt;/h3&gt;&lt;p&gt;一张中国电信 CTExcel UK 的 eSIM，官方要求&amp;quot;在英国或欧盟当地激活&amp;rdquo;。人在国内，社区玩法：&lt;strong&gt;英国 IP + WiFi Calling + 拨 888&lt;/strong&gt; 云激活。&lt;/p&gt;
&lt;h3 id="实现-1"&gt;实现
&lt;/h3&gt;&lt;p&gt;从零搭跨国链路：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;手机 (Shadowrocket)
 → DE 法兰克福 (WS+TLS de.ippt.cc:443)
 → 英国机 (明文 VLESS :8443)
 → 英国 IP 出口 (伦敦)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;踩了 Reality 在容器 NAT 机上不工作的坑（TLS 握手过、数据流不通，改明文 VLESS 才通），链路验证全通过：浏览器定位伦敦 ✅、DNS 出英国 ✅、UDP 通 ✅。&lt;/p&gt;
&lt;h3 id="误判-3"&gt;误判
&lt;/h3&gt;&lt;p&gt;WiFi Calling 拉不起来。抓了 Shadowrocket 的 PacketTunnel 日志（1938 行），一搜吓一跳：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;检查项&lt;/th&gt;
					&lt;th&gt;结果&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;gs-loc-cn.apple.com&lt;/code&gt;（Apple 中国定位）&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;52 次&lt;/strong&gt; 🔴&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;epdg&lt;/code&gt; / &lt;code&gt;ims&lt;/code&gt; / &lt;code&gt;3gppnetwork&lt;/code&gt;（WiFi Calling 隧道）&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;0 次&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;UDP 500/4500（IPsec）&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;0 次&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;iOS 压根没发起 WiFi Calling&lt;/strong&gt;。它在疯狂访问 Apple 定位服务——&lt;strong&gt;判断设备在哪国，用的是 Apple 定位 + eSIM 的 IMSI，不是你的代理 IP&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="根因-2"&gt;根因
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;浏览器看到的 IP ≠ iOS 认为你在哪。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;iOS 判断国家靠三样：Apple 定位服务（gs-loc/wloc）、eSIM 的 IMSI（MCC/MNC）、能否连上运营商 EPDG 网关。&lt;strong&gt;代理只能改 IP，改不了这三样&lt;/strong&gt;。日志证明 iOS 判定我在中国区，认为在&amp;quot;家&amp;quot;就不需要 WiFi Calling，EPDG 隧道一次都没发起。&lt;/p&gt;
&lt;p&gt;社区能&amp;quot;云激活&amp;quot;成功的人，用的是专门的 IPsec 隧道方案，不是常规 SS/VLESS 代理——iOS 的 &lt;code&gt;com.apple.epdg&lt;/code&gt; 系统扩展默认不走你的 TUN。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;教训&lt;/strong&gt;：&lt;strong&gt;系统级判定（运营商/OS 的国家识别）用网络层伪装不了&lt;/strong&gt;。技术有边界，日志会告诉你边界在哪——10 秒止损，比硬闯一整天更专业。&lt;/p&gt;
&lt;h2 id="五方法论沉淀判断的四个数据源原则"&gt;五、方法论沉淀：判断的四个数据源原则
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;#&lt;/th&gt;
					&lt;th&gt;原则&lt;/th&gt;
					&lt;th&gt;今天的事例&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;区分&amp;quot;谁操作&amp;quot;和&amp;quot;谁的系统在操作&amp;quot;&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;定时任务冒充真人活跃&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;路由判断要有完整上下文&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;只按城市判，漏掉寄修/上门维度&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;3&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;检查清单本身要被检查&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;字段漏检，59% 半年无人知&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;4&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;系统级判定，网络层伪装不了&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;iOS 不认代理 IP&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;四个误判的共性：&lt;strong&gt;都输在&amp;quot;用什么数据做判断&amp;quot;上&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;判断在线 → 要用&amp;quot;真人操作&amp;quot;数据，排除&amp;quot;系统操作&amp;quot;影子&lt;/li&gt;
&lt;li&gt;判断推送路由 → 要用&amp;quot;城市+寄修状态&amp;quot;全量数据，不能只看城市&lt;/li&gt;
&lt;li&gt;判断覆盖率 → 检查清单要完整，缺失字段本身就是盲区&lt;/li&gt;
&lt;li&gt;判断位置 → 要用系统认可的数据（IMSI/EPDG），IP 代理是无效信号&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;
 &lt;blockquote&gt;
 &lt;p&gt;判断的准确性 = 选对数据源 + 完整上下文 + 检查元层 + 尊重系统边界。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;今天四个误判，没有一个是&amp;quot;代码写错&amp;quot;，全是**&amp;ldquo;判断依据选错&amp;rdquo;**。这也提醒我：排障时先问&amp;quot;这个判断依赖什么数据、数据对吗&amp;quot;，往往比盯着代码更快找到真相。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;本文已脱敏，不含真实域名、IP、UUID 或凭证。&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>