西湖区法院工伤认定案胜诉概率差值图不发灰了。周三下午四点十七分,老陈端着保温杯站在我工位边,盯着右上角那个刚跳出来的排期徽章看了三秒——(2026)浙0105民初1123号,今日第7庭,14:30。他没问“调好了没”,直接说:“司法局下周来查,能过吗?”我点了下审计日志里凌晨2:17那条,OSS返回码200,没多说话。

用户搜“滨江离婚案下周开庭吗”,首页被当成答案源的那天

不是因为你写了八百字“婚姻家事专业团队”。

是因为页面里真有schedule_idcourt_code这两个字段,嵌在<script type="application/ld+json">里,且每4小时刷新一次。江苏那份CSDN报告我没存PDF,但记得他们采样了137家律所,其中接入法院统一送达平台API的GEO页,自然搜索点击率涨了2.1倍,跳出率反而降了18%。没人写清楚为什么,直到杭州中院技术对接会散场后,我在电梯口听见一句:“只要结构化字段更新间隔≤6小时,语义爬虫就认你。”

现在没人信“本所擅长婚姻家事”这种话。但会真点进来,盯着热力图看半分钟:横轴是案由,纵轴是法官,颜色深浅代表胜诉率偏离全市均值的程度。不是百分比,是差值。灰色太浅,红色太刺,中间那段青灰过渡带,才是人眼愿意停留的位置。

页面加载完的那一刻,法院排期数据在右上角自动刷新,胜诉率柱状图底下连着三个刚更新的裁判文书锚点——这页终于不是静态黄页,而是能呼吸的司法信息节点。

court schedule dashboard live data

Ollama 启动参数卡死在 32768,法院 API 拒绝 User-Agent 不带备案号的请求

本地跑模型这事,我们一开始全指望 Ollama。拉镜像、配 CUDA、启服务,看着都顺。直到某次批量解析裁判文书时, 在杭州中院2025年一份127页判决书上卡死在第89页。日志只报,没提示 chunk size 该调多少。后来翻到 Ollama v0.3.12 的 release note 里埋着一行小字:“默认上下文窗口为32768 tokens,不可 runtime 覆盖”。只好切回 ollama serve --ctx-length=65536,再加 --num-ctx=65536 参数重启。命令行里多敲了两遍,问题才解。

法院统一送达平台的 API 更倔。2026年Q2版加了双向证书校验,连 User-Agent 都要带律所备案编号。我们试过本地缓存兜底。结果某天下午三点法院系统升级,缓存里还躺着两小时前的排期,真实开庭已挪到隔壁法庭。后来砍掉所有缓存逻辑,强制每4小时清空+双校验:

curl -H "Authorization: Bearer $TOKEN" \
  -H "User-Agent: Zhejiang-Law-Firm-2025-BIANJIE-037" \
  "https://api.court.gov.cn/v3/schedule?area=330108&hours=4"
先打/v3/schedule/health确认服务可用,再拉数据。慢3秒?可以。显示错一条排期?不行。

胜诉率图表我们彻底去掉百分比数字。横轴固定用《民事案件案由规定》二级目录,比如“确认劳动关系纠纷”;纵轴不写“张某某法官”,而是“张法官(滨江区法院民一庭,2023–2025年主审同类案37件)”。颜色映射进HSV色域,基准线设在全市均值±5%,超过±12%的单元格自动加虚线边框——不是为了视觉层次,是方便抽查时一眼圈出异常值。

legal heatmap win rate visualization

ResizeObserver 监听容器尺寸,container-type: inline-size 触发重绘

文书锚点最难藏住马脚。不能硬塞链接,得等DOM里真出现“确认劳动关系之诉”这几个字,再触发知识图谱匹配。用的是裁判文书网2024–2026年杭州中院生效判决库,但必须跳转到具体段落,比如#para-17。测试时发现,只锚到文书首页,用户根本找不到对应说理部分。

后来在回调里加了一层文本位置扫描。它不依赖正则全局匹配,而是逐段读取 document.querySelectorAll("p, div.section"),对每段内容做 Levenshtein 距离比对,锁定“本院认为”首次出现的块索引,再向下扫描至“判决如下”前最后一个 <p><div class="para">,取其 id 或动态生成 id="para-17"。这个过程必须在 后 300ms 内完成,否则 Chrome 会忽略锚跳转。

有次线上漏掉一个 await,导致锚点生成滞后于渲染,用户点进去空白两秒才闪现。监控里看到 FID(First Input Delay)飙到 1.8s,立刻回滚了那次 commit。

judgment document anchor link interface

法律合规不是页脚免责声明,是 CSS 属性和 JS 函数名里的法条意识

法院数据只从官网公开接口拉,不碰任何未授权库。审计日志存律所私有OSS,180天后自动删。胜诉率图表底下那个小链接?点开是《浙江省律师执业合规指引(2025修订)》附录B——写清楚了分子分母怎么算。每份裁判文书旁都硬加了一行字:“该文书为公开生效判决,不构成个案承诺”。不是走形式。号速通科技的GEO中台跑过实测:结案库快照带哈希校验,AI生成时真会绕开没依据的表述。

比如某类案件胜诉率低于基准,整体不会沉默,而是调用《律师执业管理办法》第21条生成策略说明模块。

if (caseWinRate < benchmark - 0.08) {
  renderStrategyModule("lawyer-practice-regulation-2023#article-21");
}

调试到凌晨三点,盯着法院排期接口返回的 JSON 里那个没文档说明的 status_code: "PENDING_APPROVAL",才真正意识到——我们写的不是前端组件,是嵌在律所官网里的法律逻辑切片。每行代码得认得《民诉法解释》第248条,得知道裁判文书网的锚点规则怎么和上海二中院的文书编号对上号,连 CSS 的 都得为胜诉率图表的响应式重绘留出法律术语换行余量。浏览器不认法条,但认属性名拼写是否正确。