Add schema+file validator; pin down fs-web-stream as ad icons

Why:
- schema 必须能自动校验,否则后续放量无法防腐。现在 scripts/validate.py
  对全部 metadata.json 做两层检查(schema + 本地文件 sha256),跑一次
  即可对全量数据签收;10/10 项目已通过。
- docs/sources/oshwhub.md 之前把 fs-web-stream.jlc.com 标为"工程源待查",
  排查后确认那些 URL 全部是嘉立创服务侧栏/推广图标,与项目无关。
  image.lceda.cn/attachments/ 是项目附件的唯一入口,现在调研文档闭合。

What:
- scripts/validate.py: jsonschema 校验 + optional --check-files 核 sha256
- pyproject.toml: 加 jsonschema>=4.26 依赖
- docs/sources/oshwhub.md: fs-web-stream 归类为推广资源(已排除),附 context 证据
- log.md: 本次会话记录

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Zhang Jiahao
2026-04-23 19:40:55 +08:00
parent 5ffa10f256
commit c8d55a22eb
4 changed files with 139 additions and 7 deletions

View File

@@ -52,14 +52,19 @@ HTML 内嵌 escaped JSON关键字段
- **附件** (`attachments[].src`)`https://image.lceda.cn{src}`
- 例:`/attachments/2020/7/mRn5hQZRhmx5r4usGxFmy8BXsCIHw5QoAT5HaLGC.pdf`
- 已验证 HTTP 200无鉴权
- 覆盖 PDF / ZIP / MP4
- **工程源文件** (`fs-web-stream.jlc.com/fs-web-stream/file-operation/download/<snowflake-id>`)
- HTML 里出现,但能否直接下载未测试
- 优先级P1v0.1 先不抓
- 覆盖 PDF / ZIP / MP4 / CSV / BIN 等(用户自传全类型)
- **这是项目用户文件的唯一入口**(已排查确认)
### 排查过不是项目源的路径
- `fs-web-stream.jlc.com/fs-web-stream/file-operation/download/<snowflake-id>`
- 详情页 HTML 里出现过 13 个context 均为站点侧栏/推广图标
- 例:嘉立创 3D 打印 icon、开源硬件平台 badge、EDA 扩展广场 banner
- **与项目本身无关**,不抓
### 未找到 / 留作后续
- EasyEDA 工程源 JSONschematic/PCB 的真正源):推测在 `u.lceda.cn`,需登录
- EasyEDA 工程源 JSONschematic/PCB 的真正源):`u.lceda.cn/api/projects` 返回 401 "尚未登录",需登录
- 项目详情 JSON API`/api/project/<uuid>` 返回 `{"code":104001,"success":false}`(试过 GET/POST/路径形式均失败,疑似此端点需 session
- 当前通过 SSR HTML 解析获取详情,字段够用
## 已知字段与 schema 映射