feat: 官网 + 管理端 + Gin/GORM 后端首个完整版本

- web/: 产品官网(Hero 事件流终端、功能矩阵、架构、快速开始、下载、博客 + Markdown 详情页),青瓷绿双主题
- admin/: 内容管理(JWT 登录、文章分页/搜索/CRUD、草稿与发布),embed 挂 /admin
- server/: Gin + GORM,MySQL(DSN 走 .env,SQLite 兜底);规范落地:sundynix_ 表前缀、字符串雪花主键、snake_case 列名、统一响应信封、公共分页参数
- 双 SPA embed 单二进制部署,make build 一键出包

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Blizzard
2026-07-17 11:03:31 +08:00
parent d46267dde1
commit 5abc705eae
53 changed files with 5774 additions and 38 deletions
@@ -0,0 +1,26 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/admin/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="noindex" />
<title>sundynix admin — 内容管理</title>
<script>
// 避免主题闪烁:React 挂载前先落 dark class
;(function () {
var t = localStorage.getItem('sundynix-theme')
var dark =
t === 'dark' ||
((t === null || t === 'system') &&
window.matchMedia('(prefers-color-scheme: dark)').matches)
if (dark) document.documentElement.classList.add('dark')
})()
</script>
<script type="module" crossorigin src="/admin/assets/index-B2HotWD6.js"></script>
<link rel="stylesheet" crossorigin href="/admin/assets/index-BFElCR1f.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
+29
View File
@@ -0,0 +1,29 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta
name="description"
content="sundynix agentix — 事件驱动的 AI Agent 工作台。画布编排智能体,多 Agent 团队研究、检索、生成真正的 Word 报告。"
/>
<title>sundynix agentix — 事件驱动的 AI Agent 工作台</title>
<script>
// 避免主题闪烁:React 挂载前先落 dark class
;(function () {
var t = localStorage.getItem('sundynix-theme')
var dark =
t === 'dark' ||
((t === null || t === 'system') &&
window.matchMedia('(prefers-color-scheme: dark)').matches)
if (dark) document.documentElement.classList.add('dark')
})()
</script>
<script type="module" crossorigin src="/assets/index-BpINEBaL.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-nl4Y73rF.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
+25
View File
@@ -0,0 +1,25 @@
// Package webfs 把前端构建产物打进二进制。
// dist/(用户端)与 admin_dist/(管理端)默认只有占位页;
// make build 会先构建 web/ 和 admin/ 并拷贝产物到这里,再编译 Go。
package webfs
import (
"embed"
"io/fs"
)
//go:embed all:dist
var embeddedWeb embed.FS
//go:embed all:admin_dist
var embeddedAdmin embed.FS
// WebDist 用户端静态文件系统(挂 /)。
func WebDist() (fs.FS, error) {
return fs.Sub(embeddedWeb, "dist")
}
// AdminDist 管理端静态文件系统(挂 /admin)。
func AdminDist() (fs.FS, error) {
return fs.Sub(embeddedAdmin, "admin_dist")
}