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条测试用例/开发日志
157 lines
5.3 KiB
Markdown
157 lines
5.3 KiB
Markdown
# 开元云科技官网系统架构
|
||
|
||
## 项目概述
|
||
企业官网 + 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` - 钉钉应用AppKey
|
||
- `DINGTALK_APP_SECRET` - 钉钉应用AppSecret
|
||
- `DINGTALK_AGENT_ID` - 钉钉应用AgentId
|
||
- `DINGTALK_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线稿占位符
|
||
|
||
### 官网页面结构
|
||
1. **导航栏** - 固定顶部,毛玻璃效果
|
||
2. **Hero区** - 品牌Slogan + 脉冲呼吸灯 + 双按钮 + 云宝占位
|
||
3. **1+N+X产品架构** - 3张可展开卡片
|
||
4. **成功案例** - 3列网格 + CTA横幅
|
||
5. **企业动态** - 2条最新新闻 + 查看全部链接
|
||
6. **页脚** - 版权信息
|
||
7. **浮动入口** - 云宝头像 + 联系面板(表单提交线索)
|
||
|
||
## 目录结构
|
||
```
|
||
~/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
|
||
```python
|
||
from entcms.init import load_entcms
|
||
from dingdingflow.init import load_dingdingflow
|
||
# 在init()函数中:
|
||
load_entcms()
|
||
load_dingdingflow()
|
||
```
|
||
|
||
### 2. build.sh
|
||
```bash
|
||
for m in ... entcms dingdingflow
|
||
```
|
||
|
||
### 3. RBAC权限
|
||
```bash
|
||
cd ~/repos/sage
|
||
./py3/bin/python ~/repos/cms/entcms/scripts/load_path.py
|
||
./py3/bin/python ~/repos/cms/dingdingflow/scripts/load_path.py
|
||
```
|
||
|
||
### 4. 数据库
|
||
```bash
|
||
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. 重启
|
||
```bash
|
||
cd ~/repos/sage && ./stop.sh && ./start.sh
|
||
```
|