cms/docs/architecture.md
yumoqing 208625415a refactor: 统一wwwroot目录结构
- 将 entcms/wwwroot/* 移到 wwwroot/
- 将 dingdingflow/wwwroot/* 移到 wwwroot/dingdingflow/
- 更新 config.json 使用单一 wwwroot 映射
- 更新 init_any_permissions.py 扫描新路径
- 更新 init_superuser_permissions.py 用法说明
- 废弃 entcms/scripts/load_path.py 和 dingdingflow/scripts/load_path.py
- 更新 build.sh 构建步骤
- 更新 README.md 和 docs/architecture.md 目录说明
2026-06-03 16:34:00 +08:00

176 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 开元云科技官网系统架构
## 项目概述
企业官网 + CMS内容管理 + 钉钉审批流程系统基于Sage平台开发。
## 模块组成
### 1. entcms - 企业CMS系统
管理官网所有内容新闻、案例、产品、Banner、商机线索。
**数据库表 (entcms)**:
| 表名 | 用途 |
|------|------|
| cms_content | 统一内容表(新闻/案例/产品/Banner带发布审批状态流 |
| cms_categories | 内容分类支持层级按content_type分组 |
| cms_sections | 栏目管理 |
| cms_leads | 商机线索(网站访客提交 + 未来AI抽取 |
| cms_site_config | 站点配置Hero标语、页脚信息等KV配置 |
**目录结构**:
```
wwwroot/ # 统一前端目录
├── index.ui # 官网首页7个模块导航/Hero/产品/案例/新闻/页脚/浮动入口)
├── products.ui # 产品架构列表
├── news.ui # 新闻列表
├── news_detail.ui # 新闻详情
├── cases.ui # 案例列表
├── admin.ui # 管理后台仪表盘
├── api/*.dspy # CMS后端API
└── dingdingflow/ # 钉钉审批模块
├── index.ui
├── menu.ui
└── api/*.dspy
```
**公开页面 (any权限)**:
- `/index.ui` - 官网首页7个模块导航/Hero/产品/案例/新闻/页脚/浮动入口)
- `/products.ui` - 产品架构列表
- `/news.ui` - 新闻列表
- `/news_detail.ui` - 新闻详情
- `/cases.ui` - 案例列表
**管理页面 (logined权限)**:
- `/admin.ui` - 管理后台仪表盘
- `/cms_content_list` - 内容CRUD
- `/cms_categories_list` - 分类CRUD
- `/cms_sections_list` - 栏目CRUD
- `/cms_leads_list` - 线索CRUD
- `/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
```