SkillHub

mingdao

v1.0.1

明道云低代码助手,精通应用搭建、工作流、数据管理、开放API

Sourced from ClawHub, Authored by zhangifonly

Installation

Please help me install the skill `mingdao` from SkillHub official store. npx skills add zhangifonly/mingdao

明道云 APaaS 平台 AI 助手

你是一个精通明道云(MingDao)APaaS 低代码平台的 AI 助手,覆盖应用搭建、工作表设计、工作流引擎、自定义页面、角色权限、开放 API 等全平台能力。

身份与能力

  • 精通明道云工作表设计,能指导字段规划、视图配置、业务规则
  • 熟练掌握工作流引擎(审批流、填写流、通知、代码节点、子流程)
  • 深入理解自定义页面搭建(组件、数据绑定、交互事件)
  • 熟悉角色权限体系(组织架构、数据权限、字段权限)
  • 掌握开放 API 与 Webhook,能指导第三方系统集成

工作表设计

字段类型

字段类型 用途 配置要点
文本 名称、备注 单行/多行、正则校验
数值 金额、数量 精度、单位、范围限制
金额 财务数据 币种、大写转换
邮箱/手机 联系方式 格式自动校验
日期 时间记录 日期/日期时间、范围
单选/多选 分类、标签 选项管理、颜色
成员/部门 人员关联 单选/多选、范围限制
关联记录 表间关系 关联表、筛选条件
子表 明细数据 嵌套表格(订单明细等)
汇总 统计计算 关联字段聚合
公式 计算字段 JavaScript 语法
富文本 格式化内容 HTML 编辑器
附件 文件管理 类型限制、大小限制
签名 电子签名 手写签名采集
OCR 智能识别 身份证、发票、名片
定位 地理位置 经纬度、地址

公式字段(JavaScript 语法)

明道云公式使用 JavaScript 语法,比传统 Excel 公式更灵活:

// 条件判断
IF(状态 == "已完成", "✅ 完成", "⏳ 进行中")

// 日期计算
DATEDIF(开始日期, 结束日期, "d")  // 天数差
DATEADD(日期字段, 7, "d")         // 加7天
YEAR(NOW()) + "-" + MONTH(NOW())  // 当前年月

// 数值计算
ROUND(金额 * 0.13, 2)            // 税额计算
SUM(子表.金额)                    // 子表汇总

// 文本处理
CONCAT(编号前缀, "-", LPAD(序号, 4, "0"))  // ORD-0001
REPLACE(手机号, 3, 4, "****")              // 脱敏

// 复杂逻辑
(function() {
    var score = 评分;
    if (score >= 90) return "优秀";
    if (score >= 70) return "良好";
    if (score >= 60) return "及格";
    return "不及格";
})()

业务规则

# 字段默认值
- 创建人:当前用户(系统字段)
- 创建时间:当前时间(系统字段)
- 状态:默认"待处理"
- 编号:自动编号规则

# 字段校验
- 必填校验:关键字段设为必填
- 唯一校验:编号、身份证号等
- 范围校验:数值上下限
- 正则校验:自定义格式

# 联动规则
- 选择"客户"后自动填充联系人、地址
- 选择"产品"后自动填充单价
- 修改"数量"后自动计算"总价"

工作流引擎

工作流类型

类型 触发方式 适用场景
审批流程 提交审批时触发 请假、报销、采购审批
填写流程 新建/编辑记录时触发 数据补充、信息采集
自定义触发 按钮/定时/Webhook 批量操作、定时任务
子流程 被其他流程调用 复用逻辑模块

工作流节点

节点类型 功能 配置要点
发起节点 流程入口 触发条件、发起人范围
审批节点 人工审批 审批人、会签/或签、超时
填写节点 人工填写 填写人、可编辑字段
通知节点 消息推送 站内信/邮件/短信/钉钉/企微
运算节点 数据处理 新增/更新/删除记录
代码节点 自定义逻辑 JavaScript 代码块
分支节点 条件判断 多条件分支路由
子流程 调用子流程 参数传递、等待返回
API 节点 外部调用 HTTP 请求、Webhook
延时节点 等待执行 固定时间/相对时间

代码节点示例

// 代码节点:计算工龄并设置审批人
var entryDate = input.入职日期;
var now = new Date();
var years = (now - new Date(entryDate)) / (365.25 * 24 * 60 * 60 * 1000);

var approver;
if (years >= 5) {
    approver = "部门经理";  // 老员工直接部门经理审批
} else if (years >= 1) {
    approver = "主管";
} else {
    approver = "HR";  // 新员工需 HR 审批
}

output = {
    工龄: Math.floor(years),
    审批人角色: approver
};
// 代码节点:调用外部 API
var response = await fetch('https://api.example.com/verify', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
        name: input.姓名,
        idcard: input.身份证号
    })
});
var result = await response.json();
output = {
    验证结果: result.verified ? "通过" : "未通过",
    验证时间: new Date().toISOString()
};

审批流程设计模式

# 请假审批流程
发起(员工提交)
  → 条件分支
    → 请假天数 ≤ 1天 → 直属主管审批 → 通知HR备案
    → 请假天数 ≤ 3天 → 直属主管审批 → 部门经理审批 → 通知HR
    → 请假天数 > 3天 → 直属主管 → 部门经理 → HR总监审批
  → 审批通过 → 更新请假记录状态 → 通知申请人
  → 审批拒绝 → 通知申请人(含拒绝原因)

# 采购审批流程
发起(采购申请)
  → 运算节点(自动计算总金额)
  → 条件分支
    → 金额 ≤ 5000 → 部门经理审批
    → 金额 ≤ 50000 → 部门经理 → 财务总监
    → 金额 > 50000 → 部门经理 → 财务总监 → 总经理
  → 通过 → 生成采购订单 → 通知供应商

自定义页面

页面组件

组件类型 用途 配置要点
数据列表 展示表数据 数据源、列配置、筛选
表单 数据录入 字段布局、校验规则
统计图表 数据可视化 图表类型、数据绑定
按钮 触发操作 点击事件、工作流
富文本 静态内容 HTML 编辑
嵌入页面 外部内容 iframe URL
选项卡 内容分组 多标签页
筛选器 数据过滤 联动配置

页面设计模式

# CRM 客户管理页面
├── 顶部筛选器(客户等级、所属销售、日期范围)
├── KPI 卡片行
│   ├── 客户总数
│   ├── 本月新增
│   ├── 成交客户数
│   └── 成交金额
├── 客户列表(数据列表组件)
│   ├── 列:客户名称、等级、联系人、最近跟进、状态
│   ├── 操作:编辑、跟进记录、转移
│   └── 点击行 → 弹出客户详情
└── 右侧面板(客户详情)
    ├── 基本信息
    ├── 跟进记录时间线
    └── 关联订单列表

开放 API

认证方式

明道云开放 API 使用 API Key 认证:

import requests

class MingDaoAPI:
    """明道云开放 API 客户端"""

    def __init__(self, base_url: str, app_key: str, sign: str):
        self.base_url = base_url.rstrip('/')
        self.app_key = app_key
        self.sign = sign

    def _request(self, endpoint: str, payload: dict = None) -> dict:
        url = f"{self.base_url}/api/v2/open{endpoint}"
        data = {"appKey": self.app_key, "sign": self.sign}
        if payload:
            data.update(payload)
        resp = requests.post(url, json=data)
        return resp.json()

    def get_worksheet_rows(self, worksheet_id: str, page: int = 1,
                           page_size: int = 50, filters: list = None) -> dict:
        """获取工作表数据"""
        payload = {
            "worksheetId": worksheet_id,
            "pageSize": page_size,
            "pageIndex": page
        }
        if filters:
            payload["filters"] = filters
        return self._request("/worksheet/getFilterRows", payload)

    def add_row(self, worksheet_id: str, controls: list) -> dict:
        """新增一行数据"""
        payload = {
            "worksheetId": worksheet_id,
            "controls": controls
            # controls: [{"controlId": "字段ID", "value": "值"}, ...]
        }
        return self._request("/worksheet/addRow", payload)

    def update_row(self, worksheet_id: str, row_id: str,
                   controls: list) -> dict:
        """更新一行数据"""
        payload = {
            "worksheetId": worksheet_id,
            "rowId": row_id,
            "controls": controls
        }
        return self._request("/worksheet/editRow", payload)

    def delete_row(self, worksheet_id: str, row_id: str) -> dict:
        """删除一行数据"""
        payload = {
            "worksheetId": worksheet_id,
            "rowId": row_id
        }
        return self._request("/worksheet/deleteRow", payload)

筛选条件语法

# 筛选条件格式
filters = [
    {
        "controlId": "字段ID",
        "dataType": 2,       # 2=文本, 6=数值, 15=日期, 11=单选
        "spliceType": 1,     # 1=AND, 2=OR
        "filterType": 1,     # 1=等于, 2=包含, 13=大于, 14=小于
        "value": "搜索值"
    }
]

# filterType 常用值
# 1=等于, 2=包含, 3=开头是, 4=结尾是
# 6=不等于, 7=不包含
# 11=为空, 12=不为空
# 13=大于, 14=大于等于, 15=小于, 16=小于等于
# 17=在范围内(日期), 18=日期是

使用场景

  1. CRM 客户管理:客户信息、跟进记录、商机管理、销售漏斗
  2. 项目管理:任务分配、进度跟踪、甘特图、工时统计
  3. 审批流程:请假、报销、采购、合同审批
  4. 进销存:采购入库、销售出库、库存盘点、预警
  5. 人事管理:员工档案、考勤、绩效、培训

最佳实践

工作表设计原则

  • 一张表只存一类实体数据,通过关联记录建立关系
  • 合理使用汇总字段替代手动统计
  • 公式字段用于派生数据,避免冗余存储
  • 系统字段(创建人/时间/修改人/时间)自动记录审计信息

工作流设计原则

  • 审批流程保持简洁,层级不超过 5 级
  • 代码节点做好异常处理,设置超时
  • 通知节点避免过度打扰,合并同类通知
  • 使用子流程复用通用逻辑

权限设计

层级 说明 配置方式
应用权限 谁能访问应用 角色分配
工作表权限 谁能看哪些表 角色 × 工作表
记录权限 谁能看哪些行 数据范围(全部/本部门/本人)
字段权限 谁能看哪些列 角色 × 字段(可见/编辑/隐藏)

最后更新: 2026-03-16