feat: 全站改版为科技首页风格,重构导航与产品页面

- 品牌更名 Easy Data Collection
- 导航重构:前沿技术研究 / 工具开发 / 资源中心 / License / 博客(含下拉菜单)
- 新增前沿技术研究聚合页、工具开发产品页与 6 个产品独立介绍页
- License 申请 / 查询下载 / 资源包合并为 License 中心,旧路径保留兼容
- 首页与全站样式升级为科技产品风(Apple/Wise 式)
- 博客构建脚本同步更新(新导航 + 新首页)
This commit is contained in:
2026-09-29 10:52:30 +08:00
parent 7f4dd2f682
commit d4ffec7f18
27 changed files with 2978 additions and 539 deletions
+28 -3
View File
@@ -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`。
+254 -50
View File
@@ -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"),
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:
seo_title = f"{title} - {SEO_NAME}" if title else SEO_NAME
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' <a class="{cls}" href="{item["href"]}">{item["label"]}</a>')
continue
parent_cls = "nav-link active" if item["key"] == active else "nav-link"
links = "\n".join(
f' <a href="{href}"{" class=active" if href == active else ""}>{label}</a>'
for href, label in NAV
f' <a href="{href}">{label}</a>'
for href, label in item["children"]
)
parts.append(
f""" <div class="nav-item has-dropdown">
<a class="{parent_cls}" href="{item['href']}">{item['label']}</a>
<button class="nav-caret" type="button" aria-label="展开{item['label']}">▾</button>
<div class="dropdown">
{links}
</div>
</div>"""
)
return "\n".join(parts)
def page_header(active: str = "", title: str = "") -> str:
seo_title = f"{title} - {SEO_NAME}" if title else SEO_NAME
return f"""<!DOCTYPE html>
<html lang="zh-CN">
<head>
@@ -49,9 +106,10 @@ def page_header(active: str, title: str = "") -> str:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{seo_title}</title>
<meta name="description" content="{SEO_NAME} —— 工业软件、标准件库与数字化实践分享">
<meta name="keywords" content="{SEO_NAME}, Easy Data Collector, ResLib, 资源中心管理器, Creo, 标准零部件库, 数字孪生">
<meta name="keywords" content="{SEO_NAME}, {SITE_NAME}, ResLib, 资源中心管理器, Creo, 标准零部件库, 数字孪生, 深度学习">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
@@ -62,7 +120,7 @@ def page_header(active: str, title: str = "") -> str:
<span class="brand-name">{SITE_NAME}</span>
</a>
<nav class="main-nav" id="mainNav">
{links}
{nav_html(active)}
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
@@ -76,12 +134,20 @@ def page_footer() -> str:
<footer class="site-footer">
<div class="container footer-inner">
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>{SITE_NAME}</span>
</div>
<span>Copyright &copy; 2026 {SITE_NAME}. All rights reserved.</span>
<span><a href="/links.html">内部资源</a> · <a href="/admin">管理页面</a> · <a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a></span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
<script src="/static/js/nav.js"></script>
</body>
</html>"""
@@ -125,6 +191,51 @@ def fmt_date(s: str) -> str:
return s
PRODUCT_CARDS = """
<a class="product-card" href="/tools/sequence-diagram/">
<div class="product-icon" style="--v1:#7a3df5;--v2:#22c8ff">◷</div>
<span class="product-meta">Flutter Desktop</span>
<h3>Sequence-Diagram</h3>
<p>面向 PLC 流程节拍与相位角设计的时序图设计器,条形 / 圆周双视图。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/uni-viewer/">
<div class="product-icon" style="--v1:#0a6cff;--v2:#46d1ff">◉</div>
<span class="product-meta">Web Component</span>
<h3>Uni-Viewer</h3>
<p>纯前端、不出网的文件预览组件,271 个扩展名、47 条预览链路。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/engineer-craft/">
<div class="product-icon" style="--v1:#0a9e6e;--v2:#7ad9a8">⚙</div>
<span class="product-meta">Vue 3 · Vite</span>
<h3>Engineer Craft</h3>
<p>流程工业智能设计平台:31 个工程计算模块、URS 与 AI 审查。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/five-phases-observer/">
<div class="product-icon" style="--v1:#b8860b;--v2:#ffd166">✦</div>
<span class="product-meta">GAP 公理协议</span>
<h3>The Five Phases Observer</h3>
<p>90 域观测协议与 720 个可证伪锚点,让决策可编译、可证伪。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/unitouch/">
<div class="product-icon" style="--v1:#e05252;--v2:#ff9a62">▦</div>
<span class="product-meta">Flutter · MQTT</span>
<h3>UniTouch Interface</h3>
<p>嵌入式工控机的设备控制软件,替代传统 HMI 的统一工控平台。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/edc-lite-erp/">
<div class="product-icon" style="--v1:#0f2f6b;--v2:#2a6df5">▣</div>
<span class="product-meta">Electron · MySQL</span>
<h3>EDC Lite ERP</h3>
<p>轻量资源计划与制造管理系统:物料编码、进销存、扫码称配全链路。</p>
<span class="product-link">了解详情 →</span>
</a>"""
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('<p class="section-desc">暂无文章,敬请期待。</p>')
blog_list = f"""{page_header("/blog/")}
blog_list = f"""{page_header("blog")}
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">BLOG · 博客</p>
<h1>工程实践与研究记录</h1>
<p class="page-hero-sub">工业软件、标准件库、深度学习与工具开发的过程记录。</p>
</div>
</section>
<section class="section">
<div class="container">
<h2 class="section-title">博客</h2>
<p class="section-desc">工业软件、标准件库与数字化实践记录。</p>
<div class="post-list">
{''.join(cards)}
</div>
@@ -160,10 +276,10 @@ def build():
# ---------- 文章详情页 ----------
for p in posts:
tags = "".join(f'<span class="tag">{t}</span>' for t in p["tags"])
html = f"""{page_header(p['slug'], p['title'])}
html = f"""{page_header("blog", p['title'])}
<section class="section">
<div class="container narrow">
<nav class="breadcrumb"><a href="/">博客</a> / <a href="/blog/">文章列表</a></nav>
<nav class="breadcrumb"><a href="/">首页</a> / <a href="/blog/">博客</a></nav>
<h2 class="section-title">{p['title']}</h2>
<div class="post-meta"><span class="post-date">{fmt_date(p['date'])}</span>{tags}</div>
<article class="article">
@@ -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"""
<a class="post-card" href="/blog/{p['slug']}/">
<div class="post-meta"><span class="post-date">{fmt_date(p['date'])}</span></div>
@@ -185,45 +301,128 @@ def build():
if not recent:
recent = '<p class="section-desc">暂无文章,敬请期待。</p>'
home = f"""{page_header("/")}
home = f"""{page_header("")}
<section class="hero">
<div class="hero-euler" aria-hidden="true">e<sup>iπ</sup> + 1 = 0</div>
<div class="container">
<p class="hero-eyebrow">INDUSTRIAL SOFTWARE INTEGRATION · STANDARDIZED MANAGEMENT · SKU REDUCTION · NEURAL NETWORK PRACTICE</p>
<h1>数字化和人工智能</h1>
<p class="hero-sub">工业软件集成 · 标准化管理 · SKU 降低 · 神经网络实践等 —— 基于 LLM 的流程工业技术研究和探索</p>
<p class="hero-eyebrow">EASY DATA COLLECTION · SINCOS.CC</p>
<h1>让工程与数据,<br>更简单</h1>
<p class="hero-sub">工业软件集成 · 标准化管理 · 深度学习实践 —— 从标准件库、科研热榜到自研工具集,把想法持续做成可用的产品。</p>
<div class="hero-actions">
<a href="/blog/" class="btn btn-light">全部文章</a>
<a href="/reslib/" class="btn btn-outline-light">ResLib 产品</a>
<a href="/tools/" class="btn btn-light">探索工具开发</a>
<a href="/research/" class="btn btn-outline-light">前沿技术研究</a>
</div>
<div class="hero-stats">
<div class="hero-stat"><b>3</b><span>研究平台</span></div>
<div class="hero-stat"><b>6</b><span>自研工具</span></div>
<div class="hero-stat"><b>100%</b><span>私有化部署</span></div>
<div class="hero-stat"><b>Creo · Web · Edge</b><span>多端形态</span></div>
</div>
</div>
</section>
<section class="section">
<div class="container">
<h2 class="section-title">平台</h2>
<div class="grid">
<a class="card card-link" href="/reslib/">
<div class="icon">▤</div><h3>ResLib</h3><p>资源中心管理器 —— Creo 7.0+ 企业级标准零部件管理库,含 LIC 授权体系与在线申请。</p>
</a>
<a class="card card-link" href="/neural/">
<div class="icon">◈</div><h3>Neural Research</h3><p>NeuralMix AI —— 工业混合机智能终点判定引擎,1D-CNN 深度学习评估混合均匀度。</p>
</a>
<a class="card card-link" href="http://124.220.63.9:25000">
<div class="icon">⌕</div><h3>Research Digest</h3><p>国际顶尖科研热榜 —— 顶刊核心成果聚合与 AI 热度 / 突破度分析,每日自动检索。</p>
</a>
<div class="feature" style="padding-top: 0;">
<div class="feature-copy">
<span class="feature-tag">RESEARCH DIGEST</span>
<h2>国际顶尖科研热榜</h2>
<p>自动检索国际顶尖期刊与权威机构的最新成果,AI 输出中文摘要、技术突破总结与 0-5 突破度评分。</p>
<ul class="feature-list">
<li>31 个信源、21 个关注领域,每日 06:00 自动检索</li>
<li>顶刊、上市公司公告、专利动态一屏掌握</li>
</ul>
<div class="feature-actions">
<a href="http://124.220.63.9:25000" class="btn btn-primary">访问热榜</a>
</div>
</div>
<div class="feature-visual" style="--v1:#0a6cff;--v2:#22c8ff">
<span class="visual-glyph">⌕</span>
<span class="visual-chip chip-a">21 个领域</span>
<span class="visual-chip chip-b">每日更新</span>
</div>
</div>
<div class="feature reverse">
<div class="feature-copy">
<span class="feature-tag">RESLIB</span>
<h2>资源中心管理器 ResLib</h2>
<p>面向 Creo 7.0+ 的企业级标准零部件管理库:标准件浏览、3D 预览、搜索过滤、快速装配与 LIC 授权体系。</p>
<ul class="feature-list">
<li>OpenGL 实时预览,装配体递归解析</li>
<li>一键装配与参数定位,MAC 绑定授权</li>
</ul>
<div class="feature-actions">
<a href="/research/reslib/" class="btn btn-primary">了解 ResLib</a>
<a href="/license/" class="btn btn-ghost">License 申请</a>
</div>
</div>
<div class="feature-visual" style="--v1:#007a5e;--v2:#22c8ff">
<span class="visual-glyph">▤</span>
<span class="visual-chip chip-a">Creo 7.0 - 10.0</span>
<span class="visual-chip chip-b">3D 实时预览</span>
</div>
</div>
<div class="feature">
<div class="feature-copy">
<span class="feature-tag">NEURAL RESEARCH</span>
<h2>NeuralMix AI 混合终点判断</h2>
<p>ModbusRTU 高速采集 → Redis 缓冲 → TimescaleDB 存储 → 1D-CNN 实时评估混合均匀度,参数稳定即判定完成。</p>
<ul class="feature-list">
<li>实时 + 静态工艺参数融合建模</li>
<li>支持 Windows / Ubuntu / NVIDIA Jetson</li>
</ul>
<div class="feature-actions">
<a href="/research/neural/" class="btn btn-primary">了解 NeuralMix</a>
</div>
</div>
<div class="feature-visual" style="--v1:#5b3df5;--v2:#22c8ff">
<span class="visual-glyph">◈</span>
<span class="visual-chip chip-a">1D-CNN</span>
<span class="visual-chip chip-b">0.15s 采样</span>
</div>
</div>
</div>
</section>
<section class="section section-alt">
<div class="container">
<div class="section-head center">
<h2 class="section-title">工具开发</h2>
<p class="section-desc">每一款工具都来自真实项目 —— 独立研发、私有部署、持续迭代。</p>
</div>
<div class="product-grid">{PRODUCT_CARDS}
</div>
<div class="text-center mt-32">
<a href="/tools/" class="btn btn-primary">查看全部工具</a>
</div>
</div>
</section>
<section class="section">
<div class="container">
<h2 class="section-title">最新文章</h2>
<div class="post-list">
{recent}
</div>
<div style="text-align:center; margin-top: 30px;">
<a href="/blog/" class="btn btn-primary">查看全部文章</a>
<div class="text-center mt-32">
<a href="/blog/" class="btn btn-ghost">查看全部文章</a>
</div>
</div>
</section>
<section class="section section-alt">
<div class="container">
<div class="cta-band">
<div>
<h2>License 与资源中心</h2>
<p>ResLib 授权申请、查询下载与标准件资源包统一入口;私有服务与代码托管在资源中心。</p>
</div>
<div class="hero-actions">
<a href="/license/" class="btn btn-light">License 中心</a>
<a href="/resources/" class="btn btn-outline-light">资源中心</a>
</div>
</div>
</div>
</section>
@@ -231,25 +430,30 @@ def build():
OUT_HOME.write_text(home, encoding="utf-8")
# ---------- 关于页 ----------
about = f"""{page_header("/about/")}
about = f"""{page_header("")}
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">ABOUT</p>
<h1>关于</h1>
<p class="page-hero-sub">Easy Data Collection —— 工业软件与数据产品的独立开发实践。</p>
</div>
</section>
<section class="section">
<div class="container narrow">
<h2 class="section-title">关于</h2>
<div class="article">
<h3>SinCos</h3>
<p>工业软件方向开发者。</p>
<p>工业软件方向开发者,专注流程工业的数字化与智能化实践。</p>
<h3>正在做</h3>
<ul>
<li><b>ResLib</b>:资源中心管理器 —— Creo 7.0+ 标准零部件管理库(Pro/TOOLKIT DLL 插件),支持 License 在线申请与审批</li>
<li><b>Engineer Craft</b>:工程实践与工艺设计平台</li>
<li><b>Digital Twin</b>:数字孪生平台(three.js + Python + MQTT/EMQX)</li>
<li><b>Neural Research</b>:神经网络与算法研究</li>
<li><b>Gitea Project</b>:代码托管与版本管理</li>
<li><b>Neural Research</b>:NeuralMix AI 混合终点判断与算法研究</li>
<li><b>工具开发</b>:Sequence-Diagram、Uni-Viewer、Engineer Craft、UniTouch、EDC Lite ERP 等自研产品</li>
<li><b>Research Digest</b>:国际顶尖科研热榜与 AI 突破度分析</li>
</ul>
<h3>联系方式</h3>
<ul>
<li>博客:<a href="/">sincos.cc</a></li>
<li>License 申请:<a href="/reslib/apply">/reslib/apply</a></li>
<li>License 申请:<a href="/license/apply">/license/apply</a></li>
</ul>
</div>
</div>
+10 -7
View File
@@ -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` | 管理后台(密码 = 第四步设置的) |
---
+84 -1
View File
@@ -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/")
+58 -19
View File
@@ -5,50 +5,81 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>江北的渔夫的空间</title>
<meta name="description" content="江北的渔夫的空间 —— 工业软件、标准件库与数字化实践分享">
<meta name="keywords" content="江北的渔夫的空间, Easy Data Collector, ResLib, 资源中心管理器, Creo, 标准零部件库, 数字孪生">
<meta name="keywords" content="江北的渔夫的空间, Easy Data Collection, ResLib, 资源中心管理器, Creo, 标准零部件库, 数字孪生, 深度学习">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collector">
<span class="brand-name">Easy Data Collector</span>
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<a href="/">博客</a>
<a href="/reslib/">ResLib</a>
<a href="/reslib/apply">申请 License</a>
<a href="/reslib/status">查询 / 下载</a>
<a href="/reslib/package">资源包获取</a>
<a href="/neural/">Neural Research</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">ABOUT</p>
<h1>关于</h1>
<p class="page-hero-sub">Easy Data Collection —— 工业软件与数据产品的独立开发实践。</p>
</div>
</section>
<section class="section">
<div class="container narrow">
<h2 class="section-title">关于</h2>
<div class="article">
<h3>SinCos</h3>
<p>工业软件方向开发者。</p>
<p>工业软件方向开发者,专注流程工业的数字化与智能化实践。</p>
<h3>正在做</h3>
<ul>
<li><b>ResLib</b>:资源中心管理器 —— Creo 7.0+ 标准零部件管理库(Pro/TOOLKIT DLL 插件),支持 License 在线申请与审批</li>
<li><b>Engineer Craft</b>:工程实践与工艺设计平台</li>
<li><b>Digital Twin</b>:数字孪生平台(three.js + Python + MQTT/EMQX)</li>
<li><b>Neural Research</b>:神经网络与算法研究</li>
<li><b>Gitea Project</b>:代码托管与版本管理</li>
<li><b>Neural Research</b>:NeuralMix AI 混合终点判断与算法研究</li>
<li><b>工具开发</b>:Sequence-Diagram、Uni-Viewer、Engineer Craft、UniTouch、EDC Lite ERP 等自研产品</li>
<li><b>Research Digest</b>:国际顶尖科研热榜与 AI 突破度分析</li>
</ul>
<h3>联系方式</h3>
<ul>
<li>博客:<a href="/">sincos.cc</a></li>
<li>License 申请:<a href="/reslib/apply">/reslib/apply</a></li>
<li>License 申请:<a href="/license/apply">/license/apply</a></li>
</ul>
</div>
</div>
@@ -57,11 +88,19 @@
<footer class="site-footer">
<div class="container footer-inner">
<span>Copyright &copy; 2026 Easy Data Collector. All rights reserved.</span>
<span><a href="/links.html">内部资源</a> · <a href="/admin">管理页面</a> · <a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a></span>
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
<script src="/static/js/nav.js"></script>
</body>
</html>
+1 -1
View File
@@ -46,7 +46,7 @@
<span class="brand-name">ResLib License 管理后台</span>
</a>
<div>
<a href="/reslib/" class="btn btn-ghost btn-sm" style="margin-right:8px;">前台</a>
<a href="/license/" class="btn btn-ghost btn-sm" style="margin-right:8px;">License 中心</a>
<a href="/admin/logout" class="btn btn-danger btn-sm">退出</a>
</div>
</div>
+58 -17
View File
@@ -15,28 +15,58 @@
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collector">
<span class="brand-name">Easy Data Collector</span>
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav">
<a href="/blog/">博客</a>
<a href="/reslib/">ResLib</a>
<a href="/reslib/apply" class="active">申请 License</a>
<a href="/reslib/status">查询 / 下载</a>
<a href="/reslib/package">资源包获取</a>
<a href="/neural/">Neural Research</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a class="active" href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main class="section">
<div class="container narrow">
<h2 class="section-title">申请 License</h2>
<p class="section-desc">提交后我们会进行人工审核,审核通过后凭申请编号下载授权文件。</p>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">LICENSE · 申请</p>
<h1>申请 License</h1>
<p class="page-hero-sub">提交后我们会进行人工审核,审核通过后凭申请编号下载授权文件。</p>
</div>
</section>
<section class="section" style="padding-top: 8px;">
<div class="container narrow">
<div class="form-card">
<div class="form-group">
<label for="mac">本机 MAC 地址 *</label>
@@ -80,13 +110,24 @@
<button type="button" id="submit" class="btn btn-primary btn-block">提交申请</button>
<div id="result"></div>
</div>
<p class="form-tip text-soft">已有申请编号?直接前往 <a href="/license/status">查询 / 下载</a>。</p>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<span>Copyright &copy; 2026 SinCos. All rights reserved.</span>
<span><a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a></span>
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
@@ -122,7 +163,7 @@
if (resp.ok) {
show(true,
"申请已提交成功!<br><b>申请编号:<span class='mono'>" + data.id + "</span></b><br>" +
"请妥善保存编号,审核通过后凭编号到 <a href='/reslib/status'>查询 / 下载</a> 页面获取授权文件。");
"请妥善保存编号,审核通过后凭编号到 <a href='/license/status'>查询 / 下载</a> 页面获取授权文件。");
} else {
show(false, "提交失败:" + (data.detail || "未知错误"));
}
@@ -5,26 +5,52 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>博客开张 - 江北的渔夫的空间</title>
<meta name="description" content="江北的渔夫的空间 —— 工业软件、标准件库与数字化实践分享">
<meta name="keywords" content="江北的渔夫的空间, Easy Data Collector, ResLib, 资源中心管理器, Creo, 标准零部件库, 数字孪生">
<meta name="keywords" content="江北的渔夫的空间, Easy Data Collection, ResLib, 资源中心管理器, Creo, 标准零部件库, 数字孪生, 深度学习">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collector">
<span class="brand-name">Easy Data Collector</span>
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<a href="/">博客</a>
<a href="/reslib/">ResLib</a>
<a href="/reslib/apply">申请 License</a>
<a href="/reslib/status">查询 / 下载</a>
<a href="/reslib/package">资源包获取</a>
<a href="/neural/">Neural Research</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link active" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
@@ -33,7 +59,7 @@
<main>
<section class="section">
<div class="container narrow">
<nav class="breadcrumb"><a href="/">博客</a> / <a href="/blog/">文章列表</a></nav>
<nav class="breadcrumb"><a href="/">首页</a> / <a href="/blog/">博客</a></nav>
<h2 class="section-title">博客开张</h2>
<div class="post-meta"><span class="post-date">2026年08月13日</span><span class="tag">公告</span><span class="tag">ResLib</span><span class="tag">数字孪生</span></div>
<article class="article">
@@ -53,11 +79,19 @@
<footer class="site-footer">
<div class="container footer-inner">
<span>Copyright &copy; 2026 Easy Data Collector. All rights reserved.</span>
<span><a href="/links.html">内部资源</a> · <a href="/admin">管理页面</a> · <a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a></span>
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
<script src="/static/js/nav.js"></script>
</body>
</html>
+53 -14
View File
@@ -5,36 +5,67 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>江北的渔夫的空间</title>
<meta name="description" content="江北的渔夫的空间 —— 工业软件、标准件库与数字化实践分享">
<meta name="keywords" content="江北的渔夫的空间, Easy Data Collector, ResLib, 资源中心管理器, Creo, 标准零部件库, 数字孪生">
<meta name="keywords" content="江北的渔夫的空间, Easy Data Collection, ResLib, 资源中心管理器, Creo, 标准零部件库, 数字孪生, 深度学习">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collector">
<span class="brand-name">Easy Data Collector</span>
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<a href="/">博客</a>
<a href="/reslib/">ResLib</a>
<a href="/reslib/apply">申请 License</a>
<a href="/reslib/status">查询 / 下载</a>
<a href="/reslib/package">资源包获取</a>
<a href="/neural/">Neural Research</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link active" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">BLOG · 博客</p>
<h1>工程实践与研究记录</h1>
<p class="page-hero-sub">工业软件、标准件库、深度学习与工具开发的过程记录。</p>
</div>
</section>
<section class="section">
<div class="container">
<h2 class="section-title">博客</h2>
<p class="section-desc">工业软件、标准件库与数字化实践记录。</p>
<div class="post-list">
<a class="post-card" href="/blog/2026-08-13-welcome/">
@@ -49,11 +80,19 @@
<footer class="site-footer">
<div class="container footer-inner">
<span>Copyright &copy; 2026 Easy Data Collector. All rights reserved.</span>
<span><a href="/links.html">内部资源</a> · <a href="/admin">管理页面</a> · <a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a></span>
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
<script src="/static/js/nav.js"></script>
</body>
</html>
+399 -154
View File
@@ -1,176 +1,405 @@
:root {
--blue: #005eb8;
--blue-dark: #00427f;
--blue-light: #0a7bd8;
--ink: #1c2b3a;
--ink-light: #3d5a75;
--bg-soft: #f4f8fd;
--line: #e3ecf5;
--danger: #c0392b;
--ok: #1e8449;
--radius: 10px;
--brand: #0a6cff;
--brand-dark: #0047b3;
--brand-light: #4d9bff;
--cyan: #22c8ff;
--ink: #0b1526;
--ink-2: #44546a;
--ink-3: #7b8aa3;
--bg: #ffffff;
--bg-soft: #f5f7fb;
--bg-dark: #050b18;
--line: #e6ebf2;
--line-dark: rgba(255, 255, 255, 0.10);
--danger: #d64545;
--ok: #178f5f;
--radius: 16px;
--radius-sm: 10px;
--shadow: 0 18px 50px rgba(10, 35, 80, 0.10);
--shadow-lg: 0 30px 80px rgba(10, 35, 80, 0.16);
--grad: linear-gradient(120deg, #0a6cff 0%, #22c8ff 100%);
--grad-dark: linear-gradient(160deg, #071022 0%, #0b2350 60%, #0a3a7d 100%);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
font-family: "Segoe UI", "Microsoft YaHei", "PingFang SC", sans-serif;
font-family: -apple-system, BlinkMacSystemFont, "SF Pro SC", "Segoe UI",
"Microsoft YaHei", "PingFang SC", sans-serif;
color: var(--ink);
background: #fff;
line-height: 1.6;
background: var(--bg);
line-height: 1.65;
-webkit-font-smoothing: antialiased;
}
.container { width: 100%; max-width: 1320px; margin: 0 auto; padding: 0 32px; }
.container.narrow { max-width: 720px; margin: 0 auto; }
img { max-width: 100%; }
a { color: var(--blue); text-decoration: none; }
a:hover { color: var(--blue-dark); }
.container { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 32px; }
.container.narrow { max-width: 760px; margin: 0 auto; }
a { color: var(--brand); text-decoration: none; transition: color 0.15s ease; }
a:hover { color: var(--brand-dark); }
/* ------------------------------------------------------------------ */
/* Header / Navigation */
/* ------------------------------------------------------------------ */
/* Header */
.site-header {
position: sticky;
top: 0;
background: rgba(255, 255, 255, 0.97);
border-bottom: 1px solid var(--line);
z-index: 100;
position: sticky; top: 0; z-index: 100;
background: rgba(255, 255, 255, 0.82);
backdrop-filter: saturate(180%) blur(18px);
-webkit-backdrop-filter: saturate(180%) blur(18px);
border-bottom: 1px solid rgba(230, 235, 242, 0.9);
}
.header-inner {
display: flex; align-items: center; justify-content: space-between;
min-height: 60px; padding: 10px 0; gap: 12px;
position: relative;
min-height: 64px; padding: 10px 0; gap: 12px; position: relative;
}
.brand { display: flex; align-items: center; gap: 10px; font-weight: 700; color: var(--ink); flex-shrink: 0; }
.brand img { width: 26px; height: 26px; }
.brand-name { color: var(--blue); font-size: 1.1rem; white-space: nowrap; }
.brand img { width: 28px; height: 28px; border-radius: 8px; }
.brand-name { color: var(--ink); font-size: 1.06rem; font-weight: 700; letter-spacing: -0.01em; white-space: nowrap; }
.nav-toggle {
display: none; margin-left: auto;
background: none; border: 1px solid var(--line); border-radius: 6px;
font-size: 1.3rem; line-height: 1; color: var(--blue);
padding: 6px 12px; cursor: pointer;
background: none; border: 1px solid var(--line); border-radius: 10px;
font-size: 1.15rem; line-height: 1; color: var(--ink);
padding: 7px 12px; cursor: pointer; font-family: inherit;
}
.main-nav { display: flex; gap: 20px; align-items: center; flex-wrap: nowrap; }
.main-nav a { color: var(--ink-light); font-size: 0.93rem; font-weight: 500; white-space: nowrap; }
.main-nav a:hover, .main-nav a.active { color: var(--blue); }
.main-nav { display: flex; align-items: center; gap: 4px; }
.main-nav a { color: var(--ink-2); font-size: 0.92rem; font-weight: 500; white-space: nowrap; }
.main-nav a:hover, .main-nav a.active { color: var(--brand); }
@media (max-width: 1280px) {
.main-nav { gap: 14px; }
.main-nav a { font-size: 0.88rem; }
.nav-item { position: relative; display: flex; align-items: center; }
.nav-item > .nav-link { padding: 8px 12px; border-radius: 10px; display: inline-flex; align-items: center; gap: 4px; }
.nav-item > .nav-link:hover { background: rgba(10, 108, 255, 0.06); }
.nav-item > .nav-link.active { color: var(--brand); background: rgba(10, 108, 255, 0.08); }
.nav-caret {
border: 0; background: none; cursor: pointer; font-size: 0.62rem; color: var(--ink-3);
padding: 4px 2px; line-height: 1; font-family: inherit;
}
.nav-item:hover .nav-caret, .nav-item.open .nav-caret { color: var(--brand); }
.dropdown {
position: absolute; top: calc(100% + 10px); left: 0; min-width: 224px;
background: #fff; border: 1px solid var(--line); border-radius: 14px;
box-shadow: var(--shadow); padding: 8px;
opacity: 0; visibility: hidden; transform: translateY(6px);
transition: opacity 0.16s ease, transform 0.16s ease, visibility 0.16s;
}
.nav-item:hover > .dropdown, .nav-item.open > .dropdown { opacity: 1; visibility: visible; transform: translateY(0); }
.dropdown a {
display: block; padding: 9px 12px; border-radius: 9px;
color: var(--ink-2); font-size: 0.9rem;
}
.dropdown a:hover { background: var(--bg-soft); color: var(--brand); }
.dropdown a.active { color: var(--brand); background: rgba(10, 108, 255, 0.08); }
@media (max-width: 1080px) {
.nav-toggle { display: block; }
.main-nav {
display: none; position: absolute; top: 100%; left: 0; right: 0;
background: #fff; border-bottom: 1px solid var(--line);
flex-direction: column; align-items: stretch; gap: 0;
padding: 8px 0; box-shadow: 0 12px 24px rgba(0, 30, 60, 0.10);
display: none; position: absolute; top: 100%; left: 16px; right: 16px;
background: #fff; border: 1px solid var(--line); border-radius: 16px;
flex-direction: column; align-items: stretch; gap: 2px;
padding: 10px; box-shadow: var(--shadow-lg); max-height: 78vh; overflow: auto;
}
.main-nav.open { display: flex; }
.main-nav a { padding: 12px 32px; font-size: 0.95rem; }
.main-nav a:hover { background: var(--bg-soft); }
.main-nav > a, .nav-item { display: block; }
.nav-item { width: 100%; flex-wrap: wrap; }
.nav-item > .nav-link { padding: 11px 14px; width: calc(100% - 34px); }
.nav-caret { width: 30px; height: 38px; font-size: 0.7rem; margin-left: auto; }
.dropdown {
position: static; min-width: 0; width: 100%; opacity: 1; visibility: visible;
transform: none; box-shadow: none; border: 0; border-left: 2px solid var(--line);
border-radius: 0; margin: 2px 0 6px 16px; padding: 2px 0 2px 8px;
display: none;
}
.nav-item.open > .dropdown { display: block; }
.nav-item:hover > .dropdown { display: none; }
.nav-item.open:hover > .dropdown { display: block; }
.dropdown a { padding: 8px 10px; font-size: 0.88rem; }
.main-nav > a { padding: 11px 14px; border-radius: 10px; }
.main-nav > a:hover { background: var(--bg-soft); }
}
/* ------------------------------------------------------------------ */
/* Buttons */
/* ------------------------------------------------------------------ */
.btn {
display: inline-block; padding: 11px 24px; border-radius: 6px;
display: inline-block; padding: 12px 26px; border-radius: 12px;
font-weight: 600; font-size: 0.95rem; border: 1px solid transparent;
cursor: pointer; font-family: inherit; text-align: center;
transition: background 0.15s ease, color 0.15s ease;
transition: transform 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
}
.btn-primary { background: var(--blue); color: #fff; }
.btn-primary:hover { background: var(--blue-dark); color: #fff; }
.btn-ghost { background: transparent; color: var(--blue); border-color: var(--blue); }
.btn-ghost:hover { background: #e8f2ff; }
.btn-danger { background: #fff; color: var(--danger); border-color: var(--danger); }
.btn-primary { background: var(--grad); color: #fff; box-shadow: 0 10px 28px rgba(10, 108, 255, 0.28); }
.btn-primary:hover { color: #fff; transform: translateY(-1px); box-shadow: 0 14px 34px rgba(10, 108, 255, 0.34); }
.btn-ghost { background: transparent; color: var(--brand); border-color: rgba(10, 108, 255, 0.45); }
.btn-ghost:hover { background: rgba(10, 108, 255, 0.07); }
.btn-light { background: #fff; color: var(--ink); }
.btn-light:hover { background: #eef4ff; color: var(--brand-dark); }
.btn-outline-light { background: transparent; color: #fff; border-color: rgba(255, 255, 255, 0.5); }
.btn-outline-light:hover { background: rgba(255, 255, 255, 0.12); color: #fff; }
.btn-danger { background: #fff; color: var(--danger); border-color: rgba(214, 69, 69, 0.5); }
.btn-danger:hover { background: #fdf0ee; }
.btn-block { width: 100%; }
.btn-sm { padding: 7px 14px; font-size: 0.85rem; }
.btn[disabled] { opacity: 0.5; cursor: not-allowed; }
.btn-sm { padding: 8px 15px; font-size: 0.85rem; border-radius: 9px; }
.btn[disabled] { opacity: 0.5; cursor: not-allowed; transform: none; }
/* ------------------------------------------------------------------ */
/* Hero (home, dark) */
/* ------------------------------------------------------------------ */
/* Hero */
.hero {
background: linear-gradient(135deg, #003766 0%, #005eb8 55%, #0a7bd8 100%);
color: #fff; padding: 76px 0 84px; position: relative; overflow: hidden;
position: relative; overflow: hidden; color: #fff;
background: var(--bg-dark);
padding: 108px 0 116px;
}
.hero { max-width: none; }
.hero::before, .hero::after {
content: ""; position: absolute; border-radius: 50%;
background: radial-gradient(circle, rgba(255,255,255,0.12) 0%, transparent 70%);
.hero::before {
content: ""; position: absolute; inset: 0;
background-image:
linear-gradient(rgba(255, 255, 255, 0.045) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px);
background-size: 56px 56px;
mask-image: radial-gradient(ellipse 90% 80% at 50% 0%, #000 30%, transparent 75%);
-webkit-mask-image: radial-gradient(ellipse 90% 80% at 50% 0%, #000 30%, transparent 75%);
}
.hero::after {
content: ""; position: absolute; width: 820px; height: 820px; right: -260px; top: -420px;
background: radial-gradient(circle, rgba(34, 200, 255, 0.30) 0%, rgba(10, 108, 255, 0.12) 45%, transparent 70%);
pointer-events: none;
}
.hero .container { position: relative; z-index: 1; }
.hero h1 {
font-size: clamp(2.3rem, 5.2vw, 3.8rem);
font-weight: 700; line-height: 1.12; letter-spacing: -0.02em;
}
.hero::before { width: 460px; height: 460px; right: -130px; top: -150px; }
.hero::after { width: 320px; height: 320px; left: -100px; bottom: -140px; }
.hero .container { position: relative; }
.hero h1 { font-size: 2.4rem; font-weight: 700; line-height: 1.2; }
.hero-eyebrow {
font-size: 0.9rem; letter-spacing: 0.18em;
color: #bcd9f5; margin-bottom: 18px;
display: inline-block; font-size: 0.82rem; font-weight: 600;
letter-spacing: 0.16em; color: #9fd0ff; margin-bottom: 20px;
text-transform: uppercase;
}
.hero-sub { max-width: 640px; margin: 16px 0 28px; color: #e8f2ff; font-size: 1.05rem; }
.hero-sub { max-width: 660px; margin: 20px 0 32px; color: rgba(235, 244, 255, 0.82); font-size: 1.08rem; }
.hero-actions { display: flex; gap: 12px; flex-wrap: wrap; }
/* 欧拉恒等式装饰 */
.hero-euler {
position: absolute; right: 18%; top: 50%;
transform: translateY(-50%);
font-family: Georgia, "Times New Roman", serif;
font-style: italic;
position: absolute; right: 7%; top: 42%; transform: translateY(-50%);
font-family: Georgia, "Times New Roman", serif; font-style: italic;
font-size: clamp(1.6rem, 4.5vw, 4rem);
color: rgba(255, 255, 255, 0.14);
pointer-events: none; user-select: none;
white-space: nowrap; letter-spacing: 0.02em;
color: rgba(255, 255, 255, 0.07);
pointer-events: none; user-select: none; white-space: nowrap;
}
.hero-euler sup { font-size: 0.6em; }
.btn-light { background: #fff; color: var(--blue); }
.btn-light:hover { background: #e8f2ff; color: var(--blue-dark); }
.btn-outline-light { background: transparent; color: #fff; border-color: rgba(255,255,255,0.7); }
.btn-outline-light:hover { background: rgba(255,255,255,0.12); }
/* Sections & cards */
.section { padding: 64px 0; }
.section-alt { background: var(--bg-soft); }
.section-title {
font-size: 1.55rem; color: var(--blue-dark);
border-left: 4px solid var(--blue); padding-left: 14px; margin-bottom: 10px;
.hero-stats {
display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
gap: 18px; margin-top: 56px; padding-top: 34px;
border-top: 1px solid var(--line-dark);
}
.section-desc { color: var(--ink-light); margin-bottom: 26px; }
.hero-stat b { display: block; font-size: 1.6rem; font-weight: 700; letter-spacing: -0.02em; }
.hero-stat span { font-size: 0.86rem; color: rgba(235, 244, 255, 0.62); }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; margin-top: 26px; }
/* Page hero (sub pages, compact dark) */
.page-hero {
position: relative; overflow: hidden; color: #fff;
background: var(--grad-dark); padding: 72px 0 76px;
}
.page-hero::after {
content: ""; position: absolute; width: 640px; height: 640px; right: -220px; top: -320px;
background: radial-gradient(circle, rgba(34, 200, 255, 0.22) 0%, transparent 68%);
}
.page-hero .container { position: relative; z-index: 1; }
.page-hero h1 { font-size: clamp(1.9rem, 3.6vw, 2.8rem); font-weight: 700; line-height: 1.18; letter-spacing: -0.02em; }
.page-hero-sub { max-width: 720px; margin: 16px 0 0; color: rgba(235, 244, 255, 0.8); font-size: 1rem; }
.page-hero .hero-actions { margin-top: 28px; }
.page-hero .hero-eyebrow { margin-bottom: 14px; }
.page-hero .hero-stats { margin-top: 44px; }
/* ------------------------------------------------------------------ */
/* Sections & cards */
/* ------------------------------------------------------------------ */
.section { padding: 72px 0; }
.section-alt { background: var(--bg-soft); }
.section-dark { background: var(--bg-dark); color: #fff; }
.section-dark .section-title { color: #fff; border-left-color: var(--cyan); }
.section-dark .section-desc { color: rgba(235, 244, 255, 0.7); }
.section-title {
font-size: clamp(1.4rem, 2.4vw, 1.8rem); color: var(--ink);
font-weight: 700; letter-spacing: -0.01em; margin-bottom: 10px;
}
.section-head.center { text-align: center; }
.section-head.center .section-title { margin-bottom: 12px; }
.section-desc { color: var(--ink-2); margin-bottom: 8px; max-width: 760px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; margin-top: 30px; }
.card {
background: #fff; border: 1px solid var(--line); border-radius: var(--radius);
padding: 26px 24px; transition: transform 0.15s ease, box-shadow 0.15s ease;
padding: 28px 26px; transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.card:hover { transform: translateY(-3px); box-shadow: 0 10px 28px rgba(0,94,184,0.10); }
.card .icon { font-size: 1.7rem; color: var(--blue); margin-bottom: 12px; }
.card h3 { font-size: 1.05rem; color: var(--blue-dark); margin-bottom: 8px; }
.card p { font-size: 0.93rem; color: var(--ink-light); }
.card:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.card .icon {
width: 46px; height: 46px; display: flex; align-items: center; justify-content: center;
font-size: 1.35rem; color: var(--brand); border-radius: 13px;
background: linear-gradient(135deg, rgba(10, 108, 255, 0.12), rgba(34, 200, 255, 0.12));
margin-bottom: 16px;
}
.card h3 { font-size: 1.05rem; color: var(--ink); margin-bottom: 8px; }
.card p { font-size: 0.93rem; color: var(--ink-2); }
.card-link { display: block; color: var(--ink); }
.card-link:hover { color: var(--ink); }
.card-link .more { display: inline-block; margin-top: 14px; font-size: 0.9rem; font-weight: 600; color: var(--brand); }
/* Feature rows (Apple style) */
.feature {
display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center;
padding: 72px 0;
}
.feature + .feature { border-top: 1px solid var(--line); }
.feature.reverse .feature-copy { order: 2; }
.feature.reverse .feature-visual { order: 1; }
.feature-tag {
display: inline-block; font-size: 0.76rem; font-weight: 700; letter-spacing: 0.12em;
text-transform: uppercase; color: var(--brand); margin-bottom: 14px;
}
.feature-copy h2 { font-size: clamp(1.5rem, 2.6vw, 2rem); line-height: 1.2; letter-spacing: -0.015em; margin-bottom: 14px; }
.feature-copy p { color: var(--ink-2); margin-bottom: 20px; }
.feature-list { list-style: none; margin: 0 0 24px; display: grid; gap: 10px; }
.feature-list li { position: relative; padding-left: 26px; color: var(--ink-2); font-size: 0.95rem; }
.feature-list li::before {
content: ""; position: absolute; left: 0; top: 0.48em; width: 14px; height: 14px;
border-radius: 50%; background: var(--grad); opacity: 0.9;
}
.feature-actions { display: flex; gap: 12px; flex-wrap: wrap; }
.feature-visual {
position: relative; border-radius: 24px; min-height: 340px;
background: linear-gradient(150deg, var(--v1, #0a6cff), var(--v2, #22c8ff));
overflow: hidden; box-shadow: var(--shadow-lg);
display: flex; align-items: center; justify-content: center;
}
.feature-visual::before {
content: ""; position: absolute; inset: 0;
background-image:
linear-gradient(rgba(255, 255, 255, 0.10) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.10) 1px, transparent 1px);
background-size: 44px 44px;
opacity: 0.5;
}
.feature-visual .visual-glyph {
position: relative; font-size: 5.2rem; color: rgba(255, 255, 255, 0.95);
text-shadow: 0 14px 40px rgba(0, 0, 0, 0.22);
}
.visual-chip {
position: absolute; padding: 9px 16px; border-radius: 999px;
background: rgba(255, 255, 255, 0.92); color: var(--ink);
font-size: 0.82rem; font-weight: 600; box-shadow: 0 10px 26px rgba(3, 20, 45, 0.22);
backdrop-filter: blur(6px);
}
.visual-chip.chip-a { top: 26px; left: 26px; }
.visual-chip.chip-b { bottom: 26px; right: 26px; }
.visual-chip.chip-c { bottom: 26px; left: 26px; }
/* Product grid */
.product-grid {
display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 20px; margin-top: 34px;
}
.product-card {
display: flex; flex-direction: column; gap: 12px;
background: #fff; border: 1px solid var(--line); border-radius: 20px;
padding: 28px 26px; color: var(--ink);
transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}
.product-card:hover { transform: translateY(-5px); box-shadow: var(--shadow); border-color: rgba(10, 108, 255, 0.35); color: var(--ink); }
.product-icon {
width: 52px; height: 52px; border-radius: 15px;
display: flex; align-items: center; justify-content: center;
font-size: 1.5rem; color: #fff;
background: linear-gradient(140deg, var(--v1, #0a6cff), var(--v2, #22c8ff));
box-shadow: 0 10px 24px rgba(10, 108, 255, 0.25);
}
.product-card h3 { font-size: 1.1rem; letter-spacing: -0.01em; }
.product-card p { font-size: 0.92rem; color: var(--ink-2); flex: 1; }
.product-card .product-link { font-size: 0.9rem; font-weight: 600; color: var(--brand); }
.product-card .product-meta { font-size: 0.78rem; color: var(--ink-3); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; }
/* Steps */
.steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; margin-top: 34px; counter-reset: step; }
.step {
position: relative; background: #fff; border: 1px solid var(--line);
border-radius: var(--radius); padding: 30px 26px 26px;
}
.step::before {
counter-increment: step; content: counter(step, decimal-leading-zero);
position: absolute; top: -16px; left: 24px;
font-size: 0.9rem; font-weight: 700; color: #fff;
background: var(--grad); border-radius: 9px; padding: 5px 12px;
box-shadow: 0 8px 20px rgba(10, 108, 255, 0.3);
}
.step h3 { font-size: 1rem; margin: 6px 0 8px; }
.step p { font-size: 0.9rem; color: var(--ink-2); }
/* Tech pills */
.pill-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.pill {
display: inline-block; padding: 7px 15px; border-radius: 999px;
background: rgba(10, 108, 255, 0.08); color: var(--brand-dark);
font-size: 0.84rem; font-weight: 600;
}
.section-dark .pill { background: rgba(255, 255, 255, 0.1); color: #dceaff; }
/* CTA band */
.cta-band {
position: relative; overflow: hidden; border-radius: 26px;
background: var(--grad-dark); color: #fff;
padding: 56px 48px; display: flex; align-items: center; justify-content: space-between;
gap: 28px; flex-wrap: wrap; box-shadow: var(--shadow-lg);
}
.cta-band::after {
content: ""; position: absolute; width: 420px; height: 420px; right: -120px; top: -220px;
background: radial-gradient(circle, rgba(34, 200, 255, 0.3), transparent 70%);
}
.cta-band h2 { font-size: clamp(1.4rem, 2.4vw, 1.9rem); letter-spacing: -0.01em; position: relative; z-index: 1; }
.cta-band p { color: rgba(235, 244, 255, 0.78); margin-top: 8px; position: relative; z-index: 1; }
.cta-band .hero-actions { position: relative; z-index: 1; }
/* ------------------------------------------------------------------ */
/* Forms */
/* ------------------------------------------------------------------ */
.form-card {
background: #fff; border: 1px solid var(--line); border-radius: var(--radius);
padding: 30px 28px; margin-top: 26px;
padding: 34px 32px; margin-top: 30px; box-shadow: var(--shadow);
}
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.form-group { margin-bottom: 16px; }
.form-group label { display: block; font-size: 0.88rem; font-weight: 600; margin-bottom: 6px; }
.form-group { margin-bottom: 18px; }
.form-group label { display: block; font-size: 0.88rem; font-weight: 600; margin-bottom: 7px; }
.form-group input, .form-group select, .form-group textarea {
width: 100%; padding: 10px 13px; border: 1px solid #cfdcea; border-radius: 6px;
width: 100%; padding: 11px 14px; border: 1px solid #d8e1ec; border-radius: 11px;
font-size: 0.93rem; font-family: inherit; background: #fbfdff; color: var(--ink);
transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus {
outline: none; border-color: var(--blue); box-shadow: 0 0 0 3px rgba(0,94,184,0.12);
outline: none; border-color: var(--brand); box-shadow: 0 0 0 4px rgba(10, 108, 255, 0.12);
background: #fff;
}
.form-hint { font-size: 0.82rem; color: var(--ink-light); margin-top: 4px; }
.form-hint { font-size: 0.82rem; color: var(--ink-3); margin-top: 5px; }
.form-tip { margin-top: 14px; font-size: 0.88rem; text-align: center; }
/* Result / alerts */
.alert { padding: 12px 16px; border-radius: 6px; font-size: 0.92rem; margin-top: 14px; display: none; }
.alert { padding: 13px 17px; border-radius: 11px; font-size: 0.92rem; margin-top: 16px; display: none; }
.alert.show { display: block; }
.alert-ok { background: #e9f7ef; color: var(--ok); border: 1px solid #b8e6c8; }
.alert-err { background: #fdf0ee; color: var(--danger); border: 1px solid #f2c4be; }
.badge { display: inline-block; padding: 2px 12px; border-radius: 20px; font-size: 0.8rem; font-weight: 600; }
.badge { display: inline-block; padding: 3px 13px; border-radius: 999px; font-size: 0.8rem; font-weight: 600; }
.badge-pending { background: #fef3dc; color: #9a6700; }
.badge-approved { background: #e9f7ef; color: var(--ok); }
.badge-denied { background: #fdf0ee; color: var(--danger); }
@@ -178,89 +407,105 @@ a:hover { color: var(--blue-dark); }
/* Admin table */
.toolbar { display: flex; justify-content: space-between; align-items: center; margin: 24px 0 14px; flex-wrap: wrap; gap: 10px; }
.table-wrap { overflow-x: auto; }
table.admin { width: 100%; border-collapse: collapse; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; min-width: 720px; }
table.admin th, table.admin td { padding: 11px 14px; text-align: left; font-size: 0.9rem; border-bottom: 1px solid var(--line); }
table.admin th { background: var(--bg-soft); color: var(--blue-dark); font-weight: 600; white-space: nowrap; }
table.admin {
width: 100%; border-collapse: collapse; background: #fff;
border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; min-width: 720px;
}
table.admin th, table.admin td { padding: 12px 15px; text-align: left; font-size: 0.9rem; border-bottom: 1px solid var(--line); }
table.admin th { background: var(--bg-soft); color: var(--ink); font-weight: 600; white-space: nowrap; }
table.admin tr:hover td { background: #f7fbff; }
table.admin .actions { white-space: nowrap; }
/* ------------------------------------------------------------------ */
/* Footer */
.site-footer { background: var(--blue-dark); color: #d6e6f7; padding: 36px 0 24px; }
.footer-inner { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; font-size: 0.86rem; }
.site-footer a { color: #a9c6e3; }
/* ------------------------------------------------------------------ */
.site-footer { background: var(--bg-dark); color: rgba(214, 230, 247, 0.75); padding: 48px 0 32px; }
.footer-inner { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px; font-size: 0.86rem; }
.site-footer a { color: rgba(169, 198, 227, 0.9); }
.site-footer a:hover { color: #fff; }
.footer-brand { display: flex; align-items: center; gap: 10px; color: #fff; font-weight: 600; }
.footer-brand img { width: 24px; height: 24px; border-radius: 7px; }
.footer-links { display: inline-flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.footer-links .sep { opacity: 0.4; }
.mono { font-family: Consolas, monospace; letter-spacing: 0.04em; }
.mono { font-family: Consolas, "JetBrains Mono", monospace; letter-spacing: 0.04em; }
/* ------------------------------------------------------------------ */
/* Blog */
.breadcrumb { font-size: 0.85rem; color: var(--ink-light); margin-bottom: 14px; }
.breadcrumb a { color: var(--ink-light); }
.breadcrumb a:hover { color: var(--blue); }
/* ------------------------------------------------------------------ */
.post-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 18px; margin-top: 26px; }
.breadcrumb { font-size: 0.85rem; color: var(--ink-3); margin-bottom: 16px; }
.breadcrumb a { color: var(--ink-3); }
.breadcrumb a:hover { color: var(--brand); }
.post-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 20px; margin-top: 30px; }
.post-card {
display: block; background: #fff; border: 1px solid var(--line); border-radius: var(--radius);
padding: 22px 24px; transition: transform 0.15s ease, box-shadow 0.15s ease; color: var(--ink);
padding: 26px 26px; transition: transform 0.18s ease, box-shadow 0.18s ease; color: var(--ink);
}
.post-card:hover { transform: translateY(-3px); box-shadow: 0 10px 28px rgba(0, 94, 184, 0.10); color: var(--ink); }
.post-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.post-date { font-size: 0.8rem; color: var(--ink-light); }
.post-title { font-size: 1.08rem; color: var(--blue-dark); margin-bottom: 6px; }
.post-excerpt { font-size: 0.9rem; color: var(--ink-light); line-height: 1.55; }
.post-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); color: var(--ink); }
.post-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.post-date { font-size: 0.8rem; color: var(--ink-3); }
.post-title { font-size: 1.1rem; color: var(--ink); margin-bottom: 8px; letter-spacing: -0.01em; }
.post-excerpt { font-size: 0.9rem; color: var(--ink-2); line-height: 1.6; }
.tag {
display: inline-block; font-size: 0.74rem; color: var(--blue);
background: #e8f2ff; border-radius: 20px; padding: 1px 10px;
display: inline-block; font-size: 0.74rem; color: var(--brand);
background: rgba(10, 108, 255, 0.09); border-radius: 999px; padding: 2px 11px;
}
/* Article */
.article { line-height: 1.8; font-size: 0.98rem; color: var(--ink); margin-top: 20px; }
.article h1, .article h2, .article h3, .article h4 {
color: var(--blue-dark); margin: 1.6em 0 0.6em; line-height: 1.4;
}
.article { line-height: 1.85; font-size: 0.98rem; color: var(--ink); margin-top: 22px; }
.article h1, .article h2, .article h3, .article h4 { color: var(--ink); margin: 1.7em 0 0.6em; line-height: 1.4; letter-spacing: -0.01em; }
.article h1 { font-size: 1.6rem; border-bottom: 1px solid var(--line); padding-bottom: 0.3em; }
.article h2 { font-size: 1.3rem; }
.article h3 { font-size: 1.1rem; }
.article p { margin: 0.8em 0; }
.article ul, .article ol { padding-left: 1.5em; margin: 0.8em 0; }
.article li { margin: 0.3em 0; }
.article code {
background: #eef4fb; color: #00518f; border-radius: 4px;
padding: 1px 6px; font-family: Consolas, monospace; font-size: 0.9em;
}
.article pre {
background: #0d2b4a; color: #d8ecff; border-radius: 8px;
padding: 16px 18px; overflow-x: auto; margin: 1em 0;
}
.article h3 { font-size: 1.08rem; }
.article p { margin: 0.85em 0; }
.article ul, .article ol { padding-left: 1.5em; margin: 0.85em 0; }
.article li { margin: 0.32em 0; }
.article code { background: #eef4fb; color: #00518f; border-radius: 5px; padding: 1px 6px; font-family: Consolas, monospace; font-size: 0.9em; }
.article pre { background: #071022; color: #d8ecff; border-radius: 14px; padding: 18px 20px; overflow-x: auto; margin: 1.1em 0; }
.article pre code { background: none; color: inherit; padding: 0; }
.article blockquote {
border-left: 4px solid var(--blue); background: var(--bg-soft);
padding: 10px 16px; margin: 1em 0; color: var(--ink-light); border-radius: 0 6px 6px 0;
}
.article table { width: 100%; border-collapse: collapse; margin: 1em 0; font-size: 0.92rem; }
.article th, .article td { border: 1px solid var(--line); padding: 8px 12px; text-align: left; }
.article th { background: var(--bg-soft); color: var(--blue-dark); }
.article img { max-width: 100%; border-radius: 8px; }
.article blockquote { border-left: 4px solid var(--brand); background: var(--bg-soft); padding: 12px 18px; margin: 1.1em 0; color: var(--ink-2); border-radius: 0 12px 12px 0; }
.article table { width: 100%; border-collapse: collapse; margin: 1.1em 0; font-size: 0.92rem; }
.article th, .article td { border: 1px solid var(--line); padding: 9px 13px; text-align: left; }
.article th { background: var(--bg-soft); color: var(--ink); }
.article img { max-width: 100%; border-radius: 12px; }
.article a { text-decoration: underline; }
/* Card as link */
.card-link { display: block; color: var(--ink); }
.card-link:hover { color: var(--ink); }
/* ------------------------------------------------------------------ */
/* Utilities / responsive */
/* ------------------------------------------------------------------ */
@media (max-width: 720px) {
.post-list { grid-template-columns: 1fr; }
}
.kv-inline { display: flex; gap: 20px; flex-wrap: wrap; color: var(--ink-2); font-size: 0.9rem; }
.mt-0 { margin-top: 0; }
.mt-24 { margin-top: 24px; }
.mt-32 { margin-top: 32px; }
.text-center { text-align: center; }
.text-soft { color: var(--ink-2); }
@media (max-width: 1024px) {
.main-nav { gap: 12px 16px; }
.main-nav a { font-size: 0.88rem; }
.feature { grid-template-columns: 1fr; gap: 36px; padding: 56px 0; }
.feature.reverse .feature-copy { order: 1; }
.feature.reverse .feature-visual { order: 2; }
.feature-visual { min-height: 280px; }
}
@media (max-width: 720px) {
.form-row { grid-template-columns: 1fr; }
.hero h1 { font-size: 1.8rem; }
.hero { padding: 56px 0 64px; }
.section { padding: 48px 0; }
.container { padding: 0 18px; }
.form-row { grid-template-columns: 1fr; }
.hero { padding: 76px 0 84px; }
.page-hero { padding: 56px 0 60px; }
.section { padding: 52px 0; }
.hero-actions .btn { width: 100%; }
.feature { padding: 44px 0; }
.cta-band { padding: 40px 28px; }
.post-list { grid-template-columns: 1fr; }
.product-grid { grid-template-columns: 1fr; }
.hero-stats { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
.hero-stats { grid-template-columns: 1fr; }
}
+189 -30
View File
@@ -5,26 +5,52 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>江北的渔夫的空间</title>
<meta name="description" content="江北的渔夫的空间 —— 工业软件、标准件库与数字化实践分享">
<meta name="keywords" content="江北的渔夫的空间, Easy Data Collector, ResLib, 资源中心管理器, Creo, 标准零部件库, 数字孪生">
<meta name="keywords" content="江北的渔夫的空间, Easy Data Collection, ResLib, 资源中心管理器, Creo, 标准零部件库, 数字孪生, 深度学习">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collector">
<span class="brand-name">Easy Data Collector</span>
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<a href="/" class=active>博客</a>
<a href="/reslib/">ResLib</a>
<a href="/reslib/apply">申请 License</a>
<a href="/reslib/status">查询 / 下载</a>
<a href="/reslib/package">资源包获取</a>
<a href="/neural/">Neural Research</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
@@ -34,34 +60,144 @@
<section class="hero">
<div class="hero-euler" aria-hidden="true">e<sup>iπ</sup> + 1 = 0</div>
<div class="container">
<p class="hero-eyebrow">INDUSTRIAL SOFTWARE INTEGRATION · STANDARDIZED MANAGEMENT · SKU REDUCTION · NEURAL NETWORK PRACTICE</p>
<h1>数字化和人工智能</h1>
<p class="hero-sub">工业软件集成 · 标准化管理 · SKU 降低 · 神经网络实践等 —— 基于 LLM 的流程工业技术研究和探索</p>
<p class="hero-eyebrow">EASY DATA COLLECTION · SINCOS.CC</p>
<h1>让工程与数据,<br>更简单</h1>
<p class="hero-sub">工业软件集成 · 标准化管理 · 深度学习实践 —— 从标准件库、科研热榜到自研工具集,把想法持续做成可用的产品。</p>
<div class="hero-actions">
<a href="/blog/" class="btn btn-light">全部文章</a>
<a href="/reslib/" class="btn btn-outline-light">ResLib 产品</a>
<a href="/tools/" class="btn btn-light">探索工具开发</a>
<a href="/research/" class="btn btn-outline-light">前沿技术研究</a>
</div>
<div class="hero-stats">
<div class="hero-stat"><b>3</b><span>研究平台</span></div>
<div class="hero-stat"><b>6</b><span>自研工具</span></div>
<div class="hero-stat"><b>100%</b><span>私有化部署</span></div>
<div class="hero-stat"><b>Creo · Web · Edge</b><span>多端形态</span></div>
</div>
</div>
</section>
<section class="section">
<div class="container">
<h2 class="section-title">平台</h2>
<div class="grid">
<a class="card card-link" href="/reslib/">
<div class="icon">▤</div><h3>ResLib</h3><p>资源中心管理器 —— Creo 7.0+ 企业级标准零部件管理库,含 LIC 授权体系与在线申请。</p>
</a>
<a class="card card-link" href="/neural/">
<div class="icon">◈</div><h3>Neural Research</h3><p>NeuralMix AI —— 工业混合机智能终点判定引擎,1D-CNN 深度学习评估混合均匀度。</p>
</a>
<a class="card card-link" href="http://124.220.63.9:25000">
<div class="icon">⌕</div><h3>Research Digest</h3><p>国际顶尖科研热榜 —— 顶刊核心成果聚合与 AI 热度 / 突破度分析,每日自动检索。</p>
</a>
<div class="feature" style="padding-top: 0;">
<div class="feature-copy">
<span class="feature-tag">RESEARCH DIGEST</span>
<h2>国际顶尖科研热榜</h2>
<p>自动检索国际顶尖期刊与权威机构的最新成果,AI 输出中文摘要、技术突破总结与 0-5 突破度评分。</p>
<ul class="feature-list">
<li>31 个信源、21 个关注领域,每日 06:00 自动检索</li>
<li>顶刊、上市公司公告、专利动态一屏掌握</li>
</ul>
<div class="feature-actions">
<a href="http://124.220.63.9:25000" class="btn btn-primary">访问热榜</a>
</div>
</div>
<div class="feature-visual" style="--v1:#0a6cff;--v2:#22c8ff">
<span class="visual-glyph">⌕</span>
<span class="visual-chip chip-a">21 个领域</span>
<span class="visual-chip chip-b">每日更新</span>
</div>
</div>
<div class="feature reverse">
<div class="feature-copy">
<span class="feature-tag">RESLIB</span>
<h2>资源中心管理器 ResLib</h2>
<p>面向 Creo 7.0+ 的企业级标准零部件管理库:标准件浏览、3D 预览、搜索过滤、快速装配与 LIC 授权体系。</p>
<ul class="feature-list">
<li>OpenGL 实时预览,装配体递归解析</li>
<li>一键装配与参数定位,MAC 绑定授权</li>
</ul>
<div class="feature-actions">
<a href="/research/reslib/" class="btn btn-primary">了解 ResLib</a>
<a href="/license/" class="btn btn-ghost">License 申请</a>
</div>
</div>
<div class="feature-visual" style="--v1:#007a5e;--v2:#22c8ff">
<span class="visual-glyph">▤</span>
<span class="visual-chip chip-a">Creo 7.0 - 10.0</span>
<span class="visual-chip chip-b">3D 实时预览</span>
</div>
</div>
<div class="feature">
<div class="feature-copy">
<span class="feature-tag">NEURAL RESEARCH</span>
<h2>NeuralMix AI 混合终点判断</h2>
<p>ModbusRTU 高速采集 → Redis 缓冲 → TimescaleDB 存储 → 1D-CNN 实时评估混合均匀度,参数稳定即判定完成。</p>
<ul class="feature-list">
<li>实时 + 静态工艺参数融合建模</li>
<li>支持 Windows / Ubuntu / NVIDIA Jetson</li>
</ul>
<div class="feature-actions">
<a href="/research/neural/" class="btn btn-primary">了解 NeuralMix</a>
</div>
</div>
<div class="feature-visual" style="--v1:#5b3df5;--v2:#22c8ff">
<span class="visual-glyph">◈</span>
<span class="visual-chip chip-a">1D-CNN</span>
<span class="visual-chip chip-b">0.15s 采样</span>
</div>
</div>
</div>
</section>
<section class="section section-alt">
<div class="container">
<div class="section-head center">
<h2 class="section-title">工具开发</h2>
<p class="section-desc">每一款工具都来自真实项目 —— 独立研发、私有部署、持续迭代。</p>
</div>
<div class="product-grid">
<a class="product-card" href="/tools/sequence-diagram/">
<div class="product-icon" style="--v1:#7a3df5;--v2:#22c8ff">◷</div>
<span class="product-meta">Flutter Desktop</span>
<h3>Sequence-Diagram</h3>
<p>面向 PLC 流程节拍与相位角设计的时序图设计器,条形 / 圆周双视图。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/uni-viewer/">
<div class="product-icon" style="--v1:#0a6cff;--v2:#46d1ff">◉</div>
<span class="product-meta">Web Component</span>
<h3>Uni-Viewer</h3>
<p>纯前端、不出网的文件预览组件,271 个扩展名、47 条预览链路。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/engineer-craft/">
<div class="product-icon" style="--v1:#0a9e6e;--v2:#7ad9a8">⚙</div>
<span class="product-meta">Vue 3 · Vite</span>
<h3>Engineer Craft</h3>
<p>流程工业智能设计平台:31 个工程计算模块、URS 与 AI 审查。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/five-phases-observer/">
<div class="product-icon" style="--v1:#b8860b;--v2:#ffd166">✦</div>
<span class="product-meta">GAP 公理协议</span>
<h3>The Five Phases Observer</h3>
<p>90 域观测协议与 720 个可证伪锚点,让决策可编译、可证伪。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/unitouch/">
<div class="product-icon" style="--v1:#e05252;--v2:#ff9a62">▦</div>
<span class="product-meta">Flutter · MQTT</span>
<h3>UniTouch Interface</h3>
<p>嵌入式工控机的设备控制软件,替代传统 HMI 的统一工控平台。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/edc-lite-erp/">
<div class="product-icon" style="--v1:#0f2f6b;--v2:#2a6df5">▣</div>
<span class="product-meta">Electron · MySQL</span>
<h3>EDC Lite ERP</h3>
<p>轻量资源计划与制造管理系统:物料编码、进销存、扫码称配全链路。</p>
<span class="product-link">了解详情 →</span>
</a>
</div>
<div class="text-center mt-32">
<a href="/tools/" class="btn btn-primary">查看全部工具</a>
</div>
</div>
</section>
<section class="section">
<div class="container">
<h2 class="section-title">最新文章</h2>
<div class="post-list">
@@ -72,8 +208,23 @@
<p class="post-excerpt">博客开张 用统一风格搭建的聚合博客正式上线,部署在 sincos.cc。 本站主要记录: 工业软件:Creo 8.0 二次开发、企业级标准零部件库 ResLib 的设计与 Lice…</p>
</a>
</div>
<div style="text-align:center; margin-top: 30px;">
<a href="/blog/" class="btn btn-primary">查看全部文章</a>
<div class="text-center mt-32">
<a href="/blog/" class="btn btn-ghost">查看全部文章</a>
</div>
</div>
</section>
<section class="section section-alt">
<div class="container">
<div class="cta-band">
<div>
<h2>License 与资源中心</h2>
<p>ResLib 授权申请、查询下载与标准件资源包统一入口;私有服务与代码托管在资源中心。</p>
</div>
<div class="hero-actions">
<a href="/license/" class="btn btn-light">License 中心</a>
<a href="/resources/" class="btn btn-outline-light">资源中心</a>
</div>
</div>
</div>
</section>
@@ -81,11 +232,19 @@
<footer class="site-footer">
<div class="container footer-inner">
<span>Copyright &copy; 2026 Easy Data Collector. All rights reserved.</span>
<span><a href="/links.html">内部资源</a> · <a href="/admin">管理页面</a> · <a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a></span>
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
<script src="/static/js/nav.js"></script>
</body>
</html>
+70 -31
View File
@@ -3,9 +3,9 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>江北的渔夫的空间 | Easy Data Collector</title>
<meta name="description" content="江北的渔夫的空间 —— 工业软件、标准件库与数字化实践分享。Easy Data Collector 旗下 ResLib 资源中心管理器:Creo 7.0+ 企业级标准零部件管理库。">
<meta name="keywords" content="江北的渔夫的空间, Easy Data Collector, ResLib, 资源中心管理器, Creo, 标准零部件库, License">
<title>ResLib 资源中心管理器 | Easy Data Collection</title>
<meta name="description" content="ResLib 资源中心管理器 —— 面向 Creo 7.0+ 的企业级标准零部件管理库:标准件浏览、3D 预览、搜索过滤、快速装配,配套自研 LIC 授权体系。">
<meta name="keywords" content="ResLib, 资源中心管理器, Creo, 标准零部件库, LIC 授权, Easy Data Collection">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
@@ -15,32 +15,62 @@
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collector">
<span class="brand-name">Easy Data Collector</span>
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav">
<a href="/blog/">博客</a>
<a href="/reslib/" class="active">ResLib</a>
<a href="/reslib/apply">申请 License</a>
<a href="/reslib/status">查询 / 下载</a>
<a href="/reslib/package">资源包获取</a>
<a href="/neural/">Neural Research</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a class="active" href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="hero">
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">前沿技术研究 · CREO PLUGIN</p>
<h1>资源中心管理器 ResLib</h1>
<p class="hero-sub">面向 Creo 7.0+ 的企业级标准零部件管理库 —— 标准件浏览、3D 预览、搜索过滤、快速装配,配套自研 LIC 授权体系。</p>
<p class="page-hero-sub">面向 Creo 7.0+ 的企业级标准零部件管理库 —— 标准件浏览、3D 预览、搜索过滤、快速装配,配套自研 LIC 授权体系。</p>
<div class="hero-actions">
<a href="/reslib/apply" class="btn btn-light">申请 License</a>
<a href="/reslib/status" class="btn btn-outline-light">查询申请状态</a>
<a href="/reslib/package" class="btn btn-outline-light">资源包获取</a>
<a href="/license/apply" class="btn btn-light">申请 License</a>
<a href="/license/status" class="btn btn-outline-light">查询申请状态</a>
<a href="/license/package" class="btn btn-outline-light">资源包获取</a>
</div>
<div class="hero-stats">
<div class="hero-stat"><b>Creo 7.0 - 10.0</b><span>64 位 / Pro/TOOLKIT</span></div>
<div class="hero-stat"><b>3D</b><span>OpenGL 实时预览</span></div>
<div class="hero-stat"><b>LIC</b><span>MAC 绑定授权</span></div>
</div>
</div>
</section>
@@ -63,7 +93,7 @@
</div>
</section>
<section class="section">
<section class="section section-alt">
<div class="container">
<h2 class="section-title">资源包内容</h2>
<p class="section-desc">资源包随 License 发放,内置常用标准件库,覆盖以下品类:</p>
@@ -73,13 +103,13 @@
<div class="card"><div class="icon">✚</div><h3>食品 · 医药 · 包装配件</h3><p>食品、医药与包装工程常用配件库,贴合产线设计选型需求。</p></div>
<div class="card"><div class="icon">⏏</div><h3>气动系统配件</h3><p>气缸、阀岛、接头等气动系统常用件,助力自动化产线快速搭建。</p></div>
</div>
<div style="text-align:center; margin-top: 28px;">
<a href="/reslib/package" class="btn btn-primary">获取资源包</a>
<div class="text-center mt-32">
<a href="/license/package" class="btn btn-primary">获取资源包</a>
</div>
</div>
</section>
<section class="section section-alt">
<section class="section">
<div class="container">
<h2 class="section-title">版本与环境</h2>
<div class="grid">
@@ -90,17 +120,17 @@
</div>
</section>
<section class="section">
<section class="section section-alt">
<div class="container narrow">
<h2 class="section-title">License 申请流程</h2>
<p class="section-desc">三步完成授权:</p>
<div class="grid">
<div class="card"><h3>1. 提交申请</h3><p>填写公司、联系人与机器 MAC 地址,提交后获得申请编号。</p></div>
<div class="card"><h3>2. 人工审批</h3><p>我们核对信息后确认授权,通过后自动生成授权文件。</p></div>
<div class="card"><h3>3. 下载安装</h3><p>凭申请编号查询状态并下载 <span class="mono">res_center.lic</span>,放入 config\lic\ 目录。</p></div>
<div class="steps">
<div class="step"><h3>提交申请</h3><p>填写公司、联系人与机器 MAC 地址,提交后获得申请编号。</p></div>
<div class="step"><h3>人工审批</h3><p>我们核对信息后确认授权,通过后自动生成授权文件。</p></div>
<div class="step"><h3>下载安装</h3><p>凭申请编号查询状态并下载 <span class="mono">res_center.lic</span>,放入 config\lic\ 目录。</p></div>
</div>
<div style="text-align:center; margin-top: 28px;">
<a href="/reslib/apply" class="btn btn-primary">开始申请</a>
<div class="text-center mt-32">
<a href="/license/apply" class="btn btn-primary">开始申请</a>
</div>
</div>
</section>
@@ -108,8 +138,17 @@
<footer class="site-footer">
<div class="container footer-inner">
<span>Copyright &copy; 2026 Easy Data Collector. All rights reserved.</span>
<span><a href="/links.html">内部资源</a> · <a href="/admin">管理页面</a> · <a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a></span>
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
+20 -1
View File
@@ -3,7 +3,7 @@
document.addEventListener("DOMContentLoaded", function () {
var toggle = document.getElementById("navToggle");
var nav = document.getElementById("mainNav");
if (!toggle || !nav) return;
if (toggle && nav) {
toggle.addEventListener("click", function () {
nav.classList.toggle("open");
});
@@ -12,5 +12,24 @@
nav.classList.remove("open");
}
});
}
var items = document.querySelectorAll(".nav-item.has-dropdown");
items.forEach(function (item) {
var caret = item.querySelector(".nav-caret");
if (!caret) return;
caret.addEventListener("click", function (e) {
e.preventDefault();
e.stopPropagation();
var wasOpen = item.classList.contains("open");
items.forEach(function (x) { x.classList.remove("open"); });
if (!wasOpen) item.classList.add("open");
});
});
document.addEventListener("click", function (e) {
if (e.target.closest(".nav-item")) return;
items.forEach(function (x) { x.classList.remove("open"); });
});
});
})();
+134
View File
@@ -0,0 +1,134 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>License | Easy Data Collection</title>
<meta name="description" content="License 中心 —— ResLib 授权与资源获取统一入口:申请 License、查询 / 下载授权文件、资源包获取。">
<meta name="keywords" content="License, ResLib, 授权申请, MAC 地址, res_center.lic, 资源包">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">LICENSE · 授权中心</p>
<h1>License 中心</h1>
<p class="page-hero-sub">ResLib 授权与资源获取的统一入口。申请、查询、下载与资源包全部集中在这里,凭申请编号即可完成全流程。</p>
<div class="hero-actions">
<a href="/license/apply" class="btn btn-light">开始申请</a>
<a href="/license/status" class="btn btn-outline-light">查询 / 下载</a>
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="section-head">
<h2 class="section-title">功能入口</h2>
<p class="section-desc">按流程顺序使用;已提交过申请的用户可直接查询状态或获取资源包。</p>
</div>
<div class="product-grid">
<a class="product-card" href="/license/apply">
<div class="product-icon" style="--v1:#0a6cff;--v2:#22c8ff">✎</div>
<span class="product-meta">STEP 01</span>
<h3>申请 License</h3>
<p>填写公司、联系人与机器 MAC 地址,提交后获得唯一申请编号。</p>
<span class="product-link">前往申请 →</span>
</a>
<a class="product-card" href="/license/status">
<div class="product-icon" style="--v1:#0a9e6e;--v2:#7ad9a8">⌕</div>
<span class="product-meta">STEP 02</span>
<h3>查询 / 下载</h3>
<p>凭申请编号查询审批状态,通过后直接下载 res_center.lic 授权文件。</p>
<span class="product-link">查询状态 →</span>
</a>
<a class="product-card" href="/license/package">
<div class="product-icon" style="--v1:#7a3df5;--v2:#b58cff">▣</div>
<span class="product-meta">可 选</span>
<h3>资源包获取</h3>
<p>审核通过的用户可下载标准件库资源包:标准化配件、BPE 卫生级、食品医药包装与气动配件。</p>
<span class="product-link">获取资源包 →</span>
</a>
</div>
</div>
</section>
<section class="section section-alt">
<div class="container">
<h2 class="section-title">License 申请流程</h2>
<div class="steps">
<div class="step"><h3>提交申请</h3><p>填写公司、联系人与机器 MAC 地址(cmd 运行 getmac /v 获取),提交后获得申请编号。</p></div>
<div class="step"><h3>人工审批</h3><p>我们核对信息后确认授权,通过后系统自动生成授权文件。</p></div>
<div class="step"><h3>下载安装</h3><p>凭申请编号查询状态并下载 res_center.lic,放入 ResLib 的 config\lic\ 目录。</p></div>
</div>
<p class="section-desc mt-32">授权与机器 MAC 地址绑定;未授权时装配功能隐藏,保障企业版权。支持按企业需求定制产品版本与扩展功能。</p>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
</body>
</html>
-64
View File
@@ -1,64 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="robots" content="noindex, nofollow">
<title>内部资源 | Easy Data Collector</title>
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collector">
<span class="brand-name">Easy Data Collector</span>
</a>
<nav class="main-nav">
<a href="/">博客</a>
<a href="/reslib/">ResLib</a>
<a href="/reslib/apply">申请 License</a>
<a href="/reslib/status">查询 / 下载</a>
<a href="/reslib/package">资源包获取</a>
<a href="/neural/">Neural Research</a>
<a href="http://124.220.63.9:25000">Research Digest</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="section">
<div class="container">
<h1 class="section-title">内部资源入口</h1>
<p class="section-desc">以下服务仅限内网 / 未公开发布,请勿对外传播。</p>
<div class="grid">
<a class="card card-link" href="http://124.220.63.9:10000">
<div class="icon">⚙</div><h3>Engineer Craft</h3><p>工程实践与工艺设计平台(内网端口 10000)。</p>
</a>
<a class="card card-link" href="http://124.220.63.9:20000">
<div class="icon">◉</div><h3>Digital Twin</h3><p>数字孪生平台(内网端口 20000)。</p>
</a>
<a class="card card-link" href="http://124.220.63.9:30000">
<div class="icon">⌥</div><h3>Gitea Project</h3><p>代码托管与版本管理(内网端口 30000)。</p>
</a>
<a class="card card-link" href="/neural/">
<div class="icon">◈</div><h3>Neural Research</h3><p>NeuralMix AI 混合终点卷积判断引擎(内部介绍页)。</p>
</a>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<span>Copyright &copy; 2026 Easy Data Collector. All rights reserved.</span>
<span><a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a></span>
</div>
</footer>
</body>
</html>
+71 -18
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Neural Research - NeuralMix AI | Easy Data Collector</title>
<title>Neural Research - NeuralMix AI | Easy Data Collection</title>
<meta name="description" content="NeuralMix AI —— 面向工业混合机的智能终点判定系统:ModbusRTU 高速采集、TimescaleDB 时序存储、1D-CNN 深度学习实时评估混合均匀度,参数持续稳定即判定混合完成。">
<meta name="keywords" content="NeuralMix, 混合终点判定, 1D CNN, TimescaleDB, ModbusRTU, 深度学习, 工业智能">
<link rel="stylesheet" href="/static/css/style.css">
@@ -15,27 +15,62 @@
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collector">
<span class="brand-name">Easy Data Collector</span>
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav">
<a href="/">博客</a>
<a href="/reslib/">ResLib</a>
<a href="/reslib/apply">申请 License</a>
<a href="/reslib/status">查询 / 下载</a>
<a href="/reslib/package">资源包获取</a>
<a href="/neural/" class="active">Neural Research</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a class="active" href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="hero">
<section class="page-hero">
<div class="container">
<h1>NeuralMix AI</h1>
<p class="hero-sub">混合终点卷积判断引擎 —— 面向工业混合机(搅拌机)的智能终点判定系统:ModbusRTU 高速采集 → TimescaleDB 时序存储 → 1D-CNN 深度学习实时评估混合均匀度,参数持续稳定即判定混合完成(提示 / 自动停机)。</p>
<p class="hero-eyebrow">前沿技术研究 · DEEP LEARNING</p>
<h1>NeuralMix AI<br>混合终点卷积判断引擎</h1>
<p class="page-hero-sub">面向工业混合机(搅拌机)的智能终点判定系统:ModbusRTU 高速采集 → Redis 高速缓冲 → TimescaleDB 时序存储 → 1D-CNN 深度学习实时评估混合均匀度,参数持续稳定即判定混合完成(提示 / 自动停机)。</p>
<div class="hero-actions">
<a href="http://124.220.63.9:30000/admin/NeuralMix" class="btn btn-light">项目主页(Gitea)</a>
<a href="/research/" class="btn btn-outline-light">返回前沿技术研究</a>
</div>
<div class="hero-stats">
<div class="hero-stat"><b>0.15s</b><span>ModbusRTU 采样周期</span></div>
<div class="hero-stat"><b>1D-CNN</b><span>实时 + 静态参数融合</span></div>
<div class="hero-stat"><b>3</b><span>Windows / Ubuntu / Jetson</span></div>
</div>
</div>
</section>
@@ -43,9 +78,9 @@
<div class="container">
<h2 class="section-title">系统架构</h2>
<div class="grid">
<div class="card"><div class="icon">⇅</div><h3>数据采集</h3><p>ModbusRTU 串口 0.15s 高速采样变频器 / 电机运行数据,批量缓冲 100 条 / 5 秒多值写入,采集性能稳定。</p></div>
<div class="card"><div class="icon">⇅</div><h3>数据采集</h3><p>ModbusRTU 串口 0.15s 高速采样变频器 / 电机运行数据,切片先进 Redis 再批量转储 SQL,防高频写库崩溃。</p></div>
<div class="card"><div class="icon">▤</div><h3>时序存储</h3><p>TimescaleDB 超表按天分块、自动保留 2 年、可压缩;MySQL 备份库与主库失败自动回退,数据双保险。</p></div>
<div class="card"><div class="icon">◈</div><h3>深度学习判定</h3><p>StabilityPredictor(1D-CNN 回归,50 点滑窗)输出稳定度分数 [0,1],参数持续稳定即判定混合完成。</p></div>
<div class="card"><div class="icon">◈</div><h3>深度学习判定</h3><p>StabilityPredictor(1D-CNN 回归,50 点滑窗 + 批次静态工艺参数融合)输出稳定度分数,参数持续稳定即判定混合完成。</p></div>
<div class="card"><div class="icon">⌥</div><h3>本地视窗</h3><p>NeuralMix AI.exe 免安装运行,局域网连接采集端实时监控、在线重训练、数据库管理一应俱全。</p></div>
</div>
</div>
@@ -80,15 +115,33 @@
<section class="section section-alt">
<div class="container narrow">
<h2 class="section-title">技术栈</h2>
<p class="section-desc">Python · PyTorch(1D-CNN / GTU-CNN)· TimescaleDB / PostgreSQL · ModbusRTU · PyInstaller(13.9MB 轻量打包)· Tkinter 工程化 GUI</p>
<p class="section-desc">Python · PyTorch(1D-CNN / GTU-CNN)· Redis · TimescaleDB / PostgreSQL · ModbusRTU · PyInstaller(轻量打包)· Tkinter 工程化 GUI</p>
<div class="pill-row">
<span class="pill">Python</span>
<span class="pill">PyTorch</span>
<span class="pill">1D-CNN</span>
<span class="pill">Redis</span>
<span class="pill">TimescaleDB</span>
<span class="pill">ModbusRTU</span>
<span class="pill">Jetson</span>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<span>Copyright &copy; 2026 Easy Data Collector. All rights reserved.</span>
<span><a href="/links.html">内部资源</a> · <a href="/admin">管理页面</a> · <a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a></span>
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
+60 -18
View File
@@ -15,43 +15,85 @@
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collector">
<span class="brand-name">Easy Data Collector</span>
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav">
<a href="/blog/">博客</a>
<a href="/reslib/">ResLib</a>
<a href="/reslib/apply">申请 License</a>
<a href="/reslib/status">查询 / 下载</a>
<a href="/reslib/package" class="active">资源包获取</a>
<a href="/neural/">Neural Research</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a class="active" href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main class="section">
<div class="container narrow">
<h2 class="section-title">资源包获取</h2>
<p class="section-desc">资源包(部署文件、标准件库样例、说明文档等)<b>仅对 License 审核通过的用户提供</b>,请凭申请编号验证身份。内含标准化配件、BPE 卫生级配件、食品 / 医药 / 包装工程常用配件与气动系统配件等标准件库。</p>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">LICENSE · 资源包</p>
<h1>资源包获取</h1>
<p class="page-hero-sub">资源包(部署文件、标准件库样例、说明文档等)仅对 License 审核通过的用户提供,请凭申请编号验证身份。</p>
</div>
</section>
<section class="section" style="padding-top: 8px;">
<div class="container narrow">
<div class="form-card">
<div class="form-group">
<p class="section-desc mt-0">内含标准化配件、BPE 卫生级配件、食品 / 医药 / 包装工程常用配件与气动系统配件等标准件库。</p>
<div class="form-group mt-24">
<label for="rid">申请编号</label>
<input type="text" id="rid" class="mono" placeholder="如:20260813-201500-A1B2C3" autocomplete="off">
</div>
<button type="button" id="verify" class="btn btn-primary btn-block">验证并获取</button>
<div id="result"></div>
</div>
<p class="form-tip text-soft">未通过审核?请先查看 <a href="/license/status">查询 / 下载</a> 或 <a href="/license/apply">重新申请</a>。</p>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<span>Copyright &copy; 2026 Easy Data Collector. All rights reserved.</span>
<span><a href="/links.html">内部资源</a> · <a href="/admin">管理页面</a> · <a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a></span>
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
@@ -74,7 +116,7 @@
"<b>身份验证通过</b>(申请编号 <span class='mono'>" + rid + "</span>)<br><br>" +
"<b>可用资源包:</b><br>";
data.files.forEach(function (f) {
html += "<div style='margin:10px 0;'>📦 <span class='mono'>" + f + "</span><br>" +
html += "<div style='margin:10px 0;'>▣ <span class='mono'>" + f + "</span><br>" +
"<a class='btn btn-primary btn-sm' style='margin-top:6px;' href='/api/package/download/" +
encodeURIComponent(rid) + "/" + encodeURIComponent(f) + "' download>下载</a></div>";
});
+176
View File
@@ -0,0 +1,176 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>前沿技术研究 | Easy Data Collection</title>
<meta name="description" content="前沿技术研究 —— Research Digest 国际顶尖科研热榜、Neural Research 混合终点卷积判断引擎与 ResLib 资源中心管理器。">
<meta name="keywords" content="前沿技术研究, Research Digest, NeuralMix, 1D-CNN, ResLib, Creo 标准件库">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">RESEARCH · 前沿技术研究</p>
<h1>把研究成果<br>变成可落地的工程能力</h1>
<p class="page-hero-sub">从国际顶刊成果聚合、深度学习算法研究,到工业软件内核研发 —— 三条主线持续探索,并全部开放介绍与体验入口。</p>
<div class="hero-actions">
<a href="http://124.220.63.9:25000" class="btn btn-light">打开 Research Digest</a>
<a href="/blog/" class="btn btn-outline-light">阅读研究记录</a>
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="feature" style="padding-top: 0;">
<div class="feature-copy">
<span class="feature-tag">RESEARCH DIGEST</span>
<h2>国际顶尖科研热榜</h2>
<p>自动检索国际顶尖期刊、权威机构与行业网站的最新核心研究成果,按 21 大领域分类,由 AI 深度理解后输出中文摘要、技术突破总结与 0-5 突破度评分。</p>
<ul class="feature-list">
<li>31 个信源:Nature / Science / NEJM / 上市公司公告 / EI 收录期刊等</li>
<li>每日 06:00 自动检索,空领域自动从历史缓存回填</li>
<li>DeepSeek 深度分析:中文标题、摘要、突破度与评分理由</li>
<li>动态网页呈现:领域网格导航、子主题过滤、搜索与多维排序</li>
</ul>
<div class="feature-actions">
<a href="http://124.220.63.9:25000" class="btn btn-primary">访问热榜</a>
</div>
</div>
<div class="feature-visual" style="--v1:#0a6cff;--v2:#22c8ff">
<span class="visual-glyph">⌕</span>
<span class="visual-chip chip-a">21 个领域</span>
<span class="visual-chip chip-b">AI 突破度评分 0-5</span>
<span class="visual-chip chip-c">每日 06:00 更新</span>
</div>
</div>
<div class="feature reverse">
<div class="feature-copy">
<span class="feature-tag">NEURAL RESEARCH</span>
<h2>NeuralMix AI 混合终点卷积判断引擎</h2>
<p>面向工业混合机的智能终点判定系统:ModbusRTU 高速采集 → Redis 高速缓冲 → TimescaleDB 存储 → 1D-CNN 深度学习实时评估混合均匀度,参数持续稳定即判定混合完成。</p>
<ul class="feature-list">
<li>实时 13 项参数 + 12 项静态工艺参数融合建模</li>
<li>阈值 + 连续稳定(收敛制)双条件判定,可联动自动停机</li>
<li>Redis 缓冲防高频写库崩溃,MySQL 备份与自动回退</li>
<li>支持 Windows / Ubuntu / NVIDIA Jetson 边缘部署</li>
</ul>
<div class="feature-actions">
<a href="/research/neural/" class="btn btn-primary">了解 NeuralMix</a>
</div>
</div>
<div class="feature-visual" style="--v1:#5b3df5;--v2:#22c8ff">
<span class="visual-glyph">◈</span>
<span class="visual-chip chip-a">1D-CNN</span>
<span class="visual-chip chip-b">0.15s 高速采样</span>
</div>
</div>
<div class="feature">
<div class="feature-copy">
<span class="feature-tag">RESLIB</span>
<h2>资源中心管理器 ResLib</h2>
<p>面向 Creo 7.0+ 的企业级标准零部件管理库:标准件浏览、3D 预览、搜索过滤、快速装配,配套自研 LIC 授权体系与在线申请审批。</p>
<ul class="feature-list">
<li>TreeView 目录树 + 零件列表,直接扫描 .prt / .asm 并去重保留最高版本</li>
<li>OpenGL 三角面片实时预览,装配体递归解析</li>
<li>一键装配与参数定位(X/Y/Z/RX/RY/RZ)精确装配</li>
<li>MAC 绑定 LIC 授权,支持按企业需求定制版本与功能</li>
</ul>
<div class="feature-actions">
<a href="/research/reslib/" class="btn btn-primary">了解 ResLib</a>
<a href="/license/" class="btn btn-ghost">License 申请</a>
</div>
</div>
<div class="feature-visual" style="--v1:#007a5e;--v2:#22c8ff">
<span class="visual-glyph">▤</span>
<span class="visual-chip chip-a">Creo 7.0 - 10.0</span>
<span class="visual-chip chip-b">3D 实时预览</span>
</div>
</div>
</div>
</section>
<section class="section section-alt">
<div class="container">
<div class="cta-band">
<div>
<h2>研究之外,还有一整套自研工具</h2>
<p>时序节拍设计、文件预览组件、工程设计平台、工控交互与轻量 ERP,均已投入实际项目使用。</p>
</div>
<div class="hero-actions">
<a href="/tools/" class="btn btn-light">进入工具开发</a>
</div>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
</body>
</html>
+123
View File
@@ -0,0 +1,123 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="robots" content="noindex, nofollow">
<title>资源中心 | Easy Data Collection</title>
<meta name="description" content="资源中心 —— 私有服务器与内部服务的统一入口:代码托管、设计平台、数字孪生、科研热榜与系统管理。">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link active" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">RESOURCES · 资源中心</p>
<h1>私有服务器与服务入口</h1>
<p class="page-hero-sub">以下服务运行于私有服务器,仅限内部使用与项目协作,请勿对外传播。</p>
</div>
</section>
<section class="section">
<div class="container">
<div class="grid">
<a class="card card-link" href="http://124.220.63.9:30000">
<div class="icon">⌥</div><h3>Gitea 代码托管</h3>
<p>所有自研项目的源码仓库、Issue 与 Wiki(私有端口 30000)。</p>
<span class="more">打开 →</span>
</a>
<a class="card card-link" href="http://124.220.63.9:10000">
<div class="icon">⚙</div><h3>Engineer Craft 平台</h3>
<p>工程实践与工艺设计平台的部署实例(私有端口 10000)。</p>
<span class="more">打开 →</span>
</a>
<a class="card card-link" href="http://124.220.63.9:20000">
<div class="icon">◉</div><h3>Digital Twin 数字孪生</h3>
<p>数字孪生产线平台部署实例(私有端口 20000)。</p>
<span class="more">打开 →</span>
</a>
<a class="card card-link" href="http://124.220.63.9:25000">
<div class="icon">⌕</div><h3>Research Digest</h3>
<p>国际顶尖科研热榜动态网页(私有端口 25000)。</p>
<span class="more">打开 →</span>
</a>
<a class="card card-link" href="/research/neural/">
<div class="icon">◈</div><h3>Neural Research</h3>
<p>NeuralMix AI 混合终点卷积判断引擎介绍页。</p>
<span class="more">打开 →</span>
</a>
<a class="card card-link" href="/admin">
<div class="icon">⛨</div><h3>License 管理后台</h3>
<p>ResLib License 申请审批与授权文件管理(需管理员密码)。</p>
<span class="more">打开 →</span>
</a>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
</body>
</html>
+59 -17
View File
@@ -3,7 +3,8 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>查询 / 下载 License - ResLib</title>
<title>查询 / 下载 License - Easy Data Collection</title>
<meta name="description" content="ResLib License 状态查询与授权文件下载:输入申请编号查询审批状态,通过后下载 res_center.lic。">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
@@ -13,28 +14,58 @@
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="ResLib">
<span class="brand-name">ResLib</span>
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav">
<a href="/blog/">博客</a>
<a href="/reslib/">ResLib</a>
<a href="/reslib/apply">申请 License</a>
<a href="/reslib/status" class="active">查询 / 下载</a>
<a href="/reslib/package">资源包获取</a>
<a href="/neural/">Neural Research</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a class="active" href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main class="section">
<div class="container narrow">
<h2 class="section-title">查询申请状态</h2>
<p class="section-desc">输入申请时获得的申请编号。</p>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">LICENSE · 查询 / 下载</p>
<h1>查询申请状态</h1>
<p class="page-hero-sub">输入申请时获得的申请编号,查询审批进度;审核通过后可直接下载授权文件。</p>
</div>
</section>
<section class="section" style="padding-top: 8px;">
<div class="container narrow">
<div class="form-card">
<div class="form-group">
<label for="rid">申请编号</label>
@@ -43,13 +74,24 @@
<button type="button" id="query" class="btn btn-primary btn-block">查询</button>
<div id="result"></div>
</div>
<p class="form-tip text-soft">还没有申请编号?先前往 <a href="/license/apply">申请 License</a>。</p>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<span>Copyright &copy; 2026 SinCos. All rights reserved.</span>
<span><a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a></span>
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
+141
View File
@@ -0,0 +1,141 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>EDC Lite ERP 轻量资源计划系统 | Easy Data Collection</title>
<meta name="description" content="EDC Lite ERP —— Easy Data Collection Lite ERP 轻量资源计划与制造管理系统研究项目:物料编码、进销存、配方与扫码称配、数据大屏、权限审计全链路。">
<meta name="keywords" content="EDC Lite ERP, Lite ERP, 物料编码, 进销存, 生产制造, 数据大屏">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a class="active" href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">工具开发 · LITE ERP</p>
<h1>EDC Lite ERP</h1>
<p class="page-hero-sub">Easy Data Collection Lite ERP —— 面向流程工业的轻量资源计划与制造管理系统研究项目:以 MySQL 为唯一数据源,把物料、生产、财务、审计装进一套免安装桌面软件。</p>
<div class="hero-actions">
<a href="/tools/" class="btn btn-light">返回工具开发</a>
<a href="/blog/" class="btn btn-outline-light">阅读研究记录</a>
</div>
<div class="hero-stats">
<div class="hero-stat"><b>16</b><span>核心数据表</span></div>
<div class="hero-stat"><b>36</b><span>项细化权限</span></div>
<div class="hero-stat"><b>多终端</b><span>同一数据库实时一致</span></div>
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="section-head">
<h2 class="section-title">系统能力</h2>
<p class="section-desc">覆盖 物料编码 → 进销存 → 生产制造(配方 / 计划 / 称配)→ 财务结算审计 → 数据大屏 → 流程与权限 → 操作审计 的完整链路。</p>
</div>
<div class="grid">
<div class="card"><div class="icon">▣</div><h3>物料编码引擎</h3><p>分类 - 组 - 子类 + 规格序号 - 顺序号 - 供应商 六级编码规则;物料创建自动计算顺序号、生成编码与二维码,批次码规范统一。</p></div>
<div class="card"><div class="icon">⇅</div><h3>进销存</h3><p>仓库与库位、入库 / 出库申请、单据审核、财务结算与财务审计;未审核申请不改变库存,出库不足自动阻止。</p></div>
<div class="card"><div class="icon">⚙</div><h3>生产制造</h3><p>配方成分 + SOP、生产计划审核下达、扫码称配(黄 / 绿状态)、按钮上传、偏差自动计算、数据纠错审核留痕。</p></div>
<div class="card"><div class="icon">◍</div><h3>数据大屏</h3><p>条件构建器(类 Navicat):选表 → 选分组字段 → 统计方式 → 筛选 → 预览 → 自动生成 SQL 与柱状 / 折线 / 饼图。</p></div>
<div class="card"><div class="icon">⛨</div><h3>流程与权限</h3><p>出入库 / 配方 / 生产计划 / 数据纠错四类流程节点与角色可配置;多角色 + 36 项细化权限,无权限的菜单与接口双重拦截。</p></div>
<div class="card"><div class="icon">✎</div><h3>操作审计</h3><p>登录、物料与字典维护、出入库与审核、结算、生产与纠错、用户与设置变更全部留痕,写入数据库 audit_log 表并可模糊查询。</p></div>
<div class="card"><div class="icon">▦</div><h3>项目管理</h3><p>项目信息创建、节点泳道编辑、信息查询与甘特进度表;项目负责人仅能查看 / 管理自己负责的项目。</p></div>
<div class="card"><div class="icon">⇄</div><h3>数据一致性</h3><p>MySQL 为唯一数据源,多台电脑连接同一数据库即实时一致,无需同步;未连接数据库时显示本地缓存(只读)。</p></div>
<div class="card"><div class="icon">⌥</div><h3>授权许可</h3><p>授权文件与本机 MAC 地址 + 截止日期绑定;未授权或过期时自动隐藏项目管理、进销存、生产制造等受限模块。</p></div>
</div>
</div>
</section>
<section class="section section-alt">
<div class="container">
<h2 class="section-title">业务流程</h2>
<div class="steps">
<div class="step"><h3>物料创建</h3><p>选类别 → 组 → 子类 → 规格 → 供应商,系统自动生成编码与二维码。</p></div>
<div class="step"><h3>出入库审核</h3><p>操作员提交申请 → 审核员审核通过后库存生效 → 财务结算与审计。</p></div>
<div class="step"><h3>配方与计划</h3><p>工艺员编制配方 / 生产计划 → 审核员审核 → 管理员下达任务。</p></div>
<div class="step"><h3>扫码称配</h3><p>库存联动校验 → 扫码变黄 → 称重上传变绿 → 结束批次打包上传。</p></div>
</div>
</div>
</section>
<section class="section">
<div class="container narrow">
<h2 class="section-title">架构与技术栈</h2>
<p class="section-desc">Electron 免安装目录版(EDC_Lite_ERP.exe) · MySQL 唯一数据源(16 张数据表) · 本地 XML / JSON 离线缓存兜底。</p>
<div class="pill-row">
<span class="pill">Electron</span>
<span class="pill">MySQL</span>
<span class="pill">JavaScript</span>
<span class="pill">扫码枪 / 物理按钮接入</span>
<span class="pill">ESP32 采集板</span>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
</body>
</html>
+141
View File
@@ -0,0 +1,141 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Engineer Craft 工程设计平台 | Easy Data Collection</title>
<meta name="description" content="Engineer Craft —— 流程工业智能设计平台:31 个工程计算模块、URS 需求与计算书、项目中心、AI 工艺诊断与审查存档。">
<meta name="keywords" content="Engineer Craft, 工程计算, URS, 流程工业, AI 审查, 设计交付">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a class="active" href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">工具开发 · WEB 平台</p>
<h1>Engineer Craft<br>流程工业智能设计平台</h1>
<p class="page-hero-sub">把工程计算、URS 需求、计算书与 AI 审查放进同一条交付链 —— 从工艺参数到项目文档,一次输入、全程复用。</p>
<div class="hero-actions">
<a href="http://124.220.63.9:30000/admin/Engineer-Craft" class="btn btn-light">项目主页(Gitea)</a>
<a href="/tools/" class="btn btn-outline-light">返回工具开发</a>
</div>
<div class="hero-stats">
<div class="hero-stat"><b>31</b><span>工程计算模块</span></div>
<div class="hero-stat"><b>154</b><span>自动化测试项</span></div>
<div class="hero-stat"><b>26+</b><span>计算视图页面</span></div>
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="section-head">
<h2 class="section-title">平台能力</h2>
<p class="section-desc">插件化架构 + 专业化引擎 + 项目化交付,覆盖流程工业设计的日常场景。</p>
</div>
<div class="grid">
<div class="card"><div class="icon">⚙</div><h3>工程计算引擎</h3><p>螺栓、ASME-BPE、通用计算、冷却、CIP、旋风分离、气力输送、容积、螺杆、气动、换热等专业引擎持续扩充。</p></div>
<div class="card"><div class="icon">▤</div><h3>模块化插件注册表</h3><p>核心注册表 defineModule / getSections / buildModuleRoutes,新增模块 = 一个注册文件 + 聚合一行,路由与导航自动派生。</p></div>
<div class="card"><div class="icon">✎</div><h3>URS 与计算书</h3><p>需求条目管理、计算书自动生成、设计交付链描述版,文档与计算数据同源。</p></div>
<div class="card"><div class="icon">▦</div><h3>项目中心</h3><p>项目信息创建、节点编辑、信息查询与进度管理,工程数据按项目归档。</p></div>
<div class="card"><div class="icon">◈</div><h3>AI 工艺诊断</h3><p>首页集成 AI 工艺诊断:流程图生成 + 方案拍板 + drawio 下载;AI 审查结果存档留痕。</p></div>
<div class="card"><div class="icon">⚡</div><h3>需求速填</h3><p>气力输送等页面支持需求速填,把常用工艺参数模板化,快速生成规范需求。</p></div>
<div class="card"><div class="icon">⛨</div><h3>质量保障</h3><p>共 12 个测试文件、154 项测试锁定 AI 标记、侧栏、导出、注册表等关键链路,vue-tsc 类型检查。</p></div>
<div class="card"><div class="icon">◍</div><h3>纯 Web 化</h3><p>已移除 Electron 桌面端,浏览器直接访问;本地存储与导出链路完整保留。</p></div>
<div class="card"><div class="icon">⇱</div><h3>导出与交付</h3><p>计算书、流程图(drawio)、交付链接口,可对接后续设计流程;DXF 导出能力已预留。</p></div>
</div>
</div>
</section>
<section class="section section-alt">
<div class="container narrow">
<h2 class="section-title">技术栈</h2>
<p class="section-desc">Vite · Vue 3 SFC · TypeScript · Pinia · Vue Router · Vitest</p>
<div class="pill-row">
<span class="pill">Vite</span>
<span class="pill">Vue 3</span>
<span class="pill">TypeScript</span>
<span class="pill">Pinia</span>
<span class="pill">Vue Router</span>
<span class="pill">Vitest</span>
</div>
</div>
</section>
<section class="section">
<div class="container">
<h2 class="section-title">路线图</h2>
<div class="grid">
<div class="card"><h3>P0 - P2 · 已完成</h3><p>SPA 化、项目中心 / URS / 计算书、AI 审查存档、需求速填与首页 AI 工艺诊断。</p></div>
<div class="card"><h3>P3 · 进行中</h3><p>STEP 生成 —— 让工程计算结果直接产出可用的三维模型数据。</p></div>
<div class="card"><h3>持续迭代</h3><p>DXF 导出研究、更多工艺引擎、交付链集成。</p></div>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
</body>
</html>
+147
View File
@@ -0,0 +1,147 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The Five Phases Observer 五行观察者 | Easy Data Collection</title>
<meta name="description" content="五行观察者 · GAP 公理协议 —— 90 域观测协议与 720 个可证伪锚点,让重大决策可以被编译、记录与证伪。">
<meta name="keywords" content="五行观察者, GAP 公理协议, 观测协议, 可证伪锚点, 决策协议">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a class="active" href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">工具开发 · 公理协议</p>
<h1>五行观察者<br>GAP 公理协议</h1>
<p class="page-hero-sub">面对重大决策,通常只有两种选择:听专家的(但专家会错且互不一致),或者凭直觉赌(但直觉经不起复盘)。这里提供第三种选择 —— 你自己编译出「应该怎么做」。</p>
<div class="hero-actions">
<a href="http://124.220.63.9:30000/admin/The-Five-Phases-Observer" class="btn btn-light">项目主页(Gitea)</a>
<a href="/tools/" class="btn btn-outline-light">返回工具开发</a>
</div>
<div class="hero-stats">
<div class="hero-stat"><b>90 域</b><span>观测协议</span></div>
<div class="hero-stat"><b>720</b><span>可证伪锚点</span></div>
<div class="hero-stat"><b>四层</b><span>协议栈</span></div>
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="section-head">
<h2 class="section-title">它是什么</h2>
<p class="section-desc">一套可操作的公理协议 —— 不需要依赖任何专家、任何权威、任何「大家都这么说」。</p>
</div>
<div class="grid">
<div class="card"><div class="icon">✦</div><h3>第三种选择</h3><p>不依赖专家权威、不靠不可复盘的直觉,而是用公理协议自行编译决策分支。</p></div>
<div class="card"><div class="icon">▤</div><h3>四层协议栈</h3><p>protocols/ 提供 GAP 核心协议与扩展工程协议,从单节点编译器到工程落地。</p></div>
<div class="card"><div class="icon">◍</div><h3>90 域观测协议</h3><p>observations/ 覆盖人工智能、金融、教育、法律、计算等领域,每个域给出范式协议。</p></div>
<div class="card"><div class="icon">⌖</div><h3>720 个可证伪锚点</h3><p>每个判断都连接到可检验的锚点,拒绝不可验证的结论。</p></div>
<div class="card"><div class="icon">⚖</div><h3>M₃ 裁决与证伪</h3><p>你编译出的方案分支,可能被 M₃ 裁决证伪并冻结 —— 系统用来推翻自己,而不是证明自己对。</p></div>
<div class="card"><div class="icon">✎</div><h3>后果义务</h3><p>每次决策须记录后果并如实登记观测,让决策质量可以被长期复盘。</p></div>
<div class="card"><div class="icon">⛨</div><h3>证据链固化</h3><p>tsa / timestamp_anchor / 服务器时间校验与 Git 同步工具链,为协议文本提供时间戳锚定。</p></div>
<div class="card"><div class="icon">⇄</div><h3>开放共建</h3><p>axioms/ 公理基础与白皮书、ROADMAP 状态公开,任何人都可以提出证伪与修正。</p></div>
</div>
</div>
</section>
<section class="section section-alt">
<div class="container narrow">
<h2 class="section-title">接入条件(五项消耗)</h2>
<p class="section-desc">如果你愿意为上述能力支付以下代价,就可以使用它。同意全部五项,你已是接入者 —— 不需要注册,不需要签名。</p>
<div class="grid">
<div class="card"><h3>1 · 认知让步</h3><p>放弃用「大家都这么认为」「这不符合惯例」「这让我不舒服」来评判编译结果。</p></div>
<div class="card"><h3>2 · 放弃自我确认</h3><p>不得用 GAP 来证明「自己是对的」。</p></div>
<div class="card"><h3>3 · 接受超前性</h3><p>编译结果可能令你「不信」—— 这不是缺陷,是指标。</p></div>
<div class="card"><h3>4 · 后果义务</h3><p>每次决策须记录后果,并如实登记观测。</p></div>
<div class="card"><h3>5 · 证伪风险</h3><p>你基于 GAP 编译出的方案分支,可能被 M₃ 裁决证伪并冻结。</p></div>
</div>
<p class="section-desc mt-24"><b>不同意任一条 → 请关闭此页面。同意全部五项 → 你已是接入者。</b></p>
</div>
</section>
<section class="section">
<div class="container narrow">
<h2 class="section-title">仓库结构</h2>
<div class="grid">
<div class="card"><h3>protocols/</h3><p>GAP 核心协议(四层协议栈 + 扩展工程协议)。</p></div>
<div class="card"><h3>observations/</h3><p>90 域观测协议及 720 个可证伪锚点。</p></div>
<div class="card"><h3>axioms/</h3><p>公理基础 &amp; 白皮书。</p></div>
<div class="card"><h3>ROADMAP.md</h3><p>协议状态与下一步计划。</p></div>
</div>
<div class="pill-row mt-24">
<span class="pill">Python 工具链</span>
<span class="pill">Git 证据链</span>
<span class="pill">时间戳锚定</span>
<span class="pill">Markdown 协议文本</span>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
</body>
</html>
+143
View File
@@ -0,0 +1,143 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sequence-Diagram 时序图设计器 | Easy Data Collection</title>
<meta name="description" content="Sequence Diagram Studio —— 面向 PLC 流程节拍与相位角设计的 Flutter 桌面软件:条形节拍与圆周节拍双视图、FS/SS 依赖、关键路径、SVG/PNG 导出。">
<meta name="keywords" content="Sequence-Diagram, 时序图设计器, PLC 节拍, 相位角, 甘特图, Flutter">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a class="active" href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">工具开发 · FLUTTER DESKTOP</p>
<h1>时序图设计器<br>Sequence Diagram Studio</h1>
<p class="page-hero-sub">面向 PLC 流程节拍设计 / 相位角设计的桌面设计软件。条形节拍与圆周节拍两种视图共享同一份数据,让动作顺序、依赖关系与关键路径一目了然。</p>
<div class="hero-actions">
<a href="http://124.220.63.9:30000/admin/Sequence-Diagram" class="btn btn-light">项目主页(Gitea)</a>
<a href="/tools/" class="btn btn-outline-light">返回工具开发</a>
</div>
<div class="hero-stats">
<div class="hero-stat"><b>双视图</b><span>条形节拍 ⇄ 圆周节拍</span></div>
<div class="hero-stat"><b>1000+</b><span>动作仍保持 60 fps</span></div>
<div class="hero-stat"><b>V1.1.1</b><span>Flutter Windows 正式版</span></div>
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="section-head">
<h2 class="section-title">已实现功能</h2>
<p class="section-desc">从节拍建模、拖拽编辑到导出交付,覆盖 PLC 工艺设计的完整工作流。</p>
</div>
<div class="grid">
<div class="card"><div class="icon">⇄</div><h3>两种视图,一份数据</h3><p>条形节拍(甘特 / 流程图 + 依赖箭头)与圆周节拍(同心圆相位图,12 点钟起始,一圈 = 一个循环)顶部一键切换。</p></div>
<div class="card"><div class="icon">↦</div><h3>顺序一目了然</h3><p>绿色实线箭头 = FS 严格顺序(完成后启动),琥珀虚线 = SS 并行重叠(可提前启动),关键路径带 ★ 高亮。</p></div>
<div class="card"><div class="icon">◷</div><h3>专业单位体系</h3><p>时间 ms / s / min、相位 ° / %、显示精度可配,工艺参数面板(F2)统一管理并内置换算表。</p></div>
<div class="card"><div class="icon">⚡</div><h3>响应快</h3><p>自研 Canvas 渲染,双层缓存 + 脏区重绘 + 空间索引,1000 个动作仍保持 60 fps。</p></div>
<div class="card"><div class="icon">✎</div><h3>拖拽编辑与工位管理</h3><p>拖拽编辑相位、拖端点改持续角、Shift + 拖拽改层、双击空白新建动作;工位可增删、改名、调色、排序。</p></div>
<div class="card"><div class="icon">▦</div><h3>节拍统计</h3><p>循环周期 / 动作数 / 关键路径 / 最大并行度 / 相位覆盖率 / 瓶颈工位,只展示可由项目数据推导的指标。</p></div>
<div class="card"><div class="icon">☀</div><h3>深色 / 浅色双主题</h3><p>右上角一键切换(F3),语义颜色不变,导出 SVG 与屏幕一致。</p></div>
<div class="card"><div class="icon">⤓</div><h3>导出 SVG / PNG</h3><p>SVG 矢量、分层、带语义 id 与 data-* 元数据,可直接进工艺卡与 MES;PNG 按 2 倍像素比导出。</p></div>
<div class="card"><div class="icon">⛨</div><h3>可靠性与帮助</h3><p>自动定时快照 + 启动崩溃恢复 + .bak 备份;应用内帮助中心(F1)与完整使用文档。</p></div>
</div>
</div>
</section>
<section class="section section-alt">
<div class="container narrow">
<h2 class="section-title">技术栈</h2>
<p class="section-desc">Flutter 3.29+(Desktop) · CustomPainter 自绘 · Riverpod · 不可变模型 + Command 撤销栈 · 纯 Dart 几何算法 · 自研 SVG 序列化器 · JSON(.seq.json)持久化 · 主题 Token 化</p>
<div class="pill-row">
<span class="pill">Flutter 3.29+</span>
<span class="pill">CustomPainter</span>
<span class="pill">Riverpod</span>
<span class="pill">Command 撤销栈</span>
<span class="pill">SVG 序列化</span>
<span class="pill">JSON 持久化</span>
</div>
</div>
</section>
<section class="section">
<div class="container">
<h2 class="section-title">路线图</h2>
<div class="grid">
<div class="card"><h3>M1 · 基础建模</h3><p>数据模型 + 单位体系 + JSON 存取 + 条形视图(渲染 / 缩放 / 平移)。</p></div>
<div class="card"><h3>M2 · 双视图交互</h3><p>圆周视图 + 双视图切换动画 + 拖拽吸附 + 属性面板 + 撤销重做。</p></div>
<div class="card"><h3>M3 · 导出与统计</h3><p>SVG / PNG 导出 + 依赖编辑 + 关键路径与统计 + 深浅主题 + Golden 测试。</p></div>
<div class="card"><h3>M4 · 产线对接</h3><p>PLC 点位对接(OPC UA / 三菱 MC / Modbus)+ 工艺卡 PDF + 自动节拍优化。</p></div>
</div>
<p class="section-desc mt-32">设计人:呆头鹅 · 版本 V1.1.1 · Copyright © 2026 呆头鹅。保留所有权利。</p>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
</body>
</html>
+143
View File
@@ -0,0 +1,143 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Uni-Viewer 文件预览组件 | Easy Data Collection</title>
<meta name="description" content="Uni-Viewer —— 面向企业后台、内网和私有化系统的纯前端文件预览组件:271 个扩展名、47 条预览链路,Office / PDF / CAD / 压缩包 / DICOM 全覆盖。">
<meta name="keywords" content="Uni-Viewer, 文件预览, 私有化部署, Office 预览, CAD 预览, Web Component">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a class="active" href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">工具开发 · WEB COMPONENT</p>
<h1>Uni-Viewer</h1>
<p class="page-hero-sub">面向企业后台、内网和私有化系统的纯前端文件预览组件。私有文件留在浏览器内,无需服务端转码,即可预览 Office、PDF/OFD、CAD、压缩包、邮件、图片、音视频和代码。</p>
<div class="hero-actions">
<a href="http://124.220.63.9:30000/admin/Uni-viewer" class="btn btn-light">项目主页(Gitea)</a>
<a href="/tools/" class="btn btn-outline-light">返回工具开发</a>
</div>
<div class="hero-stats">
<div class="hero-stat"><b>271</b><span>已注册扩展名</span></div>
<div class="hero-stat"><b>47</b><span>预览链路</span></div>
<div class="hero-stat"><b>8</b><span>框架 Full 包</span></div>
<div class="hero-stat"><b>v3.1.1</b><span>当前稳定版</span></div>
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="section-head">
<h2 class="section-title">核心能力</h2>
<p class="section-desc">一个组件起步,统一文件源、生命周期、搜索、缩放、打印、导出和下载契约。</p>
</div>
<div class="grid">
<div class="card"><div class="icon">⛨</div><h3>部署不出网</h3><p>浏览器内解析和渲染,支持离线网络、Docker、私有 CDN 和完整资源自托管,私有文件不离开内网。</p></div>
<div class="card"><div class="icon">▤</div><h3>全格式覆盖</h3><p>Office(DOCX / XLSX / PPTX / 二进制 PPT)、PDF / OFD、CAD(DWG / DXF)、STEP 三维、Typst、XMind、压缩包、邮件、绘图、音视频、代码。</p></div>
<div class="card"><div class="icon">◈</div><h3>专业格式扩展</h3><p>Adobe 设计文件、DICOM、数字签名容器、ELF / PE / Mach-O 二进制检查器按需启用,只读分析不执行文件。</p></div>
<div class="card"><div class="icon">◉</div><h3>框架全覆盖</h3><p>Vanilla JS / Web Component 优先,同时提供 Vue 2.6 / 2.7 / 3、React 16.8 - 19、Svelte、jQuery 原生组件。</p></div>
<div class="card"><div class="icon">⇣</div><h3>按需加载</h3><p>PDF、Office、CAD、Typst、压缩包、图纸、PSD、Mermaid 等重型能力只在命中格式时加载 Worker / WASM / 字体资产。</p></div>
<div class="card"><div class="icon">⌘</div><h3>操作完整</h3><p>搜索、高亮、缩放、打印、导出 HTML、下载、水印、主题、生命周期钩子和按钮前置校验都走统一 API。</p></div>
<div class="card"><div class="icon">✧</div><h3>有界多页 TIFF</h3><p>CCITT Group 4 TIFF 在独立懒加载边界逐页解码,支持整组缩放、旋转、适宽、页码状态与大图查看。</p></div>
<div class="card"><div class="icon">⧉</div><h3>工程化接入</h3><p>CLI 一键生成示例:npm create uni-viewer@latest;Vite 插件自动发布同版本资源。</p></div>
<div class="card"><div class="icon">⚖</div><h3>开源许可</h3><p>源码基于 Apache-2.0 许可,npm 生态持续维护,历史包同步更新。</p></div>
</div>
</div>
</section>
<section class="section section-alt">
<div class="container narrow">
<h2 class="section-title">技术栈</h2>
<p class="section-desc">TypeScript · Web Components · Vite 5 - 8 适配 · Web Worker · WASM · 私有 CDN / Docker 部署</p>
<div class="pill-row">
<span class="pill">TypeScript</span>
<span class="pill">Web Component</span>
<span class="pill">Vite</span>
<span class="pill">WASM</span>
<span class="pill">Web Worker</span>
<span class="pill">Apache-2.0</span>
</div>
</div>
</section>
<section class="section">
<div class="container">
<h2 class="section-title">快速接入</h2>
<p class="section-desc">新项目可用 CLI 生成示例,已有项目按提示添加组件和资产配置。</p>
<div class="grid">
<div class="card"><h3>① 生成 / 添加</h3><p><span class="mono">npm create uni-viewer@latest my-viewer</span><br>或在已有项目中:<span class="mono">npx uni-viewer-cli@latest add .</span></p></div>
<div class="card"><h3>② 选择组合</h3><p>CLI 默认 Standard 组合,<span class="mono">--profile full</span> 选择 Full 兼容包并添加 DICOM、数字签名能力。</p></div>
<div class="card"><h3>③ 自托管资产</h3><p>Vite 使用 <span class="mono">@uni-viewer/vite-plugin</span>;其它构建工具运行 Full 包自带 CLI 复制同版本资源。</p></div>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
</body>
</html>
+129
View File
@@ -0,0 +1,129 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>UniTouch Interface 工控交互平台 | Easy Data Collection</title>
<meta name="description" content="UniTouch —— 运行于嵌入式工控机的 PLC / 工控机设备控制软件:多协议统一抽象、有线直连与 MQTT 网关双模式,覆盖 Windows / Linux / Android。">
<meta name="keywords" content="UniTouch, 工控机, PLC, HMI, Modbus, OPC UA, MQTT, Flutter">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a class="active" href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">工具开发 · 工业控制</p>
<h1>UniTouch Interface</h1>
<p class="page-hero-sub">运行于嵌入式工控机的 PLC / 工控机设备控制软件,目标替代传统 HMI,并逐步做成一款「大一统」工业控制平台。</p>
<div class="hero-actions">
<a href="http://124.220.63.9:30000/admin/UniTouch-interface" class="btn btn-light">项目主页(Gitea)</a>
<a href="/tools/" class="btn btn-outline-light">返回工具开发</a>
</div>
<div class="hero-stats">
<div class="hero-stat"><b>3</b><span>工控机平台</span></div>
<div class="hero-stat"><b>4+</b><span>工业协议抽象</span></div>
<div class="hero-stat"><b>2</b><span>运行模式</span></div>
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="section-head">
<h2 class="section-title">设计特性</h2>
<p class="section-desc">以设备控制为核心,把协议、界面与数据统一到一个平台上。</p>
</div>
<div class="grid">
<div class="card"><div class="icon">⌘</div><h3>设备控制为核心</h3><p>写值、批量控制、逻辑联动、互锁与回读校验,控制闭环完整。</p></div>
<div class="card"><div class="icon">⇄</div><h3>双级别运行模式</h3><p>有线直连(替代 HMI)与无线 MQTT 转发(工控机兼任网关)自由切换。</p></div>
<div class="card"><div class="icon">◈</div><h3>多协议统一抽象</h3><p>Modbus / 西门子 S7 / 三菱 MC / OPC UA 等协议统一抽象,业务逻辑与协议解耦。</p></div>
<div class="card"><div class="icon">▦</div><h3>跨三种工控机系统</h3><p>Windows / Linux (Ubuntu) / Android 均为 P0 优先级平台;HarmonyOS 与 iOS 后续可选扩展。</p></div>
<div class="card"><div class="icon">✎</div><h3>组态化界面</h3><p>面向现场的组态化界面与实时监控,替代传统 HMI 的固定画面。</p></div>
<div class="card"><div class="icon">◉</div><h3>报警与历史</h3><p>实时报警、历史数据存储与查询,过程可追溯。</p></div>
<div class="card"><div class="icon">⛨</div><h3>权限与审计</h3><p>操作权限分级与审计留痕,满足现场管理要求。</p></div>
<div class="card"><div class="icon">⚙</div><h3>技术栈</h3><p>Flutter(Dart) + FFI(协议性能敏感部分) + SQLite + MQTT,兼顾界面表现与协议性能。</p></div>
</div>
</div>
</section>
<section class="section section-alt">
<div class="container narrow">
<h2 class="section-title">状态与规划</h2>
<p class="section-desc">目前处于需求探索阶段,设计文档草案已完成,详见项目仓库 docs/DESIGN.md 文末「待确认问题」。</p>
<div class="pill-row">
<span class="pill">Flutter</span>
<span class="pill">FFI</span>
<span class="pill">SQLite</span>
<span class="pill">MQTT</span>
<span class="pill">Modbus</span>
<span class="pill">OPC UA</span>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
</body>
</html>
+159
View File
@@ -0,0 +1,159 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>工具开发 | Easy Data Collection</title>
<meta name="description" content="工具开发 —— Sequence-Diagram 时序图设计器、Uni-Viewer 文件预览组件、Engineer Craft 工程设计平台、五行观察者、UniTouch 工控交互与 EDC Lite ERP。">
<meta name="keywords" content="工具开发, Sequence-Diagram, Uni-Viewer, Engineer Craft, UniTouch, EDC Lite ERP">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="icon" href="/static/img/logo.svg" type="image/svg+xml">
<script src="/static/js/nav.js"></script>
</head>
<body>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/">
<img src="/static/img/logo.svg" alt="Easy Data Collection">
<span class="brand-name">Easy Data Collection</span>
</a>
<nav class="main-nav" id="mainNav">
<div class="nav-item has-dropdown">
<a class="nav-link" href="/research/">前沿技术研究</a>
<button class="nav-caret" type="button" aria-label="展开前沿技术研究">▾</button>
<div class="dropdown">
<a href="http://124.220.63.9:25000">Research Digest</a>
<a href="/research/neural/">Neural Research</a>
<a href="/research/reslib/">ResLib</a>
</div>
</div>
<div class="nav-item has-dropdown">
<a class="nav-link active" href="/tools/">工具开发</a>
<button class="nav-caret" type="button" aria-label="展开工具开发">▾</button>
<div class="dropdown">
<a href="/tools/sequence-diagram/">Sequence-Diagram</a>
<a href="/tools/uni-viewer/">Uni-Viewer</a>
<a href="/tools/engineer-craft/">Engineer Craft</a>
<a href="/tools/five-phases-observer/">The Five Phases Observer</a>
<a href="/tools/unitouch/">UniTouch Interface</a>
<a href="/tools/edc-lite-erp/">EDC Lite ERP</a>
</div>
</div>
<a class="nav-link" href="/resources/">资源中心</a>
<div class="nav-item has-dropdown">
<a class="nav-link" href="/license/">License</a>
<button class="nav-caret" type="button" aria-label="展开 License">▾</button>
<div class="dropdown">
<a href="/license/apply">申请 License</a>
<a href="/license/status">查询 / 下载</a>
<a href="/license/package">资源包获取</a>
</div>
</div>
<a class="nav-link" href="/blog/">博客</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="菜单">☰</button>
</div>
</header>
<main>
<section class="page-hero">
<div class="container">
<p class="hero-eyebrow">TOOLS · 工具开发</p>
<h1>为工程现场造的软件</h1>
<p class="page-hero-sub">每一款工具都来自真实项目的需求:节拍设计、文件预览、工程计算、工控交互、资源计划与决策协议。独立研发、私有部署、持续迭代。</p>
<div class="hero-stats">
<div class="hero-stat"><b>6</b><span>自研产品线</span></div>
<div class="hero-stat"><b>100%</b><span>私有化部署</span></div>
<div class="hero-stat"><b>Desktop · Web · Edge</b><span>多端形态</span></div>
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="section-head">
<h2 class="section-title">产品矩阵</h2>
<p class="section-desc">点击任意产品进入独立介绍页,查看功能、架构与技术细节。</p>
</div>
<div class="product-grid">
<a class="product-card" href="/tools/sequence-diagram/">
<div class="product-icon" style="--v1:#7a3df5;--v2:#22c8ff">◷</div>
<span class="product-meta">Flutter Desktop</span>
<h3>Sequence-Diagram 时序图设计器</h3>
<p>面向 PLC 流程节拍与相位角设计:条形节拍与圆周节拍双视图、FS/SS 依赖、关键路径、SVG / PNG 导出。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/uni-viewer/">
<div class="product-icon" style="--v1:#0a6cff;--v2:#46d1ff">◉</div>
<span class="product-meta">TypeScript · Web Component</span>
<h3>Uni-Viewer 文件预览组件</h3>
<p>纯前端、不出网的文件预览:271 个扩展名、47 条预览链路,覆盖 Office、CAD、压缩包、邮件、音视频与二进制检查。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/engineer-craft/">
<div class="product-icon" style="--v1:#0a9e6e;--v2:#7ad9a8">⚙</div>
<span class="product-meta">Vue 3 · Vite · TypeScript</span>
<h3>Engineer Craft 工程设计平台</h3>
<p>流程工业智能设计平台:31 个工程计算模块、URS 与计算书、项目中心、AI 审查存档,一体化快速交付。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/five-phases-observer/">
<div class="product-icon" style="--v1:#b8860b;--v2:#ffd166">✦</div>
<span class="product-meta">Python · 协议栈</span>
<h3>The Five Phases Observer</h3>
<p>五行观察者 · GAP 公理协议:90 域观测协议与 720 个可证伪锚点,让重大决策可以被编译、记录与证伪。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/unitouch/">
<div class="product-icon" style="--v1:#e05252;--v2:#ff9a62">▦</div>
<span class="product-meta">Flutter · FFI · MQTT</span>
<h3>UniTouch Interface</h3>
<p>运行于嵌入式工控机的设备控制软件,替代传统 HMI:多协议统一抽象,Windows / Linux / Android 全平台。</p>
<span class="product-link">了解详情 →</span>
</a>
<a class="product-card" href="/tools/edc-lite-erp/">
<div class="product-icon" style="--v1:#0f2f6b;--v2:#2a6df5">▣</div>
<span class="product-meta">Electron · MySQL</span>
<h3>EDC Lite ERP</h3>
<p>轻量资源计划与制造管理系统研究项目:物料编码、进销存、配方与扫码称配、数据大屏、权限审计全链路。</p>
<span class="product-link">了解详情 →</span>
</a>
</div>
</div>
</section>
<section class="section section-alt">
<div class="container">
<div class="cta-band">
<div>
<h2>需要私有化落地或定制开发?</h2>
<p>所有工具均支持企业内网部署与功能定制,从标准件库到数据采集均可按业务流程适配。</p>
</div>
<div class="hero-actions">
<a href="/resources/" class="btn btn-light">查看资源中心</a>
<a href="/blog/" class="btn btn-outline-light">阅读博客</a>
</div>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<div class="footer-brand">
<img src="/static/img/logo.svg" alt="">
<span>Easy Data Collection</span>
</div>
<span>Copyright &copy; 2026 Easy Data Collection. All rights reserved.</span>
<span class="footer-links">
<a href="/resources/">资源中心</a><span class="sep">·</span>
<a href="/license/">License</a><span class="sep">·</span>
<a href="/admin">管理页面</a><span class="sep">·</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">苏ICP备2026056863号</a>
</span>
</div>
</footer>
</body>
</html>