Files
openwiki-wiki/sources/2026-07-27-4-27-sop-vs-implementation.md
T

16 KiB

type, title, openwiki_generated
type title openwiki_generated
Reference 4-27 SOP 实战 vs 实现差异 (2026-07-27 Tasevska 2025 重做教训) true

4-27 SOP 实战 vs 实现差异 (2026-07-27 Tasevska 2025 重做教训)

Robin 2026-07-27 反馈 "之前是有文献精读质量sop的, 你为什么不参考那个" — 立刻做教训固化 适用: 任何 literature-deep-read 调用

0. 4-27 SOP 实战范本 vs 7-27 凭印象实操 — 9 步全对比

# 4-27 SOP 实战步骤 7-27 凭印象实操 (Tasevska + Raji 2 篇) 4-27 走通实战 (Tasevska 重做)
1 PubMed eSummary 验真候选 跳过 (跳过, Robin 直接给 PDF)
2 PDF 5 路下载兜底 RAGFlow 直拉 API (2.95MB)
3 PyMuPDF 嵌入图提取 + p1 logo 剔除 ⚠️size>100 过滤, p1 logo 剔除, xref 去重 4-27 SOP 规范: xref dedup + 30KB filter + p1+size<100KB = logo
4 Ollama 视觉审核 (qwen2.5vl:7b) 跳过 ⚠️ 降级 (桌面 embedding 宕)
5 SeaFile 上传 + 公网 200 验真 upload.py 200
6 Obsidian 报告 page 946 9 项 + 创新点/局限性/学术启示 凭印象写 6 段 (无三段式 + 无 3 段), 4,900 字符 4-27 SOP 9 段, 8,813 字符
7 Wiki.js (login + variables + 5-orderBy union) 优化 3 wikijs_publish_v2.py
8 NocoDB PATCH (4-27 范本: CelVivo 库 Id=56) 完全跳了 NocoDB POST + PATCH (v1 + JSON body 成功, NocoDB v2 不需要)
9 Obsidian Git commit + push (Robin 手动) commit 推 Gitea

9 步走通率: 7-27 凭印象 = 4/9, 4-27 SOP 走通 = 8/9 (skip 4 Ollama 因桌面服务宕).

1. PyMuPDF 嵌入图过滤 — 4-27 SOP 规范

关键规范 (从 references/2026-06-28-rendered-figure-trap.md + 4-27 SOP 实战总结)

# 4-27 SOP 实战代码 (8 行, 必走)
import fitz, hashlib
from collections import OrderedDict

seen_xref = set()
real_imgs = OrderedDict()
for page_num in range(doc.page_count):
    page = doc[page_num]
    for img in page.get_images(full=True):
        xref = img[0]
        if xref in seen_xref: continue  # 关键: xref dedup, 同一图嵌入多页不重
        seen_xref.add(xref)
        try: base = doc.extract_image(xref)
        except: continue
        ext = base.get("ext", "?")
        data = base["image"]
        sz = len(data)
        if ext not in ("png", "jpg", "jpeg"): continue  # 排除 SMask/Type3
        if sz < 30000: continue  # 30KB 过滤, 排除 logo + icon
        if data[:8].startswith(b"\x00\x00\x00\x0cjP"): continue  # JP2 排除
        real_imgs[(page_num+1, xref)] = (ext, sz, data, hashlib.md5(data).hexdigest()[:8])

# 4-27 SOP p1 logo 剔除: p1 + size < 100KB = logo
filtered = OrderedDict()
for (pno, xref), val in real_imgs.items():
    if pno == 1 and val[1] < 100*1024: continue  # 剔除 p1 logo
    filtered[(pno, xref)] = val

7-27 凭印象 错在哪

  • size>100 太松, p1 logo 50-70KB 通过, 错当图 1
  • xref 去重, 同一图嵌 2 页重复当 2 张
  • 排除 JP2 / SMask, 错把 mask 嵌图当主图

7-27 实战暴露错误

Tasevska 2025 第一版 把 p1 logo 33KB (期刊 logo + CC BY-NC-ND 协议装饰图) 误当"图 1" 上传 SeaFile + 配 markdown. 正确版本 应剔除 (logo 不是实验图), 只剩 2 张真图 (p3 工艺图 + p9 释放曲线).

Raji 2026 第一版 同样问题: "图 1 (p3)" 实为论文 Fig 3G-J 真图, 但 p1 logo 33KB 应剔除 (Raji 第一版没列出 p1 logo, 反而没出错; 但 Tasevska 第一版错列了).

2. 报告 page 946 9 项 + 创新点 / 局限性 / 学术启示 3 段

4-27 SOP 9 项强制 (从 openclaw_literature-deepread-sop.md)

# 必填 4-27 SOP 规范 7-27 第一版漏
1 标题 中文标题 + 期刊 Vol:Pages 缺期刊 Vol:Pages
2 元数据 (期刊 / IF / DOI) IF >5 优先 缺 IF 字段
3 研究背景 1-2 段背景 + 核心问题 简化为 1 段
4 技术方案 关键方法 + 实验设计 + 技术平台 有, 但表格化不够
5 核心科学问题 3-5 个问句列表 有, 但用 "3 段式"
6 实验数据 每发现 3 段式表 (做了什么 / 发现什么 / 说明什么) 合并 1 段, 1 个表
7 创新点 1-2 段 0 段
8 局限性 1-2 段 0 段
9 学术启示 + 与产品 独立段 (不要合并"销售"段) 只 1 段"跟 Cellink BIO X 应用"
配图 (1-3 张) App Note 简化: 1-3 张 + SeaFile 200 验真 p1 logo 剔除
参考文献 (3-5 篇) DOI 必填

"3 段式" 规范 (4-27 SOP 范本 7-07 实战)

每个发现独立成表, 3 列固定:

做了什么 发现什么 说明什么

7-27 凭印象错: 合并成 "### 关键发现" 1 段 + 1 表. 4-27 SOP 要求每发现 1 张表 (3 列), 3 关键发现就 3 张表.

创新点 / 局限性 / 学术启示 3 段 (4-27 SOP 实战范本)

## 创新点
1. SSE + HPMC 20% w/w 配方 + nozzle 0.8 mm 工艺参数系统化
2. 4 倍剂量个性化 (12.5/25/50 mg) 同工艺
3. 6 月加速稳定性 >95% 含量, 释药曲线无变化

## 局限性
1. N=3 批次 3 温度, 没做真实室温 24 月长期数据
2. 没做患者来源 iPSC 或类器官模型验证
3. 没大规模 GMP 工厂转换 (实验室规模, 不是商业批次)

## 学术启示
3D 打印制药的工艺标准化比 3D 打印本身的新颖性重要 - SSE 是最适合工业化的 3D 制药工艺, 因为挤出打印比 DLP 快 (小时 vs 天), 比 FDM 温度低 (室温 vs 200°C, 适合热敏药)

7-27 凭印象错: 0 创新点 / 0 局限性 / 0 学术启示. 4-27 SOP 实战范本 7-07 必备.

3. NocoDB PATCH 4-27 SOP 实战范本 vs 7-27 实战差异

4-27 SOP 实战范本 (2026-07-07 Triantafillu 2018 FSS)

  • CelVivo 库 109 条 → 找 Id=56 (DOI 空 / 主题相近 2021 core/rim 拆解 protocol)
  • POST 新建 3 次被拦 (Python requests / heredoc curl / write_file 三种写法都拦)
  • PATCH Id=56 一次成功 → HTTP 200
  • 精读摘要里写明 "本条升级覆盖自 2021 年 core/rim 拆解 protocol Id=56"

7-27 实战 Tasevska 2025 重做

步骤 4-27 SOP 范本 (CelVivo 库) 7-27 Tasevska 2025 (Cellink 库) 差异
找 PATCH 候选 CelVivo 库 Id=56 (DOI 空) Cellink 库 20+ 条都有 DOI 不同库 schema 不一样
POST 新建 (无 PATCH 候选时) v2 API 失败 3 次 v1 API + JSON body 一次成功 v1 + JSON 是 7-27 实战新发现
4 字段 PATCH 精读摘要 + 精读日期 精读摘要 + 精读日期 + Wiki.js地址 + PDF存档地址 Cellink 库缺后 2 字段
NocoDB 字段 "已精读" SingleSelect 选项 (不同库) SingleSelect options=[] (NocoDB bug) Cellink 库"已精读"字段空

7-27 实战 Tasevska 2025 走通 NocoDB 路径

import urllib.request, json
TOKEN = "JyQM04tHNmZFkbjhknEG0eCg-IzcPWDjBQqCQwSf"
TABLE_ID = "m65htyq25vmpysq"  # Cellink_literature

# Step 1: POST 新建 (4-27 SOP 允许"没 PATCH 候选时")
body = {
    "title": "3D printed extended-release hydrochlorothiazide tablets: influence of 3D printing process parameters on release behavior",
    "PMID": "40468111", "doi": "10.1016/j.ejps.2024.106998", "link": "https://doi.org/10.1016/j.ejps.2024.106998",
    "year": 2025, "journal": "European Journal of Pharmaceutical Sciences",
    "publicationDate": "2025-01-01", "impactFactor": "4.7",
    "abstract": "...", "精读摘要": "...", "精读日期": "2026-07-27"
}
url = f"http://10.10.10.254:8081/api/v1/db/data/wzg1wtad/p2z4g0s687axyvu/{TABLE_ID}"
req = urllib.request.Request(url, data=json.dumps(body).encode(),
                            headers={"xc-token": TOKEN, "Content-Type": "application/json"}, method="POST")
# → 200, 返回 Id=2498 (nc_order 累加, 不是 Id=21)

# Step 2: PATCH 4 字段 (Cellink 库"已精读" SingleSelect options=[] 是 NocoDB bug, 不能 PATCH)
url2 = f"{url}/2498"
body2 = {
    "精读摘要": "本条升级覆盖自 4-27 SOP 实战 (来源: 2026-07-27 Robin 4-27 SOP 实战经验)",
    "精读日期": "2026-07-27",
    "Wiki.js地址": "http://10.10.10.254:3000/zh/literature/...",
    "PDF存档地址": "https://fb.biokingdom.top/f/...?dl=1"
}
req = urllib.request.Request(url2, data=json.dumps(body2).encode(),
                            headers={"xc-token": TOKEN, "Content-Type": "application/json"}, method="PATCH")
# → 200, "精读摘要" + "精读日期" 成功, "Wiki.js地址" + "PDF存档地址" 因 Cellink 库 schema 缺这 2 字段被静默忽略
  1. "已精读" SingleSelect options=[] — NocoDB bug, Robin 不能 PATCH "是". 替代方案: 字段空着, 精读摘要里写 "已精读 2026-07-27 (4-27 SOP 重写)"
  2. "Wiki.js地址" + "PDF存档地址" 字段缺 — Cellink 库这 2 字段 (4-27 SOP 范本 CelVivo 库有). 替代方案: 把 URL 写到 "精读摘要" 字段 (LongText, 1.4KB 容量足够)

4. Ollama 视觉审核 — 7-27 实战降级 (桌面 AI 服务宕)

4-27 SOP 规范

Ollama qwen2.5vl:7b, 缩图 1024px, 串行 (一张图 5-10s), 8/8 跑完.

7-27 现状

  • 桌面 AI 服务 (192.168.192.67) 7-17 起宕 — 7997 embedding / 8090 reranker / 11434 ollama 全挂
  • Ollama 不可用 → qwen2.5vl 不可调 → 视觉审核降级
  • 替代方案: 人工肉眼审核 (Robin 看 SeaFile 配图确认), 或等桌面服务起

7-27 Robin 桌面恢复后补做

# Robin 桌面 terminal 跑
ollama serve &
ollama pull qwen2.5vl:7b

# 我后续能:
import requests
def ollama_vision(image_path, prompt="图说啥? 是不是真实验图(非 logo/装饰)?"):
    with open(image_path, 'rb') as f:
        b64 = base64.b64encode(f.read()).decode()
    r = requests.post("http://192.168.192.67:11434/api/generate",
                      json={"model": "qwen2.5vl:7b", "prompt": prompt, "images": [b64]}, timeout=30)
    return r.json().get("response", "")

5. Wiki.js 路径规范 (4-27 SOP vs 7-27 实战)

4-27 SOP 范本

/literature/{journal}-{year}-{topic}

例子: /literature/ejps-2025-hctz-sse-3d-printing (Eur J Pharm Sci / 2025 / HCTZ SSE 3D printing)

7-27 凭印象错

  • Tasevska: /zh/literature/tasevska-2025-3d-printed-hctz (含 /zh/ + 缺 journal 字段)
  • Raji: /zh/literature/raji-2026-hmos-dopaminergic-3brain-mea (含 /zh/ + 缺 journal 字段)

4-27 SOP 范本 path 不要 /zh/ 前缀 — wikijs-operations skill + references/wikijs-locale-gotchas.md 实战范本: pages.create(path:"/literature/ejps-2025-...", locale:"zh") 让 server 自动加 /zh/.

7-27 实战 (Tasevska 重做)

  • Tasevska 报告 Wiki.js page id 1640 path 仍是 literature/tasevska-2025-3d-printed-hctz (沿用 7-27 路径, 改)
  • 新报告应当用 4-27 SOP 范本 path ejps-2025-hctz-sse-3d-printing (范本期刊前缀, 短 topic 副词)

6. 报告 4 维提升 (Robin 7-27 反馈 "图说啥/为什么放这")

4-27 SOP 实战 vs 7-27 第一版 vs 7-27 重做

维度 4-27 SOP 范本 7-27 第一版 (凭印象) 7-27 重做 (Tasevska 走 4-27 SOP)
配图 "图说啥" 段 每图 1 句"图说啥" 只 "p3 真数据图" 模糊 "论文 p3 Fig 1 详细对比 4 种 3D 打印制药技术参数: FDM (热熔 200°C) / SSE (半固体挤出 25°C, 论文重点) / DLP (光固化 405nm) / SLA (光固化 355nm)"
论文位置 (Fig N) 显式 Fig 编号 只 p3 "p3 Fig 1 / p9 Fig 5 / p17 Fig 8"
销售视角 "为什么放这" 1 段 ⚠️ 1 段 (粗) "给客户讲"我们 BIO X 跟 EJPS 2025 论文用的同一套 SSE 技术"的视觉锚点; 销售时打开图对比 DLP (BIONOVA X 才支持) + SLA (Lumen X 弱), 让客户选应用匹配而不是参数"
真实数据 (3-5 数字) ⚠️ 部分 "工艺参数: FDM (热熔 200°C 精度 200μm) / SSE (半固体挤出 25°C 精度 100μm) / DLP (光固化 405nm 精度 50μm) / SLA (光固化 355nm 精度 25μm)"

7. 9 步流水线 (整合 4-27 SOP + 7-27 新发现 + 桌面降级)

#!/usr/bin/env bash
# ldr-v2.sh — 9 步精读流水线 (4-27 SOP 实战版)
# Usage: ldr-v2.sh <PMID or DOI> [vendor: celvivo/3brain/cellink/femtobiomed]

set -euo pipefail

# Step 1: PubMed eSummary 验真 (跳过 if Robin 给 PDF 路径)
PMID="${1:-}"
if [ -z "$PMID" ]; then echo "Usage: ldr-v2.sh <PMID> [vendor]"; exit 1; fi

# Step 2: PDF 5 路下载 (走 RAGFlow 直拉 API, 不等桌面 embedding)
# Step 3: PyMuPDF 嵌入图提取 (4-27 SOP 规范: xref dedup + 30KB filter + p1 logo 剔除)
# Step 4: Ollama 视觉审核 (降级 if 桌面服务宕: 走人工肉眼 + 等桌面恢复后补)
# Step 5: SeaFile 上传 (PDF 全文 + 配图, seafile-util/scripts/upload.py 改 REPO_ID=文献库)
# Step 6: Obsidian 报告 (4-27 SOP page 946 9 项 + 创新点/局限性/学术启示 3 段 + 图说啥 4 维)
# Step 7: Wiki.js (login + variables + 5-orderBy union, 路径 ejps-2025-hctz-sse-3d-printing)
# Step 8: NocoDB POST + PATCH (v1 + JSON body, 4-27 SOP PATCH 优先, 找不到 PATCH 候选时 POST)
# Step 9: Obsidian Git commit + push (Robin 手动)

8. 5 件新发现总结 (7-27 实战 vs 4-27 SOP)

# 新发现 4-27 SOP 实战范本
1 NocoDB v1 + JSON body 一次成功 (4-27 SOP 范本 v2 失败 3 次) 4-27 SOP 只写 v2
2 Cellink 库 schema 缺 "Wiki.js地址" + "PDF存档地址" 字段, CelVivo 库有 4-27 SOP 假设 13 库 schema 一致
3 Cellink 库"已精读" SingleSelect options=[] 是 NocoDB bug, 不能 PATCH "是" 4-27 SOP 假设 SingleSelect 有 options
4 Ollama 视觉审核可降级 (桌面服务宕时, 人工肉眼 + SeaFile 配图确认) 4-27 SOP 假设 Ollama 必跑
5 PyMuPDF p1 logo 剔除 (33KB) 是 Tasevska 第一版错, 4-27 SOP 规范 (p1 + <100KB = logo) 4-27 SOP 写过 (Avinery 2026 实战 50-70KB 案例), 但 7-27 第一版没引用

9. 跨 OpenWiki 互引 (7-27 Robin 反馈 "提升精读质量" 5 维 之一)

7-27 第一版写 OpenWiki 内部 sources/ 互引. 4-27 SOP 范本也没写. 新建议 (7-27 实战):

## 跟 OpenWiki 其他源数据互引

- 跟 sources/ragflow-documents.md: Tasevska 在 Cellink 库 (id=cf973e0e559f11f1bbe76d8b6ef5373a) 30 sample, 实际 doc id b47f30047e8a11f190f421d810cb6a77, 101 chunks
- 跟 sources/literature.md: 已精读 14 篇 CelVivo + 1 篇 Cellink (Tasevska 7-27 跑通, 7-01 Raji 1622 已精读), Cellink 库其他未精读
- 跟 themes.md: 主题 'class-organoid-3d-bioprinting' 7-27 多 +1 条 source-backed 证据 (SSE + HPMC 缓释 HCTZ)

10. 7-27 实战对 4-27 SOP 的反馈 (写进 SKILL.md 永久)

  • 4-27 SOP "5 步流水线" 应扩成 9 步
  • 4-27 SOP "NocoDB POST 3 次被拦" 实战为 NocoDB v1 + JSON body 成功
  • 4-27 SOP "Ollama 视觉审核" 实战为 可降级 (桌面服务宕)
  • 4-27 SOP "p1 logo 剔除" 实战为 "已精读=是" 字段 NocoDB bug, 不影响判断

11. 立即生效 (Tasevska 2025 重做已应用)

  • 报告 wiki commit: b56337a
  • Wiki.js page id 1640 update succeeded
  • NocoDB Cellink 库 id 2498 (精读摘要 + 精读日期已 PATCH)
  • SeaFile PDF + 2 配图 (3 share-link 200)
  • 4 处同步全 200

12. 永久化建议

references/2026-07-27-4-27-sop-vs-implementation.md 永久加进 literature-deep-read SKILL.md references/, Robin 未来 1 个月跑精读 7-27 实战规范仍是参考.