明道云SaaS迁移到私有部署的各种坑

问答 私有部署  收藏
6 / 175

原以为会很简单,导出再导入就可以了,后来发现还是自己太年轻了,各种坑。

官方的应用导出导入有诸多限制,带来很多问题

  1. 附件不能导出还原,100 张表单,30000 多个附件需要处理,用流程节点同步费事实力
  2. 导出有单表 10000,总数 50000 的限制
  3. 两个平台账号的邮箱和手机号必须完全一致,否则导入时无法匹配用户,会导致成员字段等失效

为了解决以上限制,以下用 Python 调用 API 实现了

  1. 一个脚本自动同步所有表单的附件(API 接口的限制,可以同步链接,但是无法更新显示的文件名)
  2. 一个脚本自动新增所有未导入的表单记录(SASS 平台同步到私有平台,表单内的记录差值大于 50 条的自动同步)

使用步骤:

  1. 修改 cfg/md.cfg 文件为 API 对应的地址和 APPKey Sign 信息
    SASS_HOST = "https://api.mingdao.com/"
    PRI_HOST = "https:/example.cn/api/"
    URL_APPINFO = "v1/open/app/get"
    URL_WORKSHEET_INFO = "v2/open/worksheet/getWorksheetInfo"

SASS_APP_KEY = ""
SASS_SIGN = "=="

PRI_APP_KEY = ""
PRI_SIGN = "=="

2.导出组织的成员的信息, 修改 person.json 姓名和 sass id 和私有 id 的对应关系
3.执行 getallworksheet.py 会自动拉取两个平台的所有表单,并保存到 cfg/all-worksheet.json
4.执行 syncallattch.py 自动同步所有附件控件, 同时 downloadurl 和原始文件名的对应会放到 cfg/urlmap.json 中
5.执行 auotsync.py 自动同步未导入的表单数据