entcms模块: - 4个数据表(cms_content/cms_categories/cms_leads/cms_site_config) - 22个.dspy API(含公开API和data_filter) - 4个公开页面(首页/新闻/案例)+管理后台 - 完整营销站点CSS/JS(暗色主题/渐变/动画/响应式) - 云宝SVG线稿占位符 - RBAC权限配置 dingdingflow模块: - 2个数据表(dd_approvals/dd_approval_configs) - 10个.dspy API(含钉钉回调endpoint) - 钉钉API客户端(环境变量配置,开发模式mock) - 管理UI 文档: 架构设计/53条测试用例/开发日志
5.3 KiB
5.3 KiB
开元云科技官网系统架构
项目概述
企业官网 + CMS内容管理 + 钉钉审批流程系统,基于Sage平台开发。
模块组成
1. entcms - 企业CMS系统
管理官网所有内容:新闻、案例、产品、Banner、商机线索。
数据库表 (entcms):
| 表名 | 用途 |
|---|---|
| cms_content | 统一内容表(新闻/案例/产品/Banner),带发布审批状态流 |
| cms_categories | 内容分类(支持层级,按content_type分组) |
| cms_leads | 商机线索(网站访客提交 + 未来AI抽取) |
| cms_site_config | 站点配置(Hero标语、页脚信息等KV配置) |
公开页面 (any权限):
/entcms/index.ui- 官网首页(7个模块:导航/Hero/产品/案例/新闻/页脚/浮动入口)/entcms/news.ui- 新闻列表/entcms/news_detail.ui- 新闻详情/entcms/cases.ui- 案例列表
管理页面 (logined权限):
/entcms/admin.ui- 管理后台仪表盘/entcms/cms_content_list- 内容CRUD/entcms/cms_categories_list- 分类CRUD/entcms/cms_leads_list- 线索CRUD/entcms/cms_site_config_list- 配置CRUD
内容审批流程: 编辑创建内容(草稿) → 提交审批(status=pending) → 钉钉审批 → 审批通过(status=approved) → 发布(status=published)
2. dingdingflow - 钉钉审批流程
对接钉钉审批API,为CMS内容发布提供审批工作流。
数据库表 (dingdingflow):
| 表名 | 用途 |
|---|---|
| dd_approvals | 审批记录(关联业务类型和ID,记录钉钉审批实例ID) |
| dd_approval_configs | 审批流程配置(按biz_type配置钉钉模板编码等) |
环境变量:
DINGTALK_APP_KEY- 钉钉应用AppKeyDINGTALK_APP_SECRET- 钉钉应用AppSecretDINGTALK_AGENT_ID- 钉钉应用AgentIdDINGTALK_CALLBACK_TOKEN- 钉钉回调Token
开发模式: 缺少环境变量时自动使用mock响应,不影响CMS功能。
技术栈
| 层 | 技术 |
|---|---|
| 前端 | bricks-framework (JSON UI) + 自定义CSS/JS |
| 后端 | ahserver + sqlor + apppublic |
| 认证 | rbac (角色权限控制) |
| 基础设施 | appbase (公共函数) |
| 审批 | 钉钉开放API (预留接口) |
| AI能力 | 预留Agent接口(商机抽取) |
前端设计
官网视觉规范
- 风格: 极简科技感(参考OpenAI官网)
- 主色: #6C5CE7 (紫色)
- 渐变: #6C5CE7 → #A29BFE → #74B9FF
- 暗色背景: #0a0a0a
- 卡片背景: #1A1A1A
- 字体: Noto Sans SC
- 最大宽度: 1100px
- 响应式断点: 768px
- 云宝形象: SVG线稿占位符
官网页面结构
- 导航栏 - 固定顶部,毛玻璃效果
- Hero区 - 品牌Slogan + 脉冲呼吸灯 + 双按钮 + 云宝占位
- 1+N+X产品架构 - 3张可展开卡片
- 成功案例 - 3列网格 + CTA横幅
- 企业动态 - 2条最新新闻 + 查看全部链接
- 页脚 - 版权信息
- 浮动入口 - 云宝头像 + 联系面板(表单提交线索)
目录结构
~/repos/cms/
├── entcms/ # CMS模块
│ ├── entcms/
│ │ ├── __init__.py
│ │ └── init.py # 模块初始化 + ServerEnv注册
│ ├── wwwroot/
│ │ ├── index.ui # 官网首页
│ │ ├── news.ui # 新闻列表
│ │ ├── news_detail.ui # 新闻详情
│ │ ├── cases.ui # 案例列表
│ │ ├── admin.ui # 管理后台
│ │ ├── menu.ui # 管理菜单
│ │ ├── cms_styles.css # 官网样式
│ │ ├── cms_scripts.js # 官网交互脚本
│ │ └── api/ # 22个.dspy API文件
│ ├── models/ # 4个表定义JSON
│ ├── json/ # 4个CRUD定义JSON
│ ├── init/data.json # 初始化数据
│ ├── scripts/load_path.py # RBAC权限配置
│ └── pyproject.toml
├── dingdingflow/ # 审批模块
│ ├── dingdingflow/
│ │ ├── __init__.py
│ │ ├── init.py
│ │ └── dingtalk_client.py # 钉钉API客户端
│ ├── wwwroot/
│ │ ├── index.ui
│ │ ├── menu.ui
│ │ └── api/ # 10个.dspy API文件
│ ├── models/ # 2个表定义JSON
│ ├── json/ # 2个CRUD定义JSON
│ ├── scripts/load_path.py
│ └── pyproject.toml
├── build.sh # 构建脚本
└── docs/ # 文档目录
Sage集成步骤
1. app/sage.py
from entcms.init import load_entcms
from dingdingflow.init import load_dingdingflow
# 在init()函数中:
load_entcms()
load_dingdingflow()
2. build.sh
for m in ... entcms dingdingflow
3. RBAC权限
cd ~/repos/sage
./py3/bin/python ~/repos/cms/entcms/scripts/load_path.py
./py3/bin/python ~/repos/cms/dingdingflow/scripts/load_path.py
4. 数据库
cd ~/repos/cms/entcms && cat mysql.ddl.sql | mysql -u root -p sage
cd ~/repos/cms/dingdingflow && cat mysql.ddl.sql | mysql -u root -p sage
5. 重启
cd ~/repos/sage && ./stop.sh && ./start.sh