Add EasyEDA Pro 2.x legacy source ingestion (5/5 batch closure)

补齐前一批失败的 2 个 legacy Pro 项目(立创·泰山派 RK3566、立创·梁山派),
打通 Pro 2.x 旧版工程的源抓取链路。结合上一 commit 的 modern Pro 3.x
路径,本仓库 5/5 Pro 项目 EPRO2/dataStr 全部端到端打通。

Pro 2.x 与 Pro 3.x 是两个完全不同的存储模型:
- Pro 3.x:git-style branch + linear history chain,AES-128-GCM 加密的
  EPRO2 增量消息流,按 history 重放(已在前一 commit 打通)
- Pro 2.x:无 branch / 无 history。文档以 EasyEDA Std plaintext dataStr
  存储(同 ["DOCTYPE","SCH","1.1"] 格式),按 doc UUID 通过
  /api/v2/documents/lists 批量 GET,主体无加密,只组件库走 AES

Pro 2.x 抓取链由 HAR (tmp/prodownload3.har, 178 请求) 反推:

  GET  /api/v4/projects/<P>                     → boards: [{sch, pcb, name}]
  GET  /api/projects/<P>/ticket?uuid=&g_ticket=-1
                                                → 完整项目 manifest
  POST /api/schematic/lists {uuids:[<sch>]}     → sort: [{uuid:<sheet>}]
  POST /api/v2/documents/lists {uuids,docType:1} → schematic plaintext
  POST /api/v2/documents/lists {uuids,docType:3} → PCB plaintext
  POST /api/coppers/search {paths}              → 铺铜层
  POST /api/textpath/search {paths,project_uuid}→ 字体/文字
  POST /api/v2/resources/search {hash,project_uuid} → BLOB 图片

实现:
- crawlers/oshwhub/crawler.py:
  - fetch_pro_source() refactor 成 dispatcher,先 GET project meta
    检查 branch_uuid,null 即旧版走 _fetch_pro_legacy(),非空走
    _fetch_pro_modern()
  - _fetch_pro_legacy() 新增(按上面 9 步流程拉所有 doc + 辅助层)
  - _pro_post_json() POST helper(与 _pro_get_json 对称)
- schemas/project.schema.json: source_format enum 加 easyeda-pro-legacy
- docs/sources/easyeda_pro_source.md rev 4: §1.1 旧版 vs 新版判别表更新、
  §2.7 新增旧版抓取流程 + 实测数据

落盘约定(旧版):
  source/ticket.json                     完整 manifest
  source/<sheet_uuid>.json               每张原理图(含 dataStr)
  source/pcb_<pcb_uuid>.json             每块 PCB
  source/coppers.json/textpath.json/blobs.json  辅助 PCB 层资源
  source/manifest.json                   索引

实测:
  立创·梁山派      editor=2.1.30, 2 sheets+1 pcb,    1.0 MB,  78 sym/191 fp/128 dev
  立创·泰山派 RK3566 editor=2.1.40, 29 sheets+1 pcb, 0.8 MB, 299 sym/524 fp/295 dev

旧版项目体量比新版小两个数量级(梁山派 1 MB vs RK3576 66 MB)—— 没有
增量 history,组件库走单独端点,本身就是当前快照。

5/5 Pro 项目终极汇总:
  X86 主板          easyeda-pro        3.2.15  7374 docs / 481 MB
  泰山派 RK3566     easyeda-pro-legacy 2.1.40    30 docs / 0.8 MB
  梁山派            easyeda-pro-legacy 2.1.30     3 docs / 1.0 MB
  220V 桌面电源     easyeda-pro        3.2.69   771 docs /  26 MB
  ESP-VoCat         easyeda-pro        3.2.91   278 docs / 7.5 MB

共 8456 docs / ~516 MB plain。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-28 21:59:25 +08:00
parent 3282a028c4
commit c6279bff08
48 changed files with 2603 additions and 22 deletions

View File

@@ -428,15 +428,34 @@ def fetch_pro_source(
proj_dir: Path,
sleep: float = SLEEP_PRO,
) -> dict:
"""Fetch EasyEDA Pro project source: full history chain, AES-GCM decrypted,
gunzipped, and partitioned into per-document EPRO2 streams.
"""Dispatcher: pick modern (3.x branch+EPRO2) vs legacy (2.x v2/documents/lists)
based on whether project meta contains a non-null branch_uuid.
Pro 3.x stores in git-style branch+history with AES-encrypted EPRO2 streams;
Pro 2.x predates that and uses Std-style per-doc dataStr served from
/api/v2/documents/lists. See docs/sources/easyeda_pro_source.md §1.1.
"""
proj = _pro_get_json(pro_client, f"{PRO_API}/projects/{project_uuid}", project_uuid)
time.sleep(sleep)
if proj.get("branch_uuid"):
return _fetch_pro_modern(pro_client, project_uuid, proj, proj_dir, sleep)
return _fetch_pro_legacy(pro_client, project_uuid, proj, proj_dir, sleep)
def _fetch_pro_modern(
pro_client: httpx.Client,
project_uuid: str,
proj: dict,
proj_dir: Path,
sleep: float = SLEEP_PRO,
) -> dict:
"""Modern Pro 3.x fetcher: full history chain, AES-GCM decrypted, gunzipped,
and partitioned into per-document EPRO2 streams.
Side effects under ``proj_dir``:
- source/structure.json — project document tree (boards/schematics/sheets/pcbs/...)
- source/<doc_uuid>.epro2 — one file per document, raw EPRO2 messages (newline-separated)
- source/manifest.json — per-doc index + chain summary
Returns dict matching the shape `fetch_std_source` returns.
"""
import gzip
from collections import OrderedDict
@@ -445,14 +464,8 @@ def fetch_pro_source(
src_dir = proj_dir / "source"
src_dir.mkdir(parents=True, exist_ok=True)
# 1. project meta -> branch_uuid + editor_version fallback
proj = _pro_get_json(pro_client, f"{PRO_API}/projects/{project_uuid}", project_uuid)
branch_uuid = proj.get("branch_uuid")
if not branch_uuid:
raise RuntimeError(f"no branch_uuid in project meta for {project_uuid}")
# Some projects' DOCHEAD payloads lack `editVersion`; project meta has `editorVersion`
branch_uuid = proj["branch_uuid"]
project_editor_version = proj.get("editorVersion")
time.sleep(sleep)
# 2. branch meta -> head history_uuid
branch = _pro_get_json(
@@ -597,6 +610,218 @@ def fetch_pro_source(
}
def _pro_post_json(
client: httpx.Client,
url: str,
project_uuid: str,
body: dict,
) -> object:
"""POST a pro.lceda.cn endpoint with `path` header, validate envelope."""
r = client.post(
url,
json=body,
headers={"path": project_uuid, "Content-Type": "application/json"},
)
r.raise_for_status()
j = r.json()
if not j.get("success"):
raise RuntimeError(f"Pro API failed (POST {url}): {j}")
return j["result"]
def _fetch_pro_legacy(
pro_client: httpx.Client,
project_uuid: str,
proj: dict,
proj_dir: Path,
sleep: float = SLEEP_PRO,
) -> dict:
"""Legacy Pro 2.x fetcher: project meta has `boards: [{sch, pcb, name}]` and
no branch model. Documents are fetched via `/api/v2/documents/lists` (Std-style
plaintext dataStr); resources/coppers/textpath/blobs come from supplementary
POST endpoints. Reverse-engineered from HAR `tmp/prodownload3.har`
(2026-04-28); see docs/sources/easyeda_pro_source.md §1.1.
Side effects under ``proj_dir``:
- source/ticket.json — full project manifest (counts of all asset types)
- source/<sheet_uuid>.json — schematic sheet content (docType=1)
- source/pcb_<pcb_uuid>.json — PCB content (docType=3)
- source/coppers.json — copper pour data (if any)
- source/textpath.json — text path / font data (if any)
- source/blobs.json — embedded image blobs (if any)
- source/manifest.json — index across all of the above
"""
src_dir = proj_dir / "source"
src_dir.mkdir(parents=True, exist_ok=True)
boards = proj.get("boards") or []
if not boards:
raise RuntimeError(f"legacy project {project_uuid} has no boards[] in meta")
project_editor_version = proj.get("editorVersion")
# 1. ticket — full manifest (counts of every asset type the project owns)
ticket = pro_client.get(
f"https://pro.lceda.cn/api/projects/{project_uuid}/ticket",
params={"uuid": project_uuid, "g_ticket": "-1"},
headers={"path": project_uuid},
)
ticket.raise_for_status()
ticket_j = ticket.json()
if not ticket_j.get("success"):
raise RuntimeError(f"ticket endpoint failed: {ticket_j}")
manifest_ticket = ticket_j["result"]
(src_dir / "ticket.json").write_text(
json.dumps(manifest_ticket, ensure_ascii=False, indent=2), encoding="utf-8"
)
time.sleep(sleep)
doc_metas: list[dict] = []
# 2. schematic containers -> sheet UUIDs via /api/schematic/lists
sch_container_uuids = [b["sch"] for b in boards if b.get("sch")]
sheet_uuids: list[str] = []
if sch_container_uuids:
containers = _pro_post_json(
pro_client,
"https://pro.lceda.cn/api/schematic/lists",
project_uuid,
{"uuids": sch_container_uuids},
)
if isinstance(containers, list):
for c in containers:
for s in c.get("sort") or []:
su = s.get("uuid")
if su:
sheet_uuids.append(su)
time.sleep(sleep)
# 3. schematic sheets via documents/lists docType=1 (plaintext dataStr per sheet)
if sheet_uuids:
sheets = _pro_post_json(
pro_client,
"https://pro.lceda.cn/api/v2/documents/lists",
project_uuid,
{"uuids": sheet_uuids, "docType": 1},
)
for s in (sheets or []):
doc_uuid = s["uuid"]
local_rel = f"source/{doc_uuid}.json"
text = json.dumps(s, ensure_ascii=False, separators=(",", ":"))
(proj_dir / local_rel).write_text(text, encoding="utf-8")
doc_metas.append({
"doc_uuid": doc_uuid,
"docType": 1,
"path": local_rel,
"size": len(text.encode("utf-8")),
"sha256": hashlib.sha256(text.encode("utf-8")).hexdigest(),
})
time.sleep(sleep)
# 4. PCB documents via documents/lists docType=3
pcb_uuids = [b["pcb"] for b in boards if b.get("pcb")]
if pcb_uuids:
pcbs = _pro_post_json(
pro_client,
"https://pro.lceda.cn/api/v2/documents/lists",
project_uuid,
{"uuids": pcb_uuids, "docType": 3},
)
for p in (pcbs or []):
doc_uuid = p["uuid"]
local_rel = f"source/pcb_{doc_uuid}.json"
text = json.dumps(p, ensure_ascii=False, separators=(",", ":"))
(proj_dir / local_rel).write_text(text, encoding="utf-8")
doc_metas.append({
"doc_uuid": doc_uuid,
"docType": 3,
"path": local_rel,
"size": len(text.encode("utf-8")),
"sha256": hashlib.sha256(text.encode("utf-8")).hexdigest(),
})
time.sleep(sleep)
# 5. supplementary PCB layer assets — coppers / textpath / resources (blobs)
aux: dict[str, object] = {}
copper_paths = list((manifest_ticket.get("coppers") or {}).keys())
if copper_paths:
coppers = _pro_post_json(
pro_client,
"https://pro.lceda.cn/api/coppers/search",
project_uuid,
{"paths": copper_paths},
)
(src_dir / "coppers.json").write_text(
json.dumps(coppers, ensure_ascii=False), encoding="utf-8"
)
aux["coppers_count"] = len(coppers) if isinstance(coppers, list) else 0
time.sleep(sleep)
textpath_paths = list((manifest_ticket.get("textpath") or {}).keys())
if textpath_paths:
textpath = _pro_post_json(
pro_client,
"https://pro.lceda.cn/api/textpath/search",
project_uuid,
{
"paths": textpath_paths,
"project_uuid": project_uuid,
"path": project_uuid,
},
)
(src_dir / "textpath.json").write_text(
json.dumps(textpath, ensure_ascii=False), encoding="utf-8"
)
aux["textpath_count"] = len(textpath) if isinstance(textpath, list) else 0
time.sleep(sleep)
blob_hashes = list((manifest_ticket.get("blobs") or {}).keys())
if blob_hashes:
blobs = _pro_post_json(
pro_client,
"https://pro.lceda.cn/api/v2/resources/search",
project_uuid,
{"hash": blob_hashes, "project_uuid": project_uuid},
)
(src_dir / "blobs.json").write_text(
json.dumps(blobs, ensure_ascii=False), encoding="utf-8"
)
aux["blobs_count"] = len(blobs) if isinstance(blobs, list) else 0
time.sleep(sleep)
# 6. manifest.json — overall index
structure_summary = {
"boards": len(boards),
"schematic_containers": len(sch_container_uuids),
"schematic_sheets": len(sheet_uuids),
"pcbs": len(pcb_uuids),
"symbols": len(manifest_ticket.get("symbols") or {}),
"footprints": len(manifest_ticket.get("footprints") or {}),
"devices": len(manifest_ticket.get("devices") or {}),
"coppers": len(manifest_ticket.get("coppers") or {}),
"textpath": len(manifest_ticket.get("textpath") or {}),
"blobs": len(manifest_ticket.get("blobs") or {}),
}
manifest = {
"project_uuid": project_uuid,
"fetched_at": datetime.now(timezone.utc).isoformat(),
"editor_version": project_editor_version,
"boards": boards,
"documents": doc_metas,
"structure_summary": structure_summary,
"aux": aux,
}
(src_dir / "manifest.json").write_text(
json.dumps(manifest, ensure_ascii=False, indent=2), encoding="utf-8"
)
return {
"source_format": "easyeda-pro-legacy",
"source_path": "source/",
"source_documents": doc_metas,
"editor_version": project_editor_version,
}
# ---------------------------------------------------------------------------
# Single-project crawl
# ---------------------------------------------------------------------------

View File

@@ -48,5 +48,31 @@
"skipped_files": [
"pro_source: no branch_uuid in project meta for 0c46759837334318aa4882d6d37f96fa"
]
}
},
"source_format": "easyeda-pro-legacy",
"source_path": "source/",
"source_documents": [
{
"doc_uuid": "7afa5716d98b4f86a3c0707e492282cf",
"docType": 1,
"path": "source/7afa5716d98b4f86a3c0707e492282cf.json",
"size": 280819,
"sha256": "792aa7eea759f4428a21bdba092e70a6f88eece9366e982a17dc6e150cf198fd"
},
{
"doc_uuid": "4c011b4cd50a42268e356d1357ac4a1b",
"docType": 1,
"path": "source/4c011b4cd50a42268e356d1357ac4a1b.json",
"size": 19327,
"sha256": "aec80810542894439ac76c144dc96dba5f839198a6b378ea7cc9c25b83bb13de"
},
{
"doc_uuid": "ec385364f37c4c14b31eaa17f7bc5452",
"docType": 3,
"path": "source/pcb_ec385364f37c4c14b31eaa17f7bc5452.json",
"size": 734245,
"sha256": "e01508abb85ca3df1c31ba02a7de7853cf87139cf891e79f39ae5aad2f1d5ea8"
}
],
"editor_version": "2.1.30.c6721c40"
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,52 @@
{
"project_uuid": "0c46759837334318aa4882d6d37f96fa",
"fetched_at": "2026-04-28T13:55:26.721087+00:00",
"editor_version": "2.1.30.c6721c40",
"boards": [
{
"sch": "77f6ba494d174a7aaa0d63f0846a8483",
"name": "梁山",
"pcb": "ec385364f37c4c14b31eaa17f7bc5452"
}
],
"documents": [
{
"doc_uuid": "7afa5716d98b4f86a3c0707e492282cf",
"docType": 1,
"path": "source/7afa5716d98b4f86a3c0707e492282cf.json",
"size": 280819,
"sha256": "792aa7eea759f4428a21bdba092e70a6f88eece9366e982a17dc6e150cf198fd"
},
{
"doc_uuid": "4c011b4cd50a42268e356d1357ac4a1b",
"docType": 1,
"path": "source/4c011b4cd50a42268e356d1357ac4a1b.json",
"size": 19327,
"sha256": "aec80810542894439ac76c144dc96dba5f839198a6b378ea7cc9c25b83bb13de"
},
{
"doc_uuid": "ec385364f37c4c14b31eaa17f7bc5452",
"docType": 3,
"path": "source/pcb_ec385364f37c4c14b31eaa17f7bc5452.json",
"size": 734245,
"sha256": "e01508abb85ca3df1c31ba02a7de7853cf87139cf891e79f39ae5aad2f1d5ea8"
}
],
"structure_summary": {
"boards": 1,
"schematic_containers": 1,
"schematic_sheets": 2,
"pcbs": 1,
"symbols": 78,
"footprints": 191,
"devices": 128,
"coppers": 29,
"textpath": 3,
"blobs": 1
},
"aux": {
"coppers_count": 0,
"textpath_count": 3,
"blobs_count": 1
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,462 @@
{
"block_symbol_attrs_groups": {},
"blobs": {
"f35bd2697fb33f962abd989f4d75d8ff37691527999b11359667cf587722c9b0": 0
},
"schematics": {
"77f6ba494d174a7aaa0d63f0846a8483": 47
},
"coppers": {
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3732": 1657189663472,
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3733": 1657189663477,
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3734": 1657189663481,
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3735": 1657189663486,
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3736": 1657189663491,
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3737": 1657189663621,
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3738": 1657189663626,
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3739": 1657189663630,
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3740": 1657189663635,
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3741": 1657189663639,
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3742": 1657189663838,
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3743": 1657189663843,
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3744": 1657189663848,
"7e3407ac928a46ac8a8fb8107d8aa5d1_e3745": 1657189663854,
"2047d1452aff484ba7f854928cb97de7_e3732": 1656923499158,
"2047d1452aff484ba7f854928cb97de7_e3733": 1656923499164,
"2047d1452aff484ba7f854928cb97de7_e3734": 1656923499169,
"2047d1452aff484ba7f854928cb97de7_e3735": 1656923499173,
"2047d1452aff484ba7f854928cb97de7_e3736": 1656923499178,
"2047d1452aff484ba7f854928cb97de7_e3737": 1656923499340,
"2047d1452aff484ba7f854928cb97de7_e3738": 1656923499345,
"2047d1452aff484ba7f854928cb97de7_e3739": 1656923499350,
"2047d1452aff484ba7f854928cb97de7_e3740": 1656923499354,
"2047d1452aff484ba7f854928cb97de7_e3741": 1656923499367,
"2047d1452aff484ba7f854928cb97de7_e3742": 1656923499521,
"2047d1452aff484ba7f854928cb97de7_e3743": 1656923499526,
"2047d1452aff484ba7f854928cb97de7_e3744": 1656923499531,
"2047d1452aff484ba7f854928cb97de7_e3745": 1656923499539,
"ec385364f37c4c14b31eaa17f7bc5452_0": 1665992821151
},
"textpath": {
"7e3407ac928a46ac8a8fb8107d8aa5d1_0": 1657189664483,
"ec385364f37c4c14b31eaa17f7bc5452_0": 1665992822260,
"2047d1452aff484ba7f854928cb97de7_0": 1656923500004
},
"schs": {
"7afa5716d98b4f86a3c0707e492282cf": 31,
"4c011b4cd50a42268e356d1357ac4a1b": 13
},
"pcbs": {
"ec385364f37c4c14b31eaa17f7bc5452": 295
},
"panels": {},
"symbols": {
"81053c8718d342d09a7c09962459ea23": 3,
"200e400b731c4bd5a37771a6e8de966b": 1,
"8c5a51cf97044d95877e8f5ee8e19b83": 3,
"e577624460ee4a3e976b61a5a4f7ae8b": 3,
"ee72950dc33847549ef4bbef4af41ce6": 1,
"415fabf07ddc44c1affd0046d6e9f202": 3,
"967cdddda7b940c28a0a007442bd1723": 1,
"5ee300b19c2446ab830ad3dc3929b842": 3,
"ca34bd5d3c9d4769bd47c1bff3d8e5d5": 1,
"ba88476e39384514910d41a60f7a6fbc": 3,
"f2fcf24dfbcf48aaafe6ae7c86f64192": 1,
"ada0bd227e3c4810bf2e4e76349d717b": 3,
"19ca194754744b389b76bae667824415": 1,
"816cf21f5c8349a0af19c7da594867c0": 1,
"6e4c4482999248b494b905a2ca99c858": 3,
"42c6531ac8f7462dbf41f72979cc4c4c": 1,
"579f471ddca44aa9959bd1a9187fc4e9": 3,
"51d2dc283da3410884a3c58bf4dd186d": 1,
"e484756b17724e809d4792698ade6b87": 1,
"3d27dd06000a481b83d4c6bedea7d812": 1,
"88eb4ac23f85452997f83a9ce42857f9": 1,
"8015f06b4d9645c0894fae6b7ecc7a5d": 1,
"4207adcd7d4243fc8c1f859bff4539d5": 1,
"42a67eba22194144a7362e11bbf0eef8": 1,
"cc4ec2d43081455280ac2b3cdd147d8b": 1,
"43dd51bb93cd472f815f493503571681": 1,
"3dff7e8296724125b175a1c30746a307": 1,
"525755deee8d4a4684fd15b6b9842c77": 1,
"c461ec7c42bb48deb767544ee37679a2": 1,
"88fc081783a24e96a4533623ffbaaa03": 1,
"2ea4536d41604ff68a1f4bdd386355fa": 1,
"81bf7fa7dc7149578d76b16c98a02ede": 1,
"070f7839529c472bbea1a00d4cec8378": 1,
"3acfff1b31cc4b8e95e0f88c89d5d666": 1,
"67398e1f21d34544a400411bb71b851e": 1,
"74a9548797724a88a974d05127195ede": 1,
"4d88f75bc33146f4934107cdc2888d97": 1,
"95daeaef817849dd94edea43d8b648e6": 1,
"40fbe875b2714ddea1c55dcd93d4880c": 3,
"df8c96bea46d4861a68bc970c6689066": 1,
"24b36901651f4166b25c45fba1e76a6e": 1,
"d30bd0dc6e084eac83e6cf2389d81eb1": 3,
"448df6939a034fb1a4ed3cefa90de404": 1,
"121df14e004e43ba880b2b16817c47c6": 1,
"f46bad1d285841f582bdf8f67dc445e7": 3,
"81213d7d83534666a31c07d8d7fbaa9c": 1,
"bae115f7a1164e93829ea596d1dd177c": 3,
"46dbc8840e714889bb60d158880992b2": 1,
"2dc28695868e4f45b97497bcd8f5e7c2": 1,
"a701f086bcd4424e9bd5d6f411da1875": 1,
"fa14c7ec172e482c998ac752dadc73bf": 1,
"f1c731e0c3864d97b0320176199ef920": 3,
"d8d19a39f1b241ef8d251261e59708b8": 1,
"ef954e0adf234bab8e2cfad61a9ad523": 1,
"1745257e50ba44749f693e9efca3cbb1": 3,
"089e1398d95349a5b212f4904de947b8": 1,
"04cf7ce02a2140d6aa785dc6d04a7b84": 1,
"1637fc60503b4660a7cf9144e589bce5": 1,
"af74cfd69b2b4215bd0561907508e677": 1,
"2f3e2bb456a746e2b576e37c485a97d1": 1,
"be138ca5b2784bf8bce05297d4303cfc": 1,
"8d83a68e3ea7459aa5c766373ea06e0c": 3,
"0cee305f80914816a874159c6bd5d4bc": 1,
"a989d6320f3d4f678467aac6644afc04": 1,
"4ffe182d86864476ab6cf73a05352d2f": 1,
"7e6e5b2867244d1c9f0261c1a3cad05f": 1,
"dcca30a7597d416ba01dc22d08cedcbe": 1,
"e678625ed3944ef4b16687316f49e9fc": 3,
"d71d50f2615f46aba0d7a321225266ad": 1,
"bea4f0fc72aa4dee8fc1e4757b4174b2": 3,
"c934425c9a9840ebbe0fc859858c13e5": 1,
"90aa42abcb004bc8b34c24b4e351ee49": 1,
"28e8a5a46f5e4b7eae9ac54b20095997": 1,
"03aead5a0e454d5c9ea2709b38959a46": 1,
"1ea84f3dbedf4f1396397a5062268f26": 1,
"8ac2c91ba1c94edd8f6406e432684559": 1,
"16ba008c546d4efd82195666bb2f5d5d": 1,
"19c9976f61d94dd3be155777469a386e": 1
},
"footprints": {
"5f520470e7b34b4e8225ca34a52a5572": 1,
"ffd0e6db48374edd9785ae115efa6178": 1,
"d4783e56ca874de3aa23a3edde6e8726": 1,
"49f4bdf692184cf2886edcfc3c8dbe78": 3,
"71eef095a29c4701a5d0fb86f556cdc9": 1,
"c7b7d9fd51bc4db88b0294949ebaf68c": 1,
"3c962b0ed3eb4c6ebd55d77dbeda19e8": 1,
"21f2b9022cdb45818ad0488298cec5f1": 1,
"dc48445bba59417fb25c395f5073cd4a": 1,
"fd280cf9673d4677928121e003688337": 1,
"76711f3cfcf04135ae6e7379c059f0e2": 1,
"0217126496a5430193c81eb6cccb1230": 1,
"3672c44f9fc84b0997d4690e1ccae35e": 1,
"09f5169909ac437f820eb2ec6358becb": 1,
"7671889be4e7430cb8cbb55fca4817a4": 1,
"653da813ec4a4d1b95904caf402e3fc5": 1,
"d68cc41f9c284ab2937cf3cd59e9c48a": 1,
"ba022d9d2ffa45d1a824d203a083109c": 1,
"51d968978b8e40389940f1160ee684f8": 1,
"7904ebb441e24d16a52f795f6960ac9d": 1,
"46dd2d06715e467eaf42ab960aa2dcff": 1,
"a28721e665204f97b7979d93a1964339": 1,
"74a17f32ea194b0d91b22ae6d5e2aa8c": 1,
"c08dbeaacdf7410fa3736e5918101313": 1,
"bf2431a720694ff9afc920b5fa9fb3fb": 1,
"0d7a057d93904b0f9593197841504373": 1,
"fac3afb69eb04061a9ab19d0db4dda86": 4,
"658218cfe67341c588d4c4ccc2ab71e9": 3,
"e2d588e60772451eafcd9b9e9e6bed6a": 1,
"99dbfc3618f7478981b9e909f6c6f95d": 1,
"3cda6889a88c4d8bb95964f570747955": 1,
"c8ebce3c899b4aed9a0382e2350a1096": 1,
"f734af0c8f85434d891262699ba53da0": 1,
"a06778880a1f4f7cb5d793dd5b35d300": 1,
"55c64ff33f83483ebd1fc31ca8aa58c1": 1,
"572fb0bbc8f54bb89515adc6b253d06b": 1,
"177b5a844d5c456bb441d198f64ffdf1": 1,
"39cff7abdaad46178fcbb5f5c62211b9": 1,
"c32ab44b10fd4e7d8156cf4f807c5e65": 1,
"2af30cea36624cbe8827159ef3c667a6": 1,
"c7f7322203c044b1b22c0cdaaf729e9c": 1,
"53d0568f642c451f8f0069346e7a3a84": 1,
"18df338c5eb141e799bc46df56fcc260": 1,
"cc4fa2920f8045138bddbf5144015bf6": 1,
"e172c90852584ae7ac828e668f111d69": 1,
"d2946628870b4a0da50228f94c667550": 1,
"a4ef2a1b5c464670b994dd11d080021b": 1,
"be2329e017f44821ab72901a7c2533ab": 1,
"837e13e921724de9a1d394e8b755cc0b": 1,
"774081f5004c491fa241816e138d54e5": 1,
"03ec9b384aff45a7a76ee33208d8d4f0": 1,
"31ae1cfeee44451093196d322ecbb26d": 1,
"380391f0537649b289d95602606d1dc5": 1,
"e2c45440f97d4397bc4c00cde0b22570": 1,
"f3d4eac2a71849899e488c2461484472": 1,
"46b9cf8ff54b419ca82f58437f05d926": 1,
"a2d3b4bca3c343feb105158531ae030d": 1,
"a4346f997f074817be6ad6f1130aa33c": 1,
"fbb5030c0868458a8fa08247626ab697": 1,
"1c56986965b44775a09be881c2976a9c": 1,
"8b132c67741d4c9b9fbad68b6a36b02a": 1,
"6eeb5c890fa344ad836f44c6fa814c4a": 1,
"95b1d2c77ccc40c88cc16776758ff470": 1,
"591ffab5df964fbbbcc6dfdc685be003": 1,
"46f741b57fd34f7cb271f4777f2b5561": 1,
"92a8401c1c3644e8a7c3639fb9fc9a6f": 1,
"ba64a9f4472841c5845ec4cfa23c5c98": 1,
"7a05a2c649c0496ca1f1dc84bcf62ec4": 1,
"7e352858cd3e4c99a2869341c6d3f540": 1,
"9cabb935cd3246e1b0423ab6de304926": 1,
"8789596169424a9daa657ebb5be18e50": 1,
"8bcd729d3a7e40f3848bfdfd5c1cc558": 1,
"86e09710151d4224bf86513bb7de0a61": 1,
"f11aeed30b004b82be1602dedabb3bb1": 1,
"41e2a3a3ebd643008adba4e992e5e66d": 1,
"137c3dfc4ce84d4baf68f94a578bf72f": 1,
"d8004521cd574304ac301ad07a9faf1c": 1,
"ba32fc23f9ea4e11968c5a4465adf858": 1,
"134ee68b679b4c9d828d26060e557a35": 1,
"f20028cfbd4e4ca4ab87add0821c65d4": 1,
"309796174b5f4ac1b02b5bf11696916d": 1,
"2aa0dea23c4f4546bfb20a60ef10fbfd": 1,
"b1ca5844ce1c45bab31196fabebd9fc3": 1,
"6c51f2b48ace4fc1946e01c9d3274466": 1,
"3005faf26460439584df52f1bca7eb59": 1,
"eb03c565094447f48145cac4e3da6700": 1,
"07743ce1b2744a14ae141bb57cb077b3": 1,
"19181dc02d18467f89e666fb5a5e2124": 1,
"4db616cb99614a58829b81a6a1bb2fef": 1,
"d2420c32db8a40568b73f5b02dff151f": 3,
"44e41cd5e73b4c1e8cb227570a78d19f": 1,
"120ca6a1d4a147478fffcfbc27da47bb": 1,
"b979cd90d61a4fe096f298dd7c6024f8": 1,
"ec6137b6bf404d3790f5fdfb9e918101": 1,
"a4e2be1c4a8542c9bac00eaa34580d9a": 1,
"42845b14afda4cfcb56a4e060f54358b": 1,
"4999d9f840f94ca4a9957615cfbd2dbc": 1,
"5e6df63bf2214a0d8bb3aec60c3a2143": 1,
"146818c9c5204bdba846e5867eb663fc": 1,
"45b333e50250455fa044061960ada951": 1,
"5b3dc2fbe86244edb35f261bf7627473": 1,
"9227cee95c0a402baf25f572b62f5be4": 1,
"62bc3fb2f0174ea2912c4c160a619e89": 1,
"61a5422822ca444ab2426613a42b8343": 1,
"dda24cb9adb14dab8f15318f98446f30": 1,
"643f4b42967b4cf9a65e438c0927e1ae": 1,
"270ad17514824e3ca18920f5ef25d83c": 1,
"1d2a9f0a4eed4384854c8c700547e1ff": 1,
"edec355d7d8d4ea1b111774b96d0ae77": 1,
"96591771713f4736be1ad7ba86a13d27": 1,
"537e2c0ac4f54fe8bb3cb74616fee2f1": 1,
"3e9fc0b53a214fd9b6ee4164ac9bddd7": 1,
"0e14e1ca8bc04e089beadff274c3d704": 1,
"f01d8778bbab49e5878f324b8a85321e": 3,
"055312e665fa4f8489187f0e60b0675c": 1,
"b392e504c2954308b91c48fac19e7d1e": 1,
"45aa9f39824f42dd9f07a78d300c93ef": 1,
"d0eb9b9a20cf4d6f8227ac0c914d0147": 1,
"6cc5e53df7b241df9eb0e93fe95b5bae": 1,
"24969b597505495aaaf897e1ff27762f": 1,
"ed32763c20244b7098e37d779cbd3559": 1,
"b4dd4f0cd02943189e78a37edc050e0a": 1,
"b29f0f6832834683be23289d23d6699e": 1,
"5c6c4ecdb98d4df3b60e30d4ccc06c05": 1,
"32113a6970ae42c58f7b19a802537999": 1,
"5bd9bca2db9843838c3d0f2dd6638b4d": 1,
"37fb651ac2ec4fe2a416acb30e731167": 1,
"77b62f2779c54ff8be921f50b8f73b45": 1,
"256389f8a14f4b56934d7a2ee03d2843": 1,
"52394026fe574bbfb1b41217ec08bf0e": 1,
"3e663825a72c4d50ab11d401867f846c": 1,
"3387f52370134a369d07ea6f96ca4e18": 1,
"81158bed47ad48d1a6a054819947b4dc": 1,
"0b7c49755aec4112badbbde2c6e15b9d": 1,
"9c0e953bdca24aa887abc90fb520cdbd": 1,
"67065d739cb34b9b99c09b044db62f67": 1,
"0d5582bb47514cb8994117ec89e1fcef": 1,
"7c67ad84784041ac9757e578f6208834": 1,
"357be0f58d294180af74d66cac0b4eae": 1,
"f96dd7550a74481e893c9fa646816c89": 1,
"263037fa58cd4f4e8c7eac1987aaa8ff": 1,
"1868280105b447ad8b15a6720f4dc6fd": 1,
"2d6cec0f71e14d308d9c26fd9eb53c2c": 1,
"0617f4f5ee0248489847dc9b5deaf33e": 1,
"b70550b56cc04a54aa1daacf1495e434": 1,
"4b20fd16236440b195ef1dee96701ef7": 1,
"988ae2115b3c415e83bbb2562de9ec05": 1,
"c36f1b9917df4d10930168424d2a7c2b": 1,
"24b76532d9224eae897edaa8f5699539": 3,
"7ebc02862838406e90311f8714b4dbd8": 1,
"4e9b0964792141508a2a32e700f66f3a": 1,
"accfe76b011c41f3b9b331512549fe6e": 1,
"615a676e618944ffaf514a98ac75665a": 1,
"74b96d1b2ed2463aa3fdffdb3b2225e0": 1,
"6e9b49fccc1d4da4aed0a8dbf165191e": 1,
"21ad54c3a1594265bafffdadbeada5fb": 1,
"fc4d9dda97e648498f4b0c8c507f2da0": 1,
"91f7944bc3b1472b801a6afa8664a040": 3,
"510f660076b24a0881aa35ca82def5ee": 1,
"ca5041031e284654bf084ada2dfb4f07": 3,
"1d54df24c85f45a0ab0a524763370a4e": 1,
"ce88abc5412d40ad9a3d47f7054387a1": 1,
"ab1d54216a9e4b32959d9eb13a35b3f6": 1,
"32e773ab3207422487f809ebc5950479": 1,
"098d567a3ea64392a76c60eec8048947": 1,
"f46dca36b9494e5093603b3de23359e5": 1,
"b2ccd774b1d0442296e063fc959120e5": 1,
"f3b236e210f64a52916baf41d7b69577": 3,
"dec63448cebe43f59251906a1cc278fc": 1,
"55b22c36ca214d69a04816736748f14c": 1,
"ac837b23230e4282864da37baad84593": 1,
"b2dceb0c89ff47b8b145a2ca2b68b213": 1,
"650c7a8bfae049dbbe965918d6f62315": 1,
"fc3aa0d9830d4ac1bd1692e192d67126": 1,
"3bc167529dba4df5b664d29979259156": 1,
"66d95955e4c44095a6030f45cd91ef39": 1,
"82440f5e79fe4dcca44d7023743c89ae": 1,
"fb54f8014d68462e925e5e8c61aaade9": 1,
"c7e576f7c56543ceb80fbfc944b2e066": 1,
"49800396778041418863e795b6191f14": 3,
"82b92fac6f174549a23bbfda8d5e2ebe": 1,
"26e6177e002e4e60b6fc30e4c35a8022": 1,
"5e58cf77e1004ffeb982ed3414d517a2": 1,
"eb234c06b36849f493d3006c4a5bb16f": 1,
"15f7ed7049834b7897d7eeccecc52449": 1,
"2281ead5450b4565a59f6f5547697540": 1,
"cfb819b8395b4b9094f51a6f95a98f70": 3,
"f05cbe6c6fbc474681cca820aa914a30": 1,
"8a0768029fdb439b9e41119c48e21317": 1,
"2def6eef716f4097ae1230f36a921274": 1,
"de4baa96513a4380ae1213b3911381f3": 6
},
"devices": {
"4cd69fe5810240c4ab2140f6e0c7a19e": 2,
"388c50acc7834979ada15c9e0dcd29b0": 1,
"9d922d79a4a849249e0d35114740f26d": 1,
"b8bdf1443d884078adeacc5132a592e0": 1,
"8366952daea74b9d83bddc1d280925a3": 1,
"ccb27c90ed8b4ecc8b3d39dc45cc6819": 2,
"a91ffb4720d04ab9b4e43cd752925431": 1,
"00b85ed49c8b4967906fa2f460ada978": 1,
"84a148bc209c437898dcaa8cbff05dc9": 1,
"9f93a7a3ba234d7ab09b8a1d4a7ed839": 1,
"395d5e8a4e33428aa4c568e71bf145ed": 1,
"e8cf7d05a9ea4b75b4e3d72219998c3b": 1,
"671ff5dbb53540639795c7dd182b511e": 1,
"e529fe9158344eeaba4dc6a3b14e56cb": 1,
"df6c37b14816454d9bc2225581053b55": 1,
"3795846e22514759b55ef2c65d1ed1f9": 1,
"6f51985f64a34ddf947e8c7967306446": 1,
"07c9c6c2c44046349eefa72c5e93f332": 1,
"78a8e7ecd9364adb894e2d4226f64e03": 2,
"becc7bcf425743f68ddd3e6cde510d89": 4,
"229528d884854d09b94a681189ed632c": 1,
"0c8a2a5c8a124c4b8ee32a41e1902837": 2,
"f5e7608c6a1b4c8aa139ebf0b9711f59": 1,
"8f69913803be4d0889b8ca90eca9cf1d": 1,
"afb4b5294b2240b596efb6ca88db0a16": 1,
"d39b996b87384a1581cd029ff54a9f57": 1,
"62b44fd971194202982dd44c214c0716": 1,
"134736035c6e4ce1a4b0d48619914f48": 1,
"0d39fab8436d4c6f874b9fadb23ba160": 1,
"965533674a79463faf2567e25f8f64fe": 1,
"1ab1c1abd4574cc59557192e900a877d": 1,
"f083fc72ee71493e8dc2593d7ccc612c": 1,
"41ccd3f5450446c3a950cee91cff9a21": 1,
"8a6a1eb260014242ad95343e755c81e7": 1,
"917fb128ecc14197a99bf1db6e54f9a9": 1,
"09df7273d83943c9b2019878d8718a8a": 1,
"d5dc32eae0b141a5bbe86ed3616017a6": 1,
"8c83ed49060f48bebcf59372156cee09": 1,
"f468ce6c5573474999db0e55dba50707": 2,
"be5ac0e9a3e6468e8fa7ebdae56c58e9": 1,
"16869af292fc47128dce30b918e23b41": 2,
"ff13441528ce4a4f9d92e50ca65f9f0d": 1,
"6ae0c14f255b4c17a99d4b3bd9517731": 1,
"34dfbaf5cf9b419fbb8adeb4b0727461": 1,
"2c3da7fd83e243519ec4b2fa54cd8f79": 1,
"cd9e4897231548dcaa6cfca4bb94a541": 2,
"ca935987ae5248e08ff51ee33f36acae": 1,
"fa8058e7cef345f4a25e656af55965c2": 2,
"469c5c48a90f4d869d388a5d6e84d1eb": 1,
"cb4a212fcdbc404a908b8e279484090e": 2,
"770f1f297cf14ccfaa736c97e77d8b54": 1,
"82c301317c31426d83c3a6c40676c020": 2,
"efd2b1a9b2394614947b7e06c91ffe09": 2,
"f90a3837c0ac4975ae432ceb53966800": 1,
"d7a2a20ddc064d0f80bf2c8a5361bef5": 1,
"08fa53fdcfab4c8badd31decdd1e1283": 1,
"fffe34a4637244578239dd24d6621573": 1,
"8ff8bed1c6cb43df9a976f3a600ccbed": 1,
"2ed66d0aa7ba498e9e4228076af87446": 1,
"605682e6991f43c4b0bca0b7dadb5f83": 1,
"a95e58039ccf482eb131b78f94f9d531": 1,
"4a41cd8740d44bfb9272f4a7e1c19c36": 1,
"71dac3687a544edb8c49fd745fdcc5c3": 1,
"4763cb9a4ff1401dadac458162b432a4": 2,
"3ee26e887c40421192ed0cc8e034a5ef": 1,
"e7528077749c4765b9560036ef75e203": 1,
"5451b5b925254e9599e99600af6050f2": 1,
"577b5858ec084f938d03011a3eb5bc2f": 1,
"6bd2136f4bd547859aa0cc0d09b0a888": 1,
"39f6603490e74f92acf42c8b6eebcec1": 1,
"ffd3db4e96a3402fa89fc280ba15978f": 1,
"c68f40bef7964f7d926aeb8af74fa247": 1,
"7123897720f44079a478907144d54a9c": 1,
"c65d651ffb25409ab2377929871c9bb7": 1,
"56f06eda21734608ab37d9da36f223c0": 2,
"0237853589e34b519e220dfe09c3d803": 1,
"4ce5709d17e641e6a049b84023130b3e": 1,
"1ed61009104e44049c924c00a86575a9": 1,
"6e513e57f8e7403ab97b861cc11df65e": 1,
"77f97233b58e45da954ddd73e9badddc": 1,
"eb8dcaaee1c545d992762eb0f2a0168b": 1,
"0cb2a315060c435b92eb9f2d7adfa851": 1,
"051adb026436453db823946aa593d0ec": 1,
"f09022f8deb442b683877e463932e995": 1,
"6d7b066c92e745a989f67ad87117352f": 2,
"a217f3ee3e1f4f17888aeedbb89a84f2": 1,
"91de38e90be44f0fa38846ea46093027": 2,
"b0d8a53d299d4f298aab5b0e26316fa2": 1,
"83f6f974cd4942349fc33b95ace95e83": 1,
"66182d10b57c44aaacd49fc51e837d38": 1,
"264d032aad504ca6a724263e20226b1b": 1,
"d989cc909dce427b8b14830be48afe6b": 1,
"3ab7742fcbc74d7ab40cf4a4e6544e2f": 1,
"a0c781ace57240c6acfd242e994acfa1": 1,
"b3e1409fc2d54cf895ee52f70daea0ab": 1,
"34b41dc5424d40c9a777c0f1ad933adb": 1,
"cd5ca747b6a34bb7b08913c0abf79ae7": 1,
"1d695d7585fb4ec98fbc1eb28c08097d": 1,
"a4b600c9d46b45c7952ecc155d27727a": 2,
"6723e54f7bea48e9bbf2753b080c0e85": 1,
"78359370176e40f3bd683b5f02adb0dd": 1,
"b3be7e54fff14a988eca58ad02c68ed7": 1,
"081226491a5f45769317dfd6d77452e8": 1,
"d06e73307baa4af6b54a6a71b25c707e": 1,
"1fac7551b4944a1098c372160bc083a0": 1,
"b19e218d65aa41adbff0099900237ead": 1,
"a5e752432a1f403383d15140c2aca294": 1,
"b69769a23e944a3db1ac68dadfbd9990": 1,
"2f25b4a62b2947b8bbc0a04fc923ae5c": 1,
"3be491c9a27f477195530b55a33d3c06": 1,
"a1d48ccdc8774d349738651568481f3d": 1,
"060e312c6c8140e2aeae21b9499e3e7f": 1,
"223151846908451ca53b6df704f0f152": 1,
"95a82cf85de94942b08ed706ad468a33": 1,
"bb5776792a4647ca9e4a805a8dbc70b7": 1,
"a4fceaff25c34b339035f656fe60f1fd": 1,
"eccdcc7bac484af69c572257d8b70707": 1,
"3458a11d495b450fbe81ec1d9beb11c5": 2,
"a051129e790c4250a5a2f8c122f19649": 2,
"4d3294fe8b924d86a38c74fc7eb52b3e": 1,
"e7b9c84345ff4456b69c48f6a60e0253": 1,
"d8dfdc67a3ac47c0bdeb111062bc9845": 1,
"88e5887fa7304fec9fd2f3c946f86792": 1,
"9bcba52cae894a8d9c6341bcae3e0d42": 3,
"dc7bd237e4ed447e8085ecd73747bb7d": 1,
"9e7985a7a7c4466b938a9094ab4fa203": 1,
"274880abc7474fe3b60c84aea4e67586": 4,
"89a35e9105224dbf8da5b4a3f333163f": 1
},
"block_symbol": {
"2c109d00018f4c0f96205ebf64ee0098": 1
},
"project_uuid": "0c46759837334318aa4882d6d37f96fa",
"g_ticket": 7049,
"ticket": 37
}

View File

@@ -38,5 +38,220 @@
"skipped_files": [
"pro_source: no branch_uuid in project meta for 7360e73de5dd428e9f29e10573f2d8ac"
]
}
},
"source_format": "easyeda-pro-legacy",
"source_path": "source/",
"source_documents": [
{
"doc_uuid": "560bd0a5ad4247b99a5038770b717786",
"docType": 1,
"path": "source/560bd0a5ad4247b99a5038770b717786.json",
"size": 2607,
"sha256": "a89f642869ad5b6dfafb559786b88b2ba21d1d4a283d5852063c3f540053910a"
},
{
"doc_uuid": "afd056d94ae848c3a866181a4890394b",
"docType": 1,
"path": "source/afd056d94ae848c3a866181a4890394b.json",
"size": 1908,
"sha256": "425c60b89042564aed24293d6b1f3f3edf91bc10b2a961971d418ef654b5bef5"
},
{
"doc_uuid": "388fe5b93cd749aaae609709b3c665cc",
"docType": 1,
"path": "source/388fe5b93cd749aaae609709b3c665cc.json",
"size": 45844,
"sha256": "edb693d67dc452e26b2962f2a02782008abc1853408de73fd0f61470b652905d"
},
{
"doc_uuid": "8978aa570ee146f8bd69a5fb6c8c60dd",
"docType": 1,
"path": "source/8978aa570ee146f8bd69a5fb6c8c60dd.json",
"size": 30530,
"sha256": "4b34d756f4c43ae391c13c4e089072f9ec4b44bbb098dae313331ecc76beb9ca"
},
{
"doc_uuid": "c25fe0ff97af465ab78960c749c53db1",
"docType": 1,
"path": "source/c25fe0ff97af465ab78960c749c53db1.json",
"size": 52808,
"sha256": "4078193c938073c6101c138c05a1569ff5d59a7c839e291aff6d91a864b326c2"
},
{
"doc_uuid": "81636a72fcce4361b8fd4e9a1a9a4e9b",
"docType": 1,
"path": "source/81636a72fcce4361b8fd4e9a1a9a4e9b.json",
"size": 19318,
"sha256": "c82e0cd4124c36cb07543ecc759cb8d3dc1926d98724f8daf81d4ab00c1792d7"
},
{
"doc_uuid": "ef83fee8093541a5bda0d0e4937b59b9",
"docType": 1,
"path": "source/ef83fee8093541a5bda0d0e4937b59b9.json",
"size": 26094,
"sha256": "1697d4db2ac188cb480ab13736a9fa375918447541fde7d1492dfe70269c32b6"
},
{
"doc_uuid": "759feacd725c47b7bb422003ca237677",
"docType": 1,
"path": "source/759feacd725c47b7bb422003ca237677.json",
"size": 24578,
"sha256": "4189a39c3538dfdf52ce145fabb49993dd2dbe0a449425437e2b8e0aa08db7d0"
},
{
"doc_uuid": "918c7c2b42ce4214b72a92733b1387f0",
"docType": 1,
"path": "source/918c7c2b42ce4214b72a92733b1387f0.json",
"size": 24334,
"sha256": "ddaa09d755057221f583bf91e8a79e15ad82d54dec8b178f210fc9e29a24ee44"
},
{
"doc_uuid": "d14da6d3d80242b0b40f4968d68ba56b",
"docType": 1,
"path": "source/d14da6d3d80242b0b40f4968d68ba56b.json",
"size": 46386,
"sha256": "510eab11d8645f96784b67d0904bef5975d83a3304c19a3341fd2b6c395a30a0"
},
{
"doc_uuid": "0f73056574c0440791bef8566f4ee66f",
"docType": 1,
"path": "source/0f73056574c0440791bef8566f4ee66f.json",
"size": 10669,
"sha256": "a5140d61215f4e51290003553550b95ae799079c8a4b6fa70153ae5439154daf"
},
{
"doc_uuid": "0bc01399ab3146faa20cc538add2623f",
"docType": 1,
"path": "source/0bc01399ab3146faa20cc538add2623f.json",
"size": 8647,
"sha256": "680116ef85ff46cc11eaf2c970b2b471e99685b5dd71fbdc20e29ffd410ec118"
},
{
"doc_uuid": "18527068e7b9496f8ab210bd80badaf8",
"docType": 1,
"path": "source/18527068e7b9496f8ab210bd80badaf8.json",
"size": 49052,
"sha256": "98b3bdeb62ec920f1b383a0d7a0ab305f377c4a7e4f2e8b60d13561c21505e98"
},
{
"doc_uuid": "c21722463acd45a394e68d9065952e3d",
"docType": 1,
"path": "source/c21722463acd45a394e68d9065952e3d.json",
"size": 116026,
"sha256": "a59c84e2245e9bc71255932f1b108434ceb2cd0a458c3f5c061db151795ec6aa"
},
{
"doc_uuid": "63c0af70041349518b4cb52eee44305e",
"docType": 1,
"path": "source/63c0af70041349518b4cb52eee44305e.json",
"size": 25835,
"sha256": "e0e2519e4f09bee493c67ae8f7655a2a8f62443ca7700a4b12e4a37dd5bb3a69"
},
{
"doc_uuid": "6beb4806ff3e497194aa203be71404a4",
"docType": 1,
"path": "source/6beb4806ff3e497194aa203be71404a4.json",
"size": 29251,
"sha256": "a8e44ac4ed97ec2945f912449aae28c3cc393aa755d3490be49b171e57cae336"
},
{
"doc_uuid": "73e72a6798e14da4a7f850412fa8e2aa",
"docType": 1,
"path": "source/73e72a6798e14da4a7f850412fa8e2aa.json",
"size": 50973,
"sha256": "e1ae8dedade3e997cc18eaccbef22a3d76ad0ea59a477c7398d98ce7220986ad"
},
{
"doc_uuid": "ee2b876552f54525babb9f18b84c8412",
"docType": 1,
"path": "source/ee2b876552f54525babb9f18b84c8412.json",
"size": 823,
"sha256": "157f7cbd50c201e7ed00ad64857dbe432382f2a1ac2f5b85ce766f6c1d68c0f8"
},
{
"doc_uuid": "a4d9c80b9ed04fbfa8887614143f69c1",
"docType": 1,
"path": "source/a4d9c80b9ed04fbfa8887614143f69c1.json",
"size": 44032,
"sha256": "b7f97f221ba06028742bc2c5581069d8ba5be3d2b7807f80b7e2a86e72fefe99"
},
{
"doc_uuid": "33158668940f4e6f8fd14bec7c34d622",
"docType": 1,
"path": "source/33158668940f4e6f8fd14bec7c34d622.json",
"size": 9365,
"sha256": "c3c8691ba7b38255eae60b6d1c11353c01789df8b6bc897cf1b84bcf837cd073"
},
{
"doc_uuid": "fa9c85ce30de40c38003ef12b8723134",
"docType": 1,
"path": "source/fa9c85ce30de40c38003ef12b8723134.json",
"size": 41959,
"sha256": "d454a4a938ffcbd52ab62ebda97f7b494d15fe22a9d3cf2636386c78dcc94965"
},
{
"doc_uuid": "c6346fddfbe44e1ca6d7d6b4c797cd81",
"docType": 1,
"path": "source/c6346fddfbe44e1ca6d7d6b4c797cd81.json",
"size": 36524,
"sha256": "13bb231c7d8c1f9bf59a07f9e27eeeb9bca54854e9413ba706b9949007c0fa71"
},
{
"doc_uuid": "60c401439f0242d6b8878d50b7420df7",
"docType": 1,
"path": "source/60c401439f0242d6b8878d50b7420df7.json",
"size": 36153,
"sha256": "7d34efae54fe5667f2dd1a7c13cd28049ef2570fb0e566997d18d6448bdd1b5f"
},
{
"doc_uuid": "12a94c86b6954795a15be0ef9d904ece",
"docType": 1,
"path": "source/12a94c86b6954795a15be0ef9d904ece.json",
"size": 13383,
"sha256": "2bf73d8712dbc904cf081599db13c6d8c93bd7c83891ee36cd4fa9b144d32610"
},
{
"doc_uuid": "617ae0c3ecda4008b528d33a30c09146",
"docType": 1,
"path": "source/617ae0c3ecda4008b528d33a30c09146.json",
"size": 34656,
"sha256": "cf6f067a3227b3111fbf7e5aba962e16b17144f0786568b73b820c7eb4ad4cd9"
},
{
"doc_uuid": "1a7e93d2007948609476b6fced37f663",
"docType": 1,
"path": "source/1a7e93d2007948609476b6fced37f663.json",
"size": 25544,
"sha256": "87a80686f2b538cecd7c4c5627646f585f11caba7ffb74c40d29a20ccdc76179"
},
{
"doc_uuid": "afac947683374ce4a0617e2f378df9e8",
"docType": 1,
"path": "source/afac947683374ce4a0617e2f378df9e8.json",
"size": 13330,
"sha256": "33252f933379357b54467b13908d3d47fab986c9710e8b997ba1a9151aa85e5b"
},
{
"doc_uuid": "87e45b6fd1ab42eda99b95e6beecaa64",
"docType": 1,
"path": "source/87e45b6fd1ab42eda99b95e6beecaa64.json",
"size": 38933,
"sha256": "44b53a3e68f09e112d5a9f3129babd44f15dd48a847511f4429f577696107fa3"
},
{
"doc_uuid": "77ac252964cc4a12a4e0e9fd07851f79",
"docType": 1,
"path": "source/77ac252964cc4a12a4e0e9fd07851f79.json",
"size": 15607,
"sha256": "ebf2284abe4df5ccab1a88bb14829363a4d918c81c5b22c1b80bc6ff145862ad"
},
{
"doc_uuid": "89ef5a826c7f494ab398b791825aa8f0",
"docType": 3,
"path": "source/pcb_89ef5a826c7f494ab398b791825aa8f0.json",
"size": 782,
"sha256": "026d63e79eca3212602dfccdce6cb722b1157ceaf0ab17dcb7ad4d0858b7c971"
}
],
"editor_version": "2.1.40"
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"uuid":"560bd0a5ad4247b99a5038770b717786","created_at":"2023-12-01 14:36:51","creator":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"dataStr":"[\"DOCTYPE\",\"SCH\",\"1.1\"]\n[\"HEAD\",{\"originX\":0,\"originY\":0,\"version\":\"2.1.39.1e0cbcef\",\"maxId\":104}]\n[\"COMPONENT\",\"e1\",\"\",0,0,0,0,{},0]\n[\"FONTSTYLE\",\"st1\",null,null,null,20,null,null,null,null,1,1]\n[\"ATTR\",\"e19\",\"e1\",\"Symbol\",\"560bd0a5ad4247b99a5038770b717786_sheet\",0,0,2506,-116,0,\"st1\",0]\n[\"FONTSTYLE\",\"st2\",null,null,null,null,null,null,null,null,null,null]\n[\"ATTR\",\"e34\",\"e1\",\"Footprint\",\"\",0,0,null,null,0,\"st2\",0]\n[\"ATTR\",\"e3\",\"e1\",\"Company\",\"嘉立创EDA\",0,0,998,30,0,\"st1\",0]\n[\"FONTSTYLE\",\"st3\",null,null,null,15,null,null,null,null,1,0]\n[\"ATTR\",\"e4\",\"e1\",\"Drawed\",\"\",0,0,558,120,0,\"st3\",0]\n[\"ATTR\",\"e5\",\"e1\",\"Reviewed\",\"\",0,0,558,100,0,\"st3\",0]\n[\"FONTSTYLE\",\"st4\",null,null,null,15,null,null,null,null,1,1]\n[\"ATTR\",\"e6\",\"e1\",\"Version\",\"V1.0\",0,0,718,30,0,\"st4\",0]\n[\"ATTR\",\"e7\",\"e1\",\"Page Size\",\"A4\",0,0,800,30,0,\"st4\",0]\n[\"ATTR\",\"e8\",\"e1\",\"@Project Name\",\"立创·泰山派开发板\",0,0,920,100,0,\"st1\",0]\n[\"ATTR\",\"e9\",\"e1\",\"@Page Count\",\"29\",0,0,1102,61,0,\"st4\",0]\n[\"ATTR\",\"e10\",\"e1\",\"@Update Date\",\"2023-12-01\",0,0,1010,180,0,\"st3\",0]\n[\"ATTR\",\"e11\",\"e1\",\"@Create Date\",\"2023-12-01\",0,0,1010,160,0,\"st3\",0]\n[\"ATTR\",\"e12\",\"e1\",\"@Schematic Name\",\"schematic\",0,0,730,170,0,\"st1\",0]\n[\"ATTR\",\"e13\",\"e1\",\"Part Number\",\"\",0,0,1010,140,0,\"st3\",0]\n[\"ATTR\",\"e14\",\"e1\",\"@Page No\",\"1\",0,0,985,61,0,\"st4\",0]\n[\"ATTR\",\"e15\",\"e1\",\"@Page Name\",\"立创·泰山派愿景\",0,0,730,140,0,\"st4\",0]\n[\"FONTSTYLE\",\"st5\",null,null,null,\"10\",null,null,null,null,null,null]\n[\"ATTR\",\"e18\",\"e1\",\"Device\",\"3147b110bcd447c49c6e9be850a52941\",0,0,null,null,0,\"st5\",0]\n[\"OBJ\",\"e87\",\"\",-15,815,1200,819,0,0,\"blob:337b532b50ca29c4a3d0d3c8a183a0b51f33f243bc77843f9f5a6eeb4833c137\",0]","description":"","display_title":"立创·泰山派愿景","docType":1,"modifier":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"project_uuid":"7360e73de5dd428e9f29e10573f2d8ac","schematic_uuid":"6394f41146404ead95ba248444940c6c","sheet_id":35,"ticket":3,"title":"立创·泰山派愿景","updateTime":1701414419,"thumb":"https://image-pro.lceda.cn/pullimages/0ad59617d4144490a454702f051ead9f.webp","guest":false,"writable":false}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"uuid":"afd056d94ae848c3a866181a4890394b","created_at":"2023-12-01 14:36:51","creator":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"dataStr":"[\"DOCTYPE\",\"SCH\",\"1.1\"]\n[\"HEAD\",{\"originX\":0,\"originY\":0,\"version\":\"2.1.39.1e0cbcef\",\"maxId\":120}]\n[\"OBJ\",\"e101\",\"\",10,815,1145,910,0,0,\"blob:1861f0a4e64308e961db12c44385b49127695b46990bb78fa3a92777bfb7c586\",0]\n[\"OBJ\",\"e103\",\"\",10,-90,1149,1535,0,0,\"blob:ffa3c8eb63af65aead1f39bc3470ac4d6c6a5f2fe98dab8d5c3d6e8f66bcbebb\",0]\n[\"OBJ\",\"e105\",\"\",0,-1615,1166,1260,0,0,\"blob:8c90c73fd15a0ce1a09833789aef43d8da4b19aad7f2581e08715f376c80144d\",0]\n[\"OBJ\",\"e107\",\"\",0,-2865,1165,1086,0,0,\"blob:e2d87a4da09ce1ae2d0aead4b6d02d35055efe3a3b7b3fd58d183e53f7922f0e\",0]\n[\"OBJ\",\"e109\",\"\",-5,-3955,1180,840,0,0,\"blob:5cefe8f5df05e95c4f27abb3533795fdd7873411da26b55df51fe84c82aafda0\",0]\n[\"OBJ\",\"e111\",\"\",-30,-4795,1233,985,0,0,\"blob:569bc7e255d26d0b3256827c1f3677592a40738c58b3b3eb5dfbd3da25ee532a\",0]\n[\"OBJ\",\"e113\",\"\",-50,-5780,1255,1251,0,0,\"blob:e02393b31dc68a460c99d067097b833b670d0f6bf1b5062f50b9bbcad53a32b2\",0]\n[\"OBJ\",\"e117\",\"\",-55,-7570,1262,1160,0,0,\"blob:f9775497ecf23a7689451136ff45f366ba1f9ddb862ba708460250f2231cca4d\",0]\n[\"OBJ\",\"e119\",\"\",-55,-7030,1270,551,0,0,\"blob:9016468c5a069f8459a3c9404bc96df7c4bf898aa483132fc157360ee24062cd\",0]","description":"","display_title":"立创·泰山派简介","docType":1,"modifier":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"project_uuid":"7360e73de5dd428e9f29e10573f2d8ac","schematic_uuid":"6394f41146404ead95ba248444940c6c","sheet_id":34,"ticket":3,"title":"立创·泰山派简介","updateTime":1701413723,"thumb":"https://image-pro.lceda.cn/pullimages/efc9af7c5482497889504c012db477cf.webp","guest":false,"writable":false}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"uuid":"ee2b876552f54525babb9f18b84c8412","created_at":"2023-12-01 14:36:52","creator":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"description":"","display_title":"LPDDR4","docType":1,"modifier":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"project_uuid":"7360e73de5dd428e9f29e10573f2d8ac","schematic_uuid":"6394f41146404ead95ba248444940c6c","sheet_id":18,"ticket":5,"title":"lpddr4","updateTime":1730173452,"thumb":"https://image-pro.lceda.cn/pullimages/44e0e07227184d8c8ca26985aa951269.webp","dataStrId":"https://modules.lceda.cn/datastr/1a/65/be/10/90db41cf964da8b0afc65972","iv":"6622440cbbb005885292818a","key":"872a915265d1b696ede0e8dd46453eb01cea77e9a149d75fae79f00aefcc8c1f","guest":false,"writable":false}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,239 @@
{
"project_uuid": "7360e73de5dd428e9f29e10573f2d8ac",
"fetched_at": "2026-04-28T13:56:24.057828+00:00",
"editor_version": "2.1.40",
"boards": [
{
"sch": "6394f41146404ead95ba248444940c6c",
"name": "Board",
"pcb": "89ef5a826c7f494ab398b791825aa8f0"
}
],
"documents": [
{
"doc_uuid": "560bd0a5ad4247b99a5038770b717786",
"docType": 1,
"path": "source/560bd0a5ad4247b99a5038770b717786.json",
"size": 2607,
"sha256": "a89f642869ad5b6dfafb559786b88b2ba21d1d4a283d5852063c3f540053910a"
},
{
"doc_uuid": "afd056d94ae848c3a866181a4890394b",
"docType": 1,
"path": "source/afd056d94ae848c3a866181a4890394b.json",
"size": 1908,
"sha256": "425c60b89042564aed24293d6b1f3f3edf91bc10b2a961971d418ef654b5bef5"
},
{
"doc_uuid": "388fe5b93cd749aaae609709b3c665cc",
"docType": 1,
"path": "source/388fe5b93cd749aaae609709b3c665cc.json",
"size": 45844,
"sha256": "edb693d67dc452e26b2962f2a02782008abc1853408de73fd0f61470b652905d"
},
{
"doc_uuid": "8978aa570ee146f8bd69a5fb6c8c60dd",
"docType": 1,
"path": "source/8978aa570ee146f8bd69a5fb6c8c60dd.json",
"size": 30530,
"sha256": "4b34d756f4c43ae391c13c4e089072f9ec4b44bbb098dae313331ecc76beb9ca"
},
{
"doc_uuid": "c25fe0ff97af465ab78960c749c53db1",
"docType": 1,
"path": "source/c25fe0ff97af465ab78960c749c53db1.json",
"size": 52808,
"sha256": "4078193c938073c6101c138c05a1569ff5d59a7c839e291aff6d91a864b326c2"
},
{
"doc_uuid": "81636a72fcce4361b8fd4e9a1a9a4e9b",
"docType": 1,
"path": "source/81636a72fcce4361b8fd4e9a1a9a4e9b.json",
"size": 19318,
"sha256": "c82e0cd4124c36cb07543ecc759cb8d3dc1926d98724f8daf81d4ab00c1792d7"
},
{
"doc_uuid": "ef83fee8093541a5bda0d0e4937b59b9",
"docType": 1,
"path": "source/ef83fee8093541a5bda0d0e4937b59b9.json",
"size": 26094,
"sha256": "1697d4db2ac188cb480ab13736a9fa375918447541fde7d1492dfe70269c32b6"
},
{
"doc_uuid": "759feacd725c47b7bb422003ca237677",
"docType": 1,
"path": "source/759feacd725c47b7bb422003ca237677.json",
"size": 24578,
"sha256": "4189a39c3538dfdf52ce145fabb49993dd2dbe0a449425437e2b8e0aa08db7d0"
},
{
"doc_uuid": "918c7c2b42ce4214b72a92733b1387f0",
"docType": 1,
"path": "source/918c7c2b42ce4214b72a92733b1387f0.json",
"size": 24334,
"sha256": "ddaa09d755057221f583bf91e8a79e15ad82d54dec8b178f210fc9e29a24ee44"
},
{
"doc_uuid": "d14da6d3d80242b0b40f4968d68ba56b",
"docType": 1,
"path": "source/d14da6d3d80242b0b40f4968d68ba56b.json",
"size": 46386,
"sha256": "510eab11d8645f96784b67d0904bef5975d83a3304c19a3341fd2b6c395a30a0"
},
{
"doc_uuid": "0f73056574c0440791bef8566f4ee66f",
"docType": 1,
"path": "source/0f73056574c0440791bef8566f4ee66f.json",
"size": 10669,
"sha256": "a5140d61215f4e51290003553550b95ae799079c8a4b6fa70153ae5439154daf"
},
{
"doc_uuid": "0bc01399ab3146faa20cc538add2623f",
"docType": 1,
"path": "source/0bc01399ab3146faa20cc538add2623f.json",
"size": 8647,
"sha256": "680116ef85ff46cc11eaf2c970b2b471e99685b5dd71fbdc20e29ffd410ec118"
},
{
"doc_uuid": "18527068e7b9496f8ab210bd80badaf8",
"docType": 1,
"path": "source/18527068e7b9496f8ab210bd80badaf8.json",
"size": 49052,
"sha256": "98b3bdeb62ec920f1b383a0d7a0ab305f377c4a7e4f2e8b60d13561c21505e98"
},
{
"doc_uuid": "c21722463acd45a394e68d9065952e3d",
"docType": 1,
"path": "source/c21722463acd45a394e68d9065952e3d.json",
"size": 116026,
"sha256": "a59c84e2245e9bc71255932f1b108434ceb2cd0a458c3f5c061db151795ec6aa"
},
{
"doc_uuid": "63c0af70041349518b4cb52eee44305e",
"docType": 1,
"path": "source/63c0af70041349518b4cb52eee44305e.json",
"size": 25835,
"sha256": "e0e2519e4f09bee493c67ae8f7655a2a8f62443ca7700a4b12e4a37dd5bb3a69"
},
{
"doc_uuid": "6beb4806ff3e497194aa203be71404a4",
"docType": 1,
"path": "source/6beb4806ff3e497194aa203be71404a4.json",
"size": 29251,
"sha256": "a8e44ac4ed97ec2945f912449aae28c3cc393aa755d3490be49b171e57cae336"
},
{
"doc_uuid": "73e72a6798e14da4a7f850412fa8e2aa",
"docType": 1,
"path": "source/73e72a6798e14da4a7f850412fa8e2aa.json",
"size": 50973,
"sha256": "e1ae8dedade3e997cc18eaccbef22a3d76ad0ea59a477c7398d98ce7220986ad"
},
{
"doc_uuid": "ee2b876552f54525babb9f18b84c8412",
"docType": 1,
"path": "source/ee2b876552f54525babb9f18b84c8412.json",
"size": 823,
"sha256": "157f7cbd50c201e7ed00ad64857dbe432382f2a1ac2f5b85ce766f6c1d68c0f8"
},
{
"doc_uuid": "a4d9c80b9ed04fbfa8887614143f69c1",
"docType": 1,
"path": "source/a4d9c80b9ed04fbfa8887614143f69c1.json",
"size": 44032,
"sha256": "b7f97f221ba06028742bc2c5581069d8ba5be3d2b7807f80b7e2a86e72fefe99"
},
{
"doc_uuid": "33158668940f4e6f8fd14bec7c34d622",
"docType": 1,
"path": "source/33158668940f4e6f8fd14bec7c34d622.json",
"size": 9365,
"sha256": "c3c8691ba7b38255eae60b6d1c11353c01789df8b6bc897cf1b84bcf837cd073"
},
{
"doc_uuid": "fa9c85ce30de40c38003ef12b8723134",
"docType": 1,
"path": "source/fa9c85ce30de40c38003ef12b8723134.json",
"size": 41959,
"sha256": "d454a4a938ffcbd52ab62ebda97f7b494d15fe22a9d3cf2636386c78dcc94965"
},
{
"doc_uuid": "c6346fddfbe44e1ca6d7d6b4c797cd81",
"docType": 1,
"path": "source/c6346fddfbe44e1ca6d7d6b4c797cd81.json",
"size": 36524,
"sha256": "13bb231c7d8c1f9bf59a07f9e27eeeb9bca54854e9413ba706b9949007c0fa71"
},
{
"doc_uuid": "60c401439f0242d6b8878d50b7420df7",
"docType": 1,
"path": "source/60c401439f0242d6b8878d50b7420df7.json",
"size": 36153,
"sha256": "7d34efae54fe5667f2dd1a7c13cd28049ef2570fb0e566997d18d6448bdd1b5f"
},
{
"doc_uuid": "12a94c86b6954795a15be0ef9d904ece",
"docType": 1,
"path": "source/12a94c86b6954795a15be0ef9d904ece.json",
"size": 13383,
"sha256": "2bf73d8712dbc904cf081599db13c6d8c93bd7c83891ee36cd4fa9b144d32610"
},
{
"doc_uuid": "617ae0c3ecda4008b528d33a30c09146",
"docType": 1,
"path": "source/617ae0c3ecda4008b528d33a30c09146.json",
"size": 34656,
"sha256": "cf6f067a3227b3111fbf7e5aba962e16b17144f0786568b73b820c7eb4ad4cd9"
},
{
"doc_uuid": "1a7e93d2007948609476b6fced37f663",
"docType": 1,
"path": "source/1a7e93d2007948609476b6fced37f663.json",
"size": 25544,
"sha256": "87a80686f2b538cecd7c4c5627646f585f11caba7ffb74c40d29a20ccdc76179"
},
{
"doc_uuid": "afac947683374ce4a0617e2f378df9e8",
"docType": 1,
"path": "source/afac947683374ce4a0617e2f378df9e8.json",
"size": 13330,
"sha256": "33252f933379357b54467b13908d3d47fab986c9710e8b997ba1a9151aa85e5b"
},
{
"doc_uuid": "87e45b6fd1ab42eda99b95e6beecaa64",
"docType": 1,
"path": "source/87e45b6fd1ab42eda99b95e6beecaa64.json",
"size": 38933,
"sha256": "44b53a3e68f09e112d5a9f3129babd44f15dd48a847511f4429f577696107fa3"
},
{
"doc_uuid": "77ac252964cc4a12a4e0e9fd07851f79",
"docType": 1,
"path": "source/77ac252964cc4a12a4e0e9fd07851f79.json",
"size": 15607,
"sha256": "ebf2284abe4df5ccab1a88bb14829363a4d918c81c5b22c1b80bc6ff145862ad"
},
{
"doc_uuid": "89ef5a826c7f494ab398b791825aa8f0",
"docType": 3,
"path": "source/pcb_89ef5a826c7f494ab398b791825aa8f0.json",
"size": 782,
"sha256": "026d63e79eca3212602dfccdce6cb722b1157ceaf0ab17dcb7ad4d0858b7c971"
}
],
"structure_summary": {
"boards": 1,
"schematic_containers": 1,
"schematic_sheets": 29,
"pcbs": 1,
"symbols": 299,
"footprints": 524,
"devices": 295,
"coppers": 0,
"textpath": 0,
"blobs": 32
},
"aux": {
"blobs_count": 32
}
}

View File

@@ -0,0 +1 @@
{"uuid":"89ef5a826c7f494ab398b791825aa8f0","created_at":"2023-12-01 14:37:18","creator":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"description":"","display_title":"PCB","docType":3,"modifier":{"uuid":"c644bf6717124cfe9ae4d22a5ba8d83a","username":"eda_nqhjnjnc","nickname":"15211163466_27"},"pcb_id":1,"project_uuid":"7360e73de5dd428e9f29e10573f2d8ac","schematic_uuid":"","ticket":9,"title":"pcb","updateTime":1730173850,"thumb":"https://image-pro.lceda.cn/pullimages/eaf315c5b2e44d788deb56c89cdf8d7f.webp","dataStrId":"https://modules.lceda.cn/datastr/e4/45/5a/0a/cf65489d895b3d213e09a85c","iv":"0a58d2540fa78298ef3701dd","key":"d9762cfaf5bae12b30abd6c5293704980d395bc4689ce80225eefab30ea0efd4","guest":false,"writable":false}

File diff suppressed because it is too large Load Diff

View File

@@ -45,14 +45,17 @@
| 维度 | Pro 2.x 旧版 | Pro 3.x 新版 |
|---|---|---|
| `editorVersion` | "2.1.40" 等 | "3.2.91" / "3.2.127" |
| `editorVersion` | "2.1.30" / "2.1.40" 等 | "3.2.15" / "3.2.69" / "3.2.91" / "3.2.127" |
| `branch_uuid` | **null**(无分支模型) | UUID有 main 分支) |
| 文档定位 | 项目 meta 的 **`boards: [{sch, name, pcb}]`** 直接指向 doc UUID | `/structures` 返回多 document 树 |
| 历史链 | **不存在**(无 `/branches/<B>/histories/<H>` 端点) | 完整 git-style chain本节后续描述 |
| 状态 | **本爬虫暂不支持**HAR 待录 | ✅ 已打通 |
| 实例 | `7360e73d...`立创·泰山派RK3566`0c467598...`(立创·梁山派) | `2507dcb6...`立创·泰山派RK3576`b7784066...`X86电脑主板`ba64bd6f...`ESP-VoCat |
| 文档定位 | 项目 meta 的 **`boards: [{sch, name, pcb}]`** + ticket 端点 manifest | `/structures` 返回多 document 树 |
| 历史链 | **不存在** | 完整 git-style linear chain |
| 文档存储 | **plaintext** dataStr同 Std `["DOCTYPE","SCH","1.1"]\n[HEAD,...]`),按 doc UUID 批量 GET | AES-128-GCM 加密的 EPRO2 增量消息流,按 history 重放 |
| 加密 | 仅组件库symbols/devices走 AES文档本身明文 | 全部 history blob 都加密 |
| 实例 | `7360e73d...`RK3566 / 2.1.40 / 30 docs`0c467598...`(梁山派 / 2.1.30 / 3 docs | `2507dcb6...`RK3576`b7784066...`X86 / 7374 docs`ba64bd6f...`ESP-VoCat / 278 docs |
| 状态 | ✅ 已打通HAR `tmp/prodownload3.har` 反推) | ✅ 已打通 |
| schema source_format | `easyeda-pro-legacy` | `easyeda-pro` |
**判别**:先 GET `/api/v4/projects/<P>`,看 `branch_uuid` 是否非空。`null` 即旧版;记录跳过原因到 `data/state/oshwhub_excluded.jsonl`。**旧版工程的 sch/pcb document UUID 在 `boards[]` 字段里**(每个 board = 一对 sch+pcb但访问端点未知 —— 候选探测:`/api/documents/<doc>`(实测 401需要不同 cookie scope`/api/v4/projects/<P>/snapshots`200 但返回的是 project meta 而非 doc
**判别**:先 GET `/api/v4/projects/<P>`,看 `branch_uuid` 是否非空。`null` 即旧版,走 §2.7 的旧版抓取路径;非空走 §2.1-§2.6 的新版路径。`crawlers/oshwhub/crawler.py:fetch_pro_source()` 是 dispatcher根据 `branch_uuid` 自动分流到 `_fetch_pro_modern()``_fetch_pro_legacy()`
---
@@ -233,6 +236,51 @@ Accept: application/json
chain 只有 1 条就包含整个 project因为只有 1 个 document。
### 2.7 Pro 2.x 旧版抓取(无 branch / 无 history chain
适用于 `branch_uuid: null` 的工程(`editorVersion` 形如 `2.1.40`)。文档以 **EasyEDA Std plaintext dataStr** 形式存储,按 UUID 批量 GET不需要解密 / 解压 / 重放。
#### 流程
```
GET /api/v4/projects/<P> → boards: [{sch, pcb, name}]
GET /api/projects/<P>/ticket?uuid=<P>&g_ticket=-1 → manifest: {schematics, schs, pcbs, coppers, textpath, blobs, symbols, footprints, devices, ...}
POST /api/schematic/lists {uuids:[<sch>]} → 父 schematic 容器,含 sort: [{uuid: <sheet>, ticket}, ...]
POST /api/v2/documents/lists {uuids:[<sheets>], docType:1} → 每个 sheet 的 dataStr 明文
POST /api/v2/documents/lists {uuids:[<pcbs>], docType:3} → 每个 PCB 的 dataStr 明文
POST /api/coppers/search {paths:[<copper_paths>]} → 铺铜数据PCB 增量层)
POST /api/textpath/search {paths:[<textpath_paths>], project_uuid, path} → 字体 / 文字路径
POST /api/v2/resources/search {hash:[<sha256>], project_uuid} → BLOB嵌入图片等
POST /api/v2/components/searchByIds {uuids:[<symbol_uuids>]} → 元件符号定义(含 dataStrId/key/ivAES 加密的 lib 数据;可选)
POST /api/devices/searchByIds {uuids:[<device_uuids>]} → 元件库 metadata
```
#### 必需 headers
与 §2.5 相同(`Editor-Version` / `path: <PROJ_UUID>` / `Cookie`)。
#### 实测数据
| 工程 | editorVersion | sheets | pcbs | symbols | footprints | devices | blobs | coppers | size |
|---|---|---|---|---|---|---|---|---|---|
| 立创·梁山派 | 2.1.30 | 2 | 1 | 78 | 191 | 128 | 1 | 29 | 1.0 MB |
| 立创·泰山派 RK3566 | 2.1.40 | 29 | 1 | 299 | 524 | 295 | 32 | 0 | 0.8 MB |
**关键观察**
- 旧版项目体量比新版小**两个数量级**(梁山派 1 MB vs RK3576 66 MB plain—— 因为没有 history 增量、组件库走单独端点、本身就是当前快照。
- `manifest_ticket['schematics']` ↔ schematic CONTAINER板级"原理图"实体);`manifest_ticket['schs']` ↔ 单个 SHEET一页图纸`boards[].sch` 指向前者,需要 schematic/lists 一步把 sort 拆出 sheet UUIDs。
- 抓 plaintext docs 后,**无需** AES 解密(这点跟 Std 一样)。但 symbols/devices 端点返回的 lib 数据**仍然是 AES 加密的 dataStrId blob**,跟 Pro 3.x 同方案;如需还原 lib 内容需照 §2.3 解密流程。
#### 落盘约定
- `source/ticket.json` — 完整 manifest_ticket保留以备后续 lib 重建)
- `source/<sheet_uuid>.json` — 每张原理图(含 `dataStr` 字段)
- `source/pcb_<pcb_uuid>.json` — 每块 PCB
- `source/coppers.json` / `source/textpath.json` / `source/blobs.json` — 辅助层资源
- `source/manifest.json` — 索引 + structure_summary
实现:`crawlers/oshwhub/crawler.py:_fetch_pro_legacy()`
#### B. 大项目 `泰山派3M (RK3576)`36 documents
| 步骤 | 数值 |
@@ -491,3 +539,4 @@ PY
| 2026-04-24 (rev 1) | 首版:单 history 4 步链 + AES-128-GCM + gzip + EPRO2 消息流40 种 types 覆盖 BOARD 全要素) |
| 2026-04-24 (rev 2) | 加入 `/structures` 枚举、`/projects/branches/histories?...` 批量 chain 端点、完整重放流水线;大项目(泰山派 36 docs / 35 histories / 66 MB实测对他人 public Pro 项目已验证29 条 `/api/v4/` 端点清单 |
| 2026-04-28 (rev 3) | HAR 实测:`/branches/{branch}/histories/{head}` 即返回整条 chain无需走 `?limit=N` 批量端点);落地 `crawlers/oshwhub/crawler.py:fetch_pro_source` 端到端打通5 项目批量抓 EPRO2schema docType 兼容 string 取值 + 增 message_count 字段 |
| 2026-04-28 (rev 4) | HAR `prodownload3.har` 反推 **Pro 2.x 旧版抓取链**`/api/projects/<P>/ticket` + `/api/v2/documents/lists` 批量端点plaintext dataStr+ supplementary coppers/textpath/blobs/components/devices新增 `_fetch_pro_legacy()` + 在 `fetch_pro_source()``branch_uuid` 自动 dispatchschema source_format enum 增 `easyeda-pro-legacy`5/5 Pro 项目3 modern + 2 legacy全部打通 |

71
log.md
View File

@@ -4,6 +4,77 @@
---
## 2026-04-28 22:00 Pro 2.x 旧版工程源抓取链路打通5/5 Pro 项目全部 ✅
**Claude 会话**
承接刚做的 3/5 modern Pro 批量。用户录了第三份 HAR`tmp/prodownload3.har` 103 MB / 178 请求,目标是登录态打开**梁山派** legacy Pro 2.x 项目),让我把 RK3566 / 梁山派两个旧版项目也补上。
### HAR 反推Pro 2.x 用一套完全不同的端点
旧版(`editorVersion: 2.1.x`)没有 git-style branch + history 模型。HAR 里看到的关键端点:
| 端点 | 作用 |
|---|---|
| `GET /api/projects/<P>/ticket?uuid=<P>&g_ticket=-1` | 完整项目 manifestschematics / schs / pcbs / coppers / textpath / blobs / symbols / footprints / devices / block_symbol |
| `POST /api/schematic/lists {uuids:[<sch>]}` | 父 schematic 容器,含 `sort: [{uuid: <sheet>, ticket}]` 即子图 UUIDs |
| `POST /api/v2/documents/lists {uuids:[...], docType:1}` | 抓 schematic 子图(**plaintext** dataStr跟 Std 一样的 `["DOCTYPE","SCH","1.1"]\n[HEAD,...]` 格式) |
| `POST /api/v2/documents/lists {uuids:[...], docType:3}` | 抓 PCB同样 plaintext dataStr |
| `POST /api/coppers/search {paths:[...]}` | 铺铜层数据PCB 上独立分发的增量层) |
| `POST /api/textpath/search {paths, project_uuid, path}` | 字体 / 文字路径(同上) |
| `POST /api/v2/resources/search {hash, project_uuid}` | BLOB嵌入图片 |
| `POST /api/v2/components/searchByIds` / `/api/devices/searchByIds` | 元件库 metadata`dataStrId` 仍走 modules.lceda.cn AES 加密 blob |
**关键差异**:旧版的工程**主体 plaintext**(无加密 / 无 history 重放),只有元件库走 Pro 3.x 的 AES 方案。这反而比 3.x 简单很多。
**判别规则**`/api/v4/projects/<P>` 返回的 `branch_uuid` 是不是 null。null 即旧版。
### 实现
`crawlers/oshwhub/crawler.py` refactor
- `fetch_pro_source()` 拆成 dispatcher先 GET project meta → 检查 `branch_uuid`
- `_fetch_pro_modern()` —— 原 EPRO2 chain 流程,去掉重复的 project meta 调用
- `_fetch_pro_legacy()` —— 新增,按上面 9 步流程拉所有 doc + 辅助层
- `_pro_post_json()` —— POST helper与 GET helper 对称)
落盘约定(旧版):
- `source/ticket.json` —— 完整 manifest保留备 lib 重建)
- `source/<sheet_uuid>.json` —— 每张原理图
- `source/pcb_<pcb_uuid>.json` —— 每块 PCB
- `source/coppers.json` / `textpath.json` / `blobs.json` —— 辅助 PCB 层资源
- `source/manifest.json` —— 索引 + structure_summary
schema`source_format` enum 加 `easyeda-pro-legacy`
### 实测2/2 legacy 项目打通
| 项目 | editor | sheets | pcbs | sym | fp | dev | coppers | textpath | blobs | size |
|---|---|---|---|---|---|---|---|---|---|---|
| 立创·梁山派 | 2.1.30 | 2 | 1 | 78 | 191 | 128 | 29 | 3 | 1 | 1.0 MB |
| 立创·泰山派 RK3566 | 2.1.40 | 29 | 1 | 299 | 524 | 295 | 0 | 0 | 32 | 0.8 MB |
**旧版项目比新版小两个数量级**(梁山派 1 MB vs RK3576 66 MB—— 没有增量 history、组件库走单独端点、本身就是当前快照。
### 5/5 Pro 项目终极汇总
| # | 项目 | source_format | editor | docs | size |
|---|---|---|---|---|---|
| 1 | X86 主板 | easyeda-pro | 3.2.15 | 7374 | 481 MB |
| 2 | 立创·泰山派 RK3566 | easyeda-pro-legacy | 2.1.40 | 30 | 0.8 MB |
| 3 | 立创·梁山派 | easyeda-pro-legacy | 2.1.30 | 3 | 1.0 MB |
| 4 | 220V 桌面电源 | easyeda-pro | 3.2.69 | 771 | 26 MB |
| 5 | ESP-VoCat 喵伴 | easyeda-pro | 3.2.91 | 278 | 7.5 MB |
合计 8456 docs / ~516 MB plain 源数据5/5 端到端打通。
### 下一步
1. EPRO2 → KiCad 转换器(仍是 Forge 投影硬门槛ESP-VoCat 7.5 MB 是不错的小样本起手)
2. 旧版 dataStr → KiCad 复用 Std 转换链(同格式,已有 `easyeda2kicad.py` 支持)
3. 阶梯放量到 50 / 500 项目时做风控压测
---
## 2026-04-28 21:35 Pro 工程源EPRO2批量抓取打通3/5 modern Pro 项目 ✅2/5 legacy 2.x ❌
**Claude 会话**

View File

@@ -1,6 +1,6 @@
# Crawled Projects Index
_自动生成,最近更新 2026-04-28 13:44 UTC_
_自动生成,最近更新 2026-04-28 13:56 UTC_
**当前**15 个项目 · 73 个附件 · 739.1 MB

View File

@@ -92,8 +92,8 @@
},
"source_format": {
"type": "string",
"description": "EDA 工程源格式标记。如 'easyeda-std'u.lceda.cn/ 'easyeda-pro'pro.lceda.cn EPRO2/ 'kicad'。",
"enum": ["easyeda-std", "easyeda-pro", "kicad", "altium", "eagle", "other"]
"description": "EDA 工程源格式标记。easyeda-std (u.lceda.cn) / easyeda-pro (Pro 3.x EPRO2) / easyeda-pro-legacy (Pro 2.x v2/documents/lists) / kicad / altium / eagle.",
"enum": ["easyeda-std", "easyeda-pro", "easyeda-pro-legacy", "kicad", "altium", "eagle", "other"]
},
"source_path": {
"type": "string",