From d4ffec7f18a348278f20dd459a97c3ddbd93ae20 Mon Sep 17 00:00:00 2001 From: admin Date: Tue, 29 Sep 2026 10:52:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=A8=E7=AB=99=E6=94=B9=E7=89=88?= =?UTF-8?q?=E4=B8=BA=E7=A7=91=E6=8A=80=E9=A6=96=E9=A1=B5=E9=A3=8E=E6=A0=BC?= =?UTF-8?q?=EF=BC=8C=E9=87=8D=E6=9E=84=E5=AF=BC=E8=88=AA=E4=B8=8E=E4=BA=A7?= =?UTF-8?q?=E5=93=81=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 品牌更名 Easy Data Collection - 导航重构:前沿技术研究 / 工具开发 / 资源中心 / License / 博客(含下拉菜单) - 新增前沿技术研究聚合页、工具开发产品页与 6 个产品独立介绍页 - License 申请 / 查询下载 / 资源包合并为 License 中心,旧路径保留兼容 - 首页与全站样式升级为科技产品风(Apple/Wise 式) - 博客构建脚本同步更新(新导航 + 新首页) --- README.md | 31 +- blog/build.py | 308 ++++++++-- deploy/DEPLOY.md | 17 +- website/main.py | 85 ++- website/static/about.html | 79 ++- website/static/admin.html | 2 +- website/static/apply.html | 165 ++++-- .../static/blog/2026-08-13-welcome/index.html | 62 +- website/static/blog/index.html | 69 ++- website/static/css/style.css | 561 +++++++++++++----- website/static/home.html | 221 ++++++- website/static/index.html | 103 +++- website/static/js/nav.js | 31 +- website/static/license.html | 134 +++++ website/static/links.html | 64 -- website/static/neural.html | 91 ++- website/static/package.html | 96 ++- website/static/research.html | 176 ++++++ website/static/resources.html | 123 ++++ website/static/status.html | 96 ++- website/static/tool-edc-lite-erp.html | 141 +++++ website/static/tool-engineer-craft.html | 141 +++++ website/static/tool-five-phases.html | 147 +++++ website/static/tool-sequence-diagram.html | 143 +++++ website/static/tool-uni-viewer.html | 143 +++++ website/static/tool-unitouch.html | 129 ++++ website/static/tools.html | 159 +++++ 27 files changed, 2978 insertions(+), 539 deletions(-) create mode 100644 website/static/license.html delete mode 100644 website/static/links.html create mode 100644 website/static/research.html create mode 100644 website/static/resources.html create mode 100644 website/static/tool-edc-lite-erp.html create mode 100644 website/static/tool-engineer-craft.html create mode 100644 website/static/tool-five-phases.html create mode 100644 website/static/tool-sequence-diagram.html create mode 100644 website/static/tool-uni-viewer.html create mode 100644 website/static/tool-unitouch.html create mode 100644 website/static/tools.html diff --git a/README.md b/README.md index 3248b52..1b0d177 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,34 @@ -# Easy Data Collector 聚合站 +# Easy Data Collection 聚合站 -`sincos.cc` 单站架构:博客(首页)+ ResLib(License 申请系统)+ 子页板块。 +`sincos.cc` 单站架构:科技首页 + 前沿技术研究 + 工具开发(产品页)+ License 中心 + 资源中心 + 博客。 + +## 站点结构 + +``` +/ 科技首页(产品矩阵 / 研究 / 最新文章) +/research/ 前沿技术研究聚合页 + /research/neural/ Neural Research(NeuralMix AI) + /research/reslib/ ResLib 资源中心管理器 +/tools/ 工具开发产品页 + /tools/sequence-diagram/ Sequence-Diagram 时序图设计器 + /tools/uni-viewer/ Uni-Viewer 文件预览组件 + /tools/engineer-craft/ Engineer Craft 工程设计平台 + /tools/five-phases-observer/ 五行观察者 · GAP 公理协议 + /tools/unitouch/ UniTouch Interface 工控交互 + /tools/edc-lite-erp/ EDC Lite ERP +/license/ License 中心 + /license/apply 申请 License + /license/status 查询 / 下载 + /license/package 资源包获取 +/resources/ 资源中心(私有服务入口) +/blog/ 博客 +/admin 管理后台 +``` ## 目录 ``` -website/ FastAPI 后端(博客/ResLib/申请/管理后台,端口 8003) +website/ FastAPI 后端(页面路由 / License 申请 / 管理后台,端口 8003) blog/ 博客构建脚本 + 文章(markdown) deploy/ 部署文档 ``` @@ -25,4 +48,6 @@ uvicorn main:app --host 0.0.0.0 --port 8003 `blog/posts/*.md`(front matter: title/date/tags)→ `python -X utf8 blog/build.py` 生成结果输出到 `website/static/`(home.html / about.html / blog/)。 +构建脚本依赖 `markdown`(`pip install markdown`)。 + 部署详见 `deploy/DEPLOY.md`。 diff --git a/blog/build.py b/blog/build.py index 0fe8448..23cbcf4 100644 --- a/blog/build.py +++ b/blog/build.py @@ -10,7 +10,6 @@ tags: 工业软件, ResLib --- """ import re -import sys from datetime import datetime from pathlib import Path @@ -22,26 +21,84 @@ OUT_BLOG = BASE.parent / "website" / "static" / "blog" OUT_HOME = BASE.parent / "website" / "static" / "home.html" OUT_ABOUT = BASE.parent / "website" / "static" / "about.html" -SITE_NAME = "Easy Data Collector" +SITE_NAME = "Easy Data Collection" SEO_NAME = "江北的渔夫的空间" -NAV = [ - ("/", "博客"), - ("/reslib/", "ResLib"), - ("/reslib/apply", "申请 License"), - ("/reslib/status", "查询 / 下载"), - ("/reslib/package", "资源包获取"), - ("/neural/", "Neural Research"), - ("http://124.220.63.9:25000", "Research Digest"), +NAV_ITEMS = [ + { + "key": "research", + "href": "/research/", + "label": "前沿技术研究", + "children": [ + ("http://124.220.63.9:25000", "Research Digest"), + ("/research/neural/", "Neural Research"), + ("/research/reslib/", "ResLib"), + ], + }, + { + "key": "tools", + "href": "/tools/", + "label": "工具开发", + "children": [ + ("/tools/sequence-diagram/", "Sequence-Diagram"), + ("/tools/uni-viewer/", "Uni-Viewer"), + ("/tools/engineer-craft/", "Engineer Craft"), + ("/tools/five-phases-observer/", "The Five Phases Observer"), + ("/tools/unitouch/", "UniTouch Interface"), + ("/tools/edc-lite-erp/", "EDC Lite ERP"), + ], + }, + { + "key": "resources", + "href": "/resources/", + "label": "资源中心", + "children": [], + }, + { + "key": "license", + "href": "/license/", + "label": "License", + "children": [ + ("/license/apply", "申请 License"), + ("/license/status", "查询 / 下载"), + ("/license/package", "资源包获取"), + ], + }, + { + "key": "blog", + "href": "/blog/", + "label": "博客", + "children": [], + }, ] -def page_header(active: str, title: str = "") -> str: +def nav_html(active: str = "") -> str: + parts = [] + for item in NAV_ITEMS: + if not item["children"]: + cls = "nav-link active" if item["key"] == active else "nav-link" + parts.append(f' {item["label"]}') + continue + parent_cls = "nav-link active" if item["key"] == active else "nav-link" + links = "\n".join( + f' {label}' + for href, label in item["children"] + ) + parts.append( + f""" """ + ) + return "\n".join(parts) + + +def page_header(active: str = "", title: str = "") -> str: seo_title = f"{title} - {SEO_NAME}" if title else SEO_NAME - links = "\n".join( - f' {label}' - for href, label in NAV - ) return f""" @@ -49,9 +106,10 @@ def page_header(active: str, title: str = "") -> str: {seo_title} - + + @@ -62,7 +120,7 @@ def page_header(active: str, title: str = "") -> str: {SITE_NAME} @@ -76,12 +134,20 @@ def page_footer() -> str: - """ @@ -125,6 +191,51 @@ def fmt_date(s: str) -> str: return s +PRODUCT_CARDS = """ + +
◷
+ Flutter Desktop +

Sequence-Diagram

+

面向 PLC 流程节拍与相位角设计的时序图设计器,条形 / 圆周双视图。

+ 了解详情 → +
+ +
◉
+ Web Component +

Uni-Viewer

+

纯前端、不出网的文件预览组件,271 个扩展名、47 条预览链路。

+ 了解详情 → +
+ +
⚙
+ Vue 3 · Vite +

Engineer Craft

+

流程工业智能设计平台:31 个工程计算模块、URS 与 AI 审查。

+ 了解详情 → +
+ +
✦
+ GAP 公理协议 +

The Five Phases Observer

+

90 域观测协议与 720 个可证伪锚点,让决策可编译、可证伪。

+ 了解详情 → +
+ +
▦
+ Flutter · MQTT +

UniTouch Interface

+

嵌入式工控机的设备控制软件,替代传统 HMI 的统一工控平台。

+ 了解详情 → +
+ +
▣
+ Electron · MySQL +

EDC Lite ERP

+

轻量资源计划与制造管理系统:物料编码、进销存、扫码称配全链路。

+ 了解详情 → +
""" + + def build(): posts = [parse_post(p) for p in sorted(POSTS_DIR.glob("*.md"), reverse=True)] posts.sort(key=lambda p: p["date"], reverse=True) @@ -144,11 +255,16 @@ def build(): if not cards: cards.append('

暂无文章,敬请期待。

') - blog_list = f"""{page_header("/blog/")} + blog_list = f"""{page_header("blog")} +
+
+

BLOG · 博客

+

工程实践与研究记录

+

工业软件、标准件库、深度学习与工具开发的过程记录。

+
+
-

博客

-

工业软件、标准件库与数字化实践记录。

{''.join(cards)}
@@ -160,10 +276,10 @@ def build(): # ---------- 文章详情页 ---------- for p in posts: tags = "".join(f'{t}' for t in p["tags"]) - html = f"""{page_header(p['slug'], p['title'])} + html = f"""{page_header("blog", p['title'])}
- +

{p['title']}

@@ -175,7 +291,7 @@ def build(): (OUT_BLOG / p["slug"]).mkdir(parents=True, exist_ok=True) (OUT_BLOG / p["slug"] / "index.html").write_text(html, encoding="utf-8") - # ---------- 首页(博客首页) ---------- + # ---------- 首页 ---------- recent = "".join(f""" @@ -185,45 +301,128 @@ def build(): if not recent: recent = '

暂无文章,敬请期待。

' - home = f"""{page_header("/")} + home = f"""{page_header("")}
-

平台

-
- -
▤

ResLib

资源中心管理器 —— Creo 7.0+ 企业级标准零部件管理库,含 LIC 授权体系与在线申请。

-
- -
◈

Neural Research

NeuralMix AI —— 工业混合机智能终点判定引擎,1D-CNN 深度学习评估混合均匀度。

-
- -
⌕

Research Digest

国际顶尖科研热榜 —— 顶刊核心成果聚合与 AI 热度 / 突破度分析,每日自动检索。

-
+
+
+ RESEARCH DIGEST +

国际顶尖科研热榜

+

自动检索国际顶尖期刊与权威机构的最新成果,AI 输出中文摘要、技术突破总结与 0-5 突破度评分。

+
    +
  • 31 个信源、21 个关注领域,每日 06:00 自动检索
  • +
  • 顶刊、上市公司公告、专利动态一屏掌握
  • +
+ +
+
+ ⌕ + 21 个领域 + 每日更新 +
+
+ +
+
+ RESLIB +

资源中心管理器 ResLib

+

面向 Creo 7.0+ 的企业级标准零部件管理库:标准件浏览、3D 预览、搜索过滤、快速装配与 LIC 授权体系。

+
    +
  • OpenGL 实时预览,装配体递归解析
  • +
  • 一键装配与参数定位,MAC 绑定授权
  • +
+ +
+
+ ▤ + Creo 7.0 - 10.0 + 3D 实时预览 +
+
+ +
+
+ NEURAL RESEARCH +

NeuralMix AI 混合终点判断

+

ModbusRTU 高速采集 → Redis 缓冲 → TimescaleDB 存储 → 1D-CNN 实时评估混合均匀度,参数稳定即判定完成。

+
    +
  • 实时 + 静态工艺参数融合建模
  • +
  • 支持 Windows / Ubuntu / NVIDIA Jetson
  • +
+ +
+
+ ◈ + 1D-CNN + 0.15s 采样 +
+
+
+

工具开发

+

每一款工具都来自真实项目 —— 独立研发、私有部署、持续迭代。

+
+
{PRODUCT_CARDS} +
+ +
+
+ +

最新文章

{recent}
- +
+ +
+
+
+
+

License 与资源中心

+

ResLib 授权申请、查询下载与标准件资源包统一入口;私有服务与代码托管在资源中心。

+
+
@@ -231,25 +430,30 @@ def build(): OUT_HOME.write_text(home, encoding="utf-8") # ---------- 关于页 ---------- - about = f"""{page_header("/about/")} + about = f"""{page_header("")} +
+
+

ABOUT

+

关于

+

Easy Data Collection —— 工业软件与数据产品的独立开发实践。

+
+
-

关于

SinCos

-

工业软件方向开发者。

+

工业软件方向开发者,专注流程工业的数字化与智能化实践。

正在做

  • ResLib:资源中心管理器 —— Creo 7.0+ 标准零部件管理库(Pro/TOOLKIT DLL 插件),支持 License 在线申请与审批
  • -
  • Engineer Craft:工程实践与工艺设计平台
  • -
  • Digital Twin:数字孪生平台(three.js + Python + MQTT/EMQX)
  • -
  • Neural Research:神经网络与算法研究
  • -
  • Gitea Project:代码托管与版本管理
  • +
  • Neural Research:NeuralMix AI 混合终点判断与算法研究
  • +
  • 工具开发:Sequence-Diagram、Uni-Viewer、Engineer Craft、UniTouch、EDC Lite ERP 等自研产品
  • +
  • Research Digest:国际顶尖科研热榜与 AI 突破度分析

联系方式

diff --git a/deploy/DEPLOY.md b/deploy/DEPLOY.md index 7cecfe1..b637159 100644 --- a/deploy/DEPLOY.md +++ b/deploy/DEPLOY.md @@ -2,7 +2,7 @@ - 服务器:`124.220.63.9`(1Panel + OpenResty + Python) - 域名:`sincos.cc`(腾讯云备案,已解析 A 记录 → 124.220.63.9) -- 站点形态:单站 FastAPI(:8003),根路径 = 博客首页,其余为子页面 +- 站点形态:单站 FastAPI(:8003),根路径 = 科技首页(产品矩阵 + 研究 + 最新文章),其余为子页面 ## 目录结构 @@ -12,7 +12,7 @@ website/ ← 整个目录上传到服务器 /opt/website ├─ license.py MAC→LIC 算法 ├─ requirements.txt 依赖清单 ├─ run.sh 启动脚本 -├─ static/ 前端(首页/博客/ResLib/申请/查询/资源包/管理后台) +├─ static/ 前端(首页/研究/工具/License/资源中心/博客/管理后台) └─ data/ 运行时数据(自动创建) ├─ requests/*.txt 申请记录(DokuWiki 式) ├─ licenses/*.lic 生成的授权文件 @@ -124,12 +124,15 @@ curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8003/ | 地址 | 预期 | |---|---| -| `https://sincos.cc/` | 博客首页(从数学出发 + 平台卡片 + 最新文章) | +| `https://sincos.cc/` | 科技首页(Hero + 研究平台 + 工具矩阵 + 最新文章) | +| `https://sincos.cc/research/` | 前沿技术研究聚合页 | +| `https://sincos.cc/tools/` | 工具开发产品页(6 个产品独立介绍页) | +| `https://sincos.cc/license/` | License 中心(申请 / 查询下载 / 资源包) | +| `https://sincos.cc/license/apply` | License 申请(MAC 输入) | +| `https://sincos.cc/license/status` | 查询/下载 | +| `https://sincos.cc/license/package` | 资源包获取(仅 approved) | +| `https://sincos.cc/resources/` | 资源中心(私有服务入口) | | `https://sincos.cc/blog/` | 文章列表 | -| `https://sincos.cc/reslib/` | ResLib 产品介绍 | -| `https://sincos.cc/reslib/apply` | License 申请(MAC 输入) | -| `https://sincos.cc/reslib/status` | 查询/下载 | -| `https://sincos.cc/reslib/package` | 资源包获取(仅 approved) | | `https://sincos.cc/admin` | 管理后台(密码 = 第四步设置的) | --- diff --git a/website/main.py b/website/main.py index 7744603..f242e4b 100644 --- a/website/main.py +++ b/website/main.py @@ -279,6 +279,89 @@ def about_page(): return FileResponse(STATIC_DIR / "about.html") +# --------------------------------------------------------------------------- +# 前沿技术研究 +# --------------------------------------------------------------------------- + +@app.get("/research/") +def research_page(): + return FileResponse(STATIC_DIR / "research.html") + + +@app.get("/research/neural/") +def research_neural(): + return FileResponse(STATIC_DIR / "neural.html") + + +@app.get("/research/reslib/") +def research_reslib(): + return FileResponse(STATIC_DIR / "index.html") + + +# --------------------------------------------------------------------------- +# 工具开发 +# --------------------------------------------------------------------------- + +TOOL_PAGES = { + "sequence-diagram": "tool-sequence-diagram.html", + "uni-viewer": "tool-uni-viewer.html", + "engineer-craft": "tool-engineer-craft.html", + "five-phases-observer": "tool-five-phases.html", + "unitouch": "tool-unitouch.html", + "edc-lite-erp": "tool-edc-lite-erp.html", +} + + +@app.get("/tools/") +def tools_page(): + return FileResponse(STATIC_DIR / "tools.html") + + +@app.get("/tools/{slug}/") +def tool_page(slug: str): + filename = TOOL_PAGES.get(slug) + if not filename: + raise HTTPException(404, "页面不存在") + return FileResponse(STATIC_DIR / filename) + + +# --------------------------------------------------------------------------- +# License(申请 / 查询下载 / 资源包) +# --------------------------------------------------------------------------- + +@app.get("/license/") +def license_page(): + return FileResponse(STATIC_DIR / "license.html") + + +@app.get("/license/apply") +def license_apply(): + return FileResponse(STATIC_DIR / "apply.html") + + +@app.get("/license/status") +def license_status(): + return FileResponse(STATIC_DIR / "status.html") + + +@app.get("/license/package") +def license_package(): + return FileResponse(STATIC_DIR / "package.html") + + +# --------------------------------------------------------------------------- +# 资源中心 +# --------------------------------------------------------------------------- + +@app.get("/resources/") +def resources_page(): + return FileResponse(STATIC_DIR / "resources.html") + + +# --------------------------------------------------------------------------- +# 兼容旧路径 +# --------------------------------------------------------------------------- + @app.get("/neural/") def neural_page(): return FileResponse(STATIC_DIR / "neural.html") @@ -286,7 +369,7 @@ def neural_page(): @app.get("/links.html") def links_page(): - return FileResponse(STATIC_DIR / "links.html") + return FileResponse(STATIC_DIR / "resources.html") @app.get("/reslib/") diff --git a/website/static/about.html b/website/static/about.html index 83b1ea4..fe72bb2 100644 --- a/website/static/about.html +++ b/website/static/about.html @@ -5,50 +5,81 @@ 江北的渔夫的空间 - + +
+
+
+

ABOUT

+

关于

+

Easy Data Collection —— 工业软件与数据产品的独立开发实践。

+
+
-

关于

SinCos

-

工业软件方向开发者。

+

工业软件方向开发者,专注流程工业的数字化与智能化实践。

正在做

  • ResLib:资源中心管理器 —— Creo 7.0+ 标准零部件管理库(Pro/TOOLKIT DLL 插件),支持 License 在线申请与审批
  • -
  • Engineer Craft:工程实践与工艺设计平台
  • -
  • Digital Twin:数字孪生平台(three.js + Python + MQTT/EMQX)
  • -
  • Neural Research:神经网络与算法研究
  • -
  • Gitea Project:代码托管与版本管理
  • +
  • Neural Research:NeuralMix AI 混合终点判断与算法研究
  • +
  • 工具开发:Sequence-Diagram、Uni-Viewer、Engineer Craft、UniTouch、EDC Lite ERP 等自研产品
  • +
  • Research Digest:国际顶尖科研热榜与 AI 突破度分析

联系方式

@@ -57,11 +88,19 @@ - \ No newline at end of file diff --git a/website/static/admin.html b/website/static/admin.html index a6d7d1b..2aed569 100644 --- a/website/static/admin.html +++ b/website/static/admin.html @@ -46,7 +46,7 @@ ResLib License 管理后台
diff --git a/website/static/apply.html b/website/static/apply.html index fdfceed..c5ed519 100644 --- a/website/static/apply.html +++ b/website/static/apply.html @@ -15,78 +15,119 @@ -
-
-

申请 License

-

提交后我们会进行人工审核,审核通过后凭申请编号下载授权文件。

- -
-
- - -

如何获取:cmd 运行 getmac /v,取"物理地址"列(12 位十六进制)。

-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
- - -
-
-
- - -
- -
+
+
+
+

LICENSE · 申请

+

申请 License

+

提交后我们会进行人工审核,审核通过后凭申请编号下载授权文件。

-
+
+ +
+
+
+
+ + +

如何获取:cmd 运行 getmac /v,取"物理地址"列(12 位十六进制)。

+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+ +
+
+

已有申请编号?直接前往 查询 / 下载。

+
+
@@ -122,7 +163,7 @@ if (resp.ok) { show(true, "申请已提交成功!
申请编号:" + data.id + "
" + - "请妥善保存编号,审核通过后凭编号到 查询 / 下载 页面获取授权文件。"); + "请妥善保存编号,审核通过后凭编号到 查询 / 下载 页面获取授权文件。"); } else { show(false, "提交失败:" + (data.detail || "未知错误")); } diff --git a/website/static/blog/2026-08-13-welcome/index.html b/website/static/blog/2026-08-13-welcome/index.html index 49a18c5..71c3788 100644 --- a/website/static/blog/2026-08-13-welcome/index.html +++ b/website/static/blog/2026-08-13-welcome/index.html @@ -5,26 +5,52 @@ 博客开张 - 江北的渔夫的空间 - + +