# 第三方组件与数据来源标注（THIRD_PARTY NOTICES）

> 本文件是「粗盐（CUYAN）」项目的合规要件之一，与 `LICENSE` 同级存放。
> 用途：让使用者、评审与运维方能一眼看清 —— 用了哪些第三方组件、各自什么许可、
> 哪些内容不是我们生产的。**本项目为个人独立开发、非商业性项目。**

## 一、后端依赖（Python）

来源：`server/requirements.txt`（15 项）。全部为宽松许可（MIT / BSD / Apache-2.0），
均可用于闭源或开源分发。**版本与许可以各项目官方仓库为准**。

| 组件 | 用途 | 许可 |
|---|---|---|
| FastAPI | Web 框架（API） | MIT |
| Uvicorn | ASGI 服务器 | BSD-3-Clause |
| SQLAlchemy | ORM | MIT |
| Pydantic | 数据校验与序列化 | MIT |
| pydantic-settings | 配置管理 | MIT |
| PyJWT | 令牌签发与校验（登录态） | MIT |
| bcrypt | 口令哈希 | Apache-2.0 |
| python-multipart | 表单/文件上传解析 | Apache-2.0 |
| requests | 机会库采集器的 HTTP 客户端 | Apache-2.0 |
| pdfminer.six | 申报指南 PDF 附件文本抽取 | MIT |
| python-docx | 申报指南 .docx 段落与表格解析 | MIT |
| olefile | 旧版 .doc（OLE2）兜底读取 | BSD-3-Clause |
| openpyxl | .xlsx 附件解析 | MIT |
| numpy | 语义检索向量余弦计算 | BSD-3-Clause |
| cryptography | 用户自带网关密钥的 Fernet 对称加密 | Apache-2.0（双许可，可选 PS License；本项目按 Apache-2.0 使用） |

## 二、前端

* **无第三方前端框架、无 CDN 外链、无埋点与广告脚本。** 页面为自研 HTML/CSS/JS。
* `i18n.js`（双语运行时）为自研单文件，内联词典、零外链、零后端依赖。
* `vendor/` 下随包分发的浏览器端库（均为宽松 MIT 许可，已在站点本地托管、不向任何第三方发起请求）：

| 文件 | 组件 | 用途 | 许可 |
|---|---|---|---|
| `vendor/html2canvas.min.js` | html2canvas | 页面截图（生成申报/赛道速览图） | MIT（© Niklas von Hertzen） |
| `vendor/html2pdf.bundle.min.js` | html2pdf.js | 将上述截图合成为 PDF 导出 | MIT（© Erik Koopmans） |
| `vendor/jspdf.umd.min.js` | jsPDF | PDF 底层生成（被 html2pdf.js 依赖） | MIT（© Parallax Inc.） |

> 上述三个文件均为本地静态资源，源码可从各自官方仓库获取；本平台仅分发其构建产物，
> 未修改其许可声明、未主张任何权利。其 `cdnjs` 字样仅出现在文件内注释（历史来源标注），
> 运行时无任何外链请求。

## 三、**仅借鉴、未集成**的第三方项目（如实标注）

| 项目 | 许可 | 关系 |
|---|---|---|
| `oyorf/person_dashboard` | MIT | **仅参考其 Wiki 的三层目录思路**用于赛道详情页的信息分层；**未复制、未集成其任何代码**，未进入仓库。 |

> 说明：按参赛与学术诚信要求，借鉴思路与集成代码必须区分标注。此处主动列出，
> 以便评审核对。

## 四、数据与内容来源

* **机会库**：只收录各来源单位**公开发布**的申报/招聘/赛事等通知的
  **标题、发布机构、分类标签、原文链接与抓取时间**；
  **不抓取、不存储、不展示第三方正文与附件原文**，点击均跳转原站阅读。
* **权威源登记**（工作台「科研机会提醒」页的来源墙）：只登记**官方公开入口**，
  分 T1/T2/T3 三级，逐条公开列名，不因此主张任何内容权利。
* **离线兜底快照**：为使机会列表在网络异常时仍可查阅，工作台内嵌一份快照，
  字段与上述一致，生成时间以页面标注为准。
* **赛道库与理论框架**：四域二十维画像的量表编制依据公开学术框架
  （Vitae RDF、KSAO、PsyCap、Grit-S、ACRL 信息素养框架等），
  并在产品内标注「自评量表、非标准化测验、未做信效度检验」。
* **AI 生成内容**：平台内四处 AI 功能（画像短板解读、机会能力预判、互助课题预点评、
  成长笔记深化建议）的输出**全部由模型自动生成**，页面逐处标注，不可作为决策唯一依据；
  详见站内《版权与内容免责声明》第「AI 生成内容」节。

## 五、用户数据

* 口令以 **bcrypt** 单向哈希存储，平台不保存明文口令。
* 令牌（JWT）在客户端 `localStorage` 保存，可服务端吊销；默认有效期 7 天。
* 用户对外展示的用户名经脱敏（`_mask_name`），越权读取按归属校验拦截。
* 完整口径见站内《个人信息保护及科研数据使用隐私政策》V1.2。

## 六、变更记录

| 日期 | 变更 |
|---|---|
| 2026-10-05 | 首次建立本文件（补齐审计「未找到的合规要件」中的第三方许可标注与开源许可） |
| 2026-10-07 | 补全「二、前端」`vendor/` 三项浏览器端库（html2canvas / html2pdf.js / jsPDF，均 MIT）的逐条许可标注，使公开声明与站点实际分发的静态资源一致 |
| 2026-10-28 | 「一、后端依赖」补齐后加入的 numpy（BSD-3-Clause）与 cryptography（Apache-2.0），项数由 13 更正为 15，使声明与 `server/requirements.txt` 实际依赖一致 |
