Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 49 additions & 29 deletions plugins/micro-tools/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,59 +6,79 @@

```
micro-tools/
├── plugin.json # 插件入口 + feature 触发配置
├── preload.js # CommonJS:读 xlsx,暴露 window.journalApi
├── index.html # 前端界面(多功能 SPA)
├── index.css # 样式
├── index.js # 前端逻辑
├── 2026年度JCR期刊名单(完整版).xlsx # 期刊数据源(22,643 条,与插件一起发布)
├── vendor/xlsx.full.min.js # SheetJS 单文件发行版
├── logo.png # 插件图标
├── plugin.json # 插件入口 + feature 触发配置
├── preload.js # CommonJS:读两个数据集,合并后暴露 window.journalApi
├── index.html # 前端界面(多功能 SPA)
├── index.css # 样式
├── index.js # 前端逻辑
├── journals.json.gz # JCR 2026 期刊数据(22,643 条,gzip -9)
├── ccf.json.gz # CCF 第七版目录(677 条,gzip -9)
├── pack.sh # 打包为 .zpx(ASAR + brotli)
├── logo.png / logo.svg # 插件图标
└── README.md
```

## 功能一览

| 功能 | 状态 | 说明 |
| --- | --- | --- |
| **期刊查询** | ✅ 可用 | 基于 JCR 2026 名单查询影响因子(JIF)、分区、JCI、被引等 |
| **数据库查询** | 🔧 体验版 | NCBI Genome / Gene / Nucleotide、PubMed、UniProtPDB、Ensembl、Google Scholar 一键检索 |
| **期刊 · 会议查询** | ✅ 可用 | 同一入口检索 JCR 2026 期刊与 CCF 第七版目录 |
| **数据库查询** | 🔧 体验版 | NCBI / PubMed / UniProt / PDB / Ensembl 等一键检索 |
| 文献速读 | 🚧 即将推出 | PDF 摘要提炼 |
| 单位换算 | 🚧 即将推出 | 科研常用单位 |

### 期刊查询
### 期刊 · 会议查询

- 按 **期刊名 / JCR 缩写 / ISSN** 模糊检索(220ms 防抖),结果按 **JIF 高→低排序**。
- 卡片展示:**2025 JIF 徽标、JCR 分区 Q1–Q4 配色、JCI、总被引、金色 OA%、各学科分区详情、出版商、学科、ISSN**。
- 「复制信息」经 `ztools.copyText()` + `showNotification()`。
一个入口同时检索两套体系,卡片上**有就显示、没有就不显示**:

| 数据 | 来源 | 卡片显示 |
| --- | --- | --- |
| 影响因子 / 分区 / JCI / 被引 | JCR 2026(22,643 条) | `IF 20.4`、`Q1`、四项统计 |
| CCF 等级 / 领域 / 变动 | CCF 第七版(677 条) | `CCF A`、`人工智能`、`晋级` |

- **三种情况都覆盖**:既有 IF 又有 CCF 等级(如 TPAMI:IF 20.4 + CCF A);只有 CCF 等级(会议,如 CVPR;以及已被 JCR 除名的期刊,如 MTA);只有 IF(非计算机领域期刊,如 Nature)。
- 检索字段:期刊/会议全称、JCR 缩写、**CCF 缩写**、ISSN、CCF 中文领域(可直接搜「人工智能」)。
- 顶部筛选条:**全部 / 期刊 / 会议**。
- 动作按钮:复制信息(纯文本多行)、JCR 官网、官方主页/DBLP。
- 相关性排序:精确 > 前缀 > 包含,同分按影响因子降序。

### 数据库查询

- 输入检索词 → 选择数据库卡片在系统浏览器中打开对应检索结果页(通过 `ztools.shellOpenExternal` 或回退到 `window.open`)。
- 支持数据库:NCBI Genome / NCBI Gene / NCBI Nucleotide / PubMed / UniProt / PDB / Ensembl / Google Scholar。
输入检索词 → 选择数据库系统浏览器打开检索结果(`ztools.shellOpenExternal`)。
支持:NCBI Genome / Gene / NucleotidePubMedUniProtPDBEnsemblGoogle Scholar。

## 为什么是“纯 Preload”格式
## 数据合并机制

- `preload.js` 用 Node `fs` 读同目录 xlsx,经 SheetJS 解析后暴露给前端;前端只渲染 UI。
- 不依赖 Vite/Webpack 等构建工具,所有资源用相对路径引用(`index.css`/`index.js`/`logo.png`),因此 ZTools 用 `file://` 加载 `index.html` 时所有资源正常解析。
- 这规避了 Vite 构建产物用绝对 `/assets/...` 路径在插件环境下加载失败的问题。
`preload.js` 加载时把 CCF 目录按 ISSN 关联到 JCR 期刊:

- 关联成功(277/291 条 CCF 期刊,95.2%)→ CCF 字段挂到该 JCR 记录上,并把 CCF 缩写并入检索词表,**一张卡同时显示两套指标**。
- 未关联(386 条会议 + 14 条未被 JCR 收录的期刊)→ 作为独立记录并入统一检索数组,只显示 CCF 等级。

CCF 中跨领域重复收录的刊物(如 TOMM 同时挂「网络」和「图形学」)会合并为一条,领域显示为 `网络 · 图形学`。

## 数据源

- **JCR**:`2026年度JCR期刊名单(完整版).xlsx` → 转换压缩为 `journals.json.gz`(短键名 + gzip -9,1.6 MB)。22,643 条,含 2025 JIF / 分区 / JCI 等字段。
- **CCF**:《中国计算机学会推荐国际学术会议和期刊目录》第七版(2026 年 3 月发布)→ `ccf.json.gz`(19.9 KB)。677 条 = 291 期刊 + 386 会议,分 A/B/C 三级、10 个领域方向。
- 两个数据集均为静态快照,更新时替换对应 `.gz` 文件即可(`pack.sh` 会自动打包)。

## 在 ZTools 中使用

1. ZTools → 插件管理 → 添加本地插件,选择 `micro-tools/` 目录。
1. 插件管理 → 添加本地插件,选择 `micro-tools/` 目录(或导入 `micro-tools-vX.Y.Z.zpx`)
2. 搜索框输入:
- `科研小盒` / `kydh` — 打开工具箱首页
- `期刊 Nature` / `影响因子 JACS` / `journal nat rev mol cell bio` — 直接进入期刊查询
- `数据库 BRCA1` / `ncbi genome TP53` — 进入数据库查询并带入关键词
3. 或直接打开插件,从首页点卡片进入各功能。
- `科研小盒` / `kyxh` — 打开工具箱首页
- `期刊 Nature` / `影响因子 JACS` — 进入期刊·会议查询
- `ccf CVPR` / `会议 NeurIPS` — 直接进入并切到「会议」筛选
- `数据库 BRCA1` — 进入数据库查询
3. 划词后通过 `type: over` 触发「查询期刊/会议」,自动带入选中文本。

## 数据源
## 打包

- 影响因子来自 `2026年度JCR期刊名单(完整版).xlsx`(2025 JIF / JCR 分区 / JCI 等 33 个字段,22,643 条记录)。
- 更新数据只需替换同目录下的 xlsx 文件,列名保持一致即可自动适配(见 preload.js 中 COLUMN_MAP)。
```bash
bash pack.sh # 产出 ../micro-tools-<version>.zpx(ASAR + brotli,自动排除 .git/.DS_Store)
```

## 开发者

- **开发者**:Asa12138
- **邮箱**:bfzede@gmail.com

Binary file added plugins/micro-tools/ccf.json.gz
Binary file not shown.
63 changes: 62 additions & 1 deletion plugins/micro-tools/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
--q3: #e0a73a;
--q4: #d4685a;
--qna: #9aa0b0;
--ccf-a: #6d28d9;
--ccf-b: #1e88ff;
--ccf-c: #8a90a2;
}

* { box-sizing: border-box; }
Expand Down Expand Up @@ -207,11 +210,19 @@ html, body {
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 4px;
gap: 5px;
flex-shrink: 0; /* 不被压缩 */
margin-left: auto; /* 始终靠右 */
}

.badge-row {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 5px;
flex-wrap: wrap;
}

.badge {
flex: 0 0 auto;
padding: 3px 9px;
Expand All @@ -235,6 +246,22 @@ html, body {
.badge--q4 { background: rgba(212,104,90,0.14); color: var(--q4); }
.badge--qna { background: #eef0f4; color: var(--qna); }

/* CCF 等级徽标:用紫/蓝/灰三档,与 Q 分区在色系上区分开 */
.badge--ccf-a { background: rgba(109,40,217,0.12); color: var(--ccf-a); }
.badge--ccf-b { background: rgba(30,136,255,0.12); color: var(--ccf-b); }
.badge--ccf-c { background: #eef0f4; color: var(--ccf-c); }
/* CCF 领域 / 变动备注:弱化,避免抢焦点 */
.badge--cat {
background: var(--teal-soft);
color: var(--teal);
font-weight: 500;
}
.badge--note {
background: rgba(224,167,58,0.16);
color: #a6791b;
font-weight: 500;
}

.card__meta {
margin-top: 6px;
font-size: 12.5px;
Expand Down Expand Up @@ -279,6 +306,14 @@ html, body {
color: var(--muted);
}

.card__ccf {
margin-top: 6px;
font-size: 11.5px;
color: var(--teal);
line-height: 1.5;
word-break: break-word;
}

.card__cat {
margin-top: 8px;
font-size: 11.5px;
Expand All @@ -287,6 +322,32 @@ html, body {
word-break: break-word;
}

/* ---------------- 类型筛选条 ---------------- */
.chips {
margin-top: 10px;
display: flex;
gap: 8px;
}

.chip {
border: 1px solid var(--line);
background: var(--card);
color: var(--muted);
font-size: 12.5px;
padding: 5px 14px;
border-radius: 999px;
cursor: pointer;
transition: background .15s, color .15s, border-color .15s;
}

.chip:hover { border-color: #cfd6e4; }

.chip.is-on {
background: var(--brand);
border-color: var(--brand);
color: #fff;
}

.card__actions { margin-top: 10px; display: flex; gap: 8px; }

.btn {
Expand Down
15 changes: 10 additions & 5 deletions plugins/micro-tools/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
<div class="grid">
<button class="tool" data-open="journal">
<span class="tool__icon tool__icon--blue">📊</span>
<span class="tool__name">期刊查询</span>
<span class="tool__desc">影响因子 / 分区 / 被引</span>
<span class="tool__name">期刊 · 会议查询</span>
<span class="tool__desc">影响因子 / 分区 / CCF 等级</span>
<span class="tool__badge tool__badge--on">可用</span>
</button>
<button class="tool" data-open="database">
Expand All @@ -49,9 +49,14 @@
class="io__input"
type="text"
autocomplete="off"
placeholder="输入期刊名 / 缩写 / ISSN,如 Nature、NAT REV MOL CELL BIO、1471-0072"
placeholder="期刊 / 会议 / 缩写 / ISSN,如 Nature、TPAMI、CVPR、1471-0072"
/>
<div class="io__hint" id="jHint">正在加载期刊数据…</div>
<div class="chips" id="jFilter">
<button class="chip is-on" data-filter="all">全部</button>
<button class="chip" data-filter="journal">期刊</button>
<button class="chip" data-filter="conf">会议</button>
</div>
<div class="io__hint" id="jHint">正在加载期刊与 CCF 数据…</div>
<div class="results" id="jResults"></div>
</section>

Expand All @@ -69,7 +74,7 @@
</section>

<footer class="app__footer" id="footer">
提示:ZTools 搜索框输入 <code>期刊 Nature</code>、<code>影响因子 JACS</code> 或 <code>数据库 BRCA1</code> 可直接触发。
提示:ZTools 搜索框输入 <code>期刊 Nature</code>、<code>ccf CVPR</code> 或 <code>数据库 BRCA1</code> 可直接触发。
</footer>
</main>

Expand Down
Loading
Loading