{"id":27363579,"url":"https://github.com/Duke1616/ecmdb","last_synced_at":"2025-04-13T04:02:02.309Z","repository":{"id":223842717,"uuid":"745018686","full_name":"Duke1616/ecmdb","owner":"Duke1616","description":"CMDB、工单一体化平台","archived":false,"fork":false,"pushed_at":"2025-04-11T16:31:30.000Z","size":2679,"stargazers_count":48,"open_issues_count":1,"forks_count":14,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-11T17:41:31.393Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Duke1616.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-18T13:33:21.000Z","updated_at":"2025-04-11T16:31:34.000Z","dependencies_parsed_at":"2024-02-22T11:26:46.917Z","dependency_job_id":"ce9c4a6c-a4f9-4a00-8166-d7c6ea637dc8","html_url":"https://github.com/Duke1616/ecmdb","commit_stats":null,"previous_names":["duke1616/ecmdb"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Duke1616%2Fecmdb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Duke1616%2Fecmdb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Duke1616%2Fecmdb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Duke1616%2Fecmdb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Duke1616","download_url":"https://codeload.github.com/Duke1616/ecmdb/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248661698,"owners_count":21141450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-13T04:01:38.048Z","updated_at":"2025-04-13T04:02:02.264Z","avatar_url":"https://github.com/Duke1616.png","language":"Go","funding_links":[],"categories":["Go","CMDB"],"sub_categories":[],"readme":"# CMDB + 工单一体化平台\n## 前言\n这个系统最初设计是为了业余学习以及结合工作需求开发的，目标是创建一个CMDB资产管理系统。完成初步开发后，\n发现仅仅记录资产信息并不能完全体现平台的价值，且不支持自动化录入显得功能过于单薄。\n\n经过一段时间的思考后，决定将项目方向调整为工单系统。借助工单系统的能力，实现数据的自动化录入到CMDB中。起初考虑重新建立一个仓库来开发这个系统，但由于人手和精力有限，最终选择在原有仓库中进行编写和完善。\n\n最后希望能找到志同道合的伙伴，一起参与到这个项目，共同协同开发，如果有感兴趣的，可以联系我。\n\nwx: lkz-1008\n\n## 项目现状\n当前系统的 CMDB 和工单功能已进入 GA（General Availability）阶段，欢迎大家使用！如果有需求或建议，欢迎提交 issue。请为我们点个 Star 支持一下吧！\n## 项目部署\n系统默认账户：admin  系统默认密码：123456\n### docker\n```shell\n# 创建一个新的虚拟网络\ndocker network create ecmdb\n\n# 启动服务\ndocker compose -p ecmdb -f deploy/docker-compose.yaml up -d\n\n# 创建用户\ncurl -L 'http://127.0.0.1:8666/api/user/register' \\\n-H 'Content-Type: application/json' \\\n-d '{\n    \"username\": \"admin\",\n    \"password\": \"123456\",\n    \"re_password\": \"123456\",\n    \"display_name\": \"系统管理员\"\n}'\n\n# 同步权限数据\ndocker cp ./init/menu.tar.gz ecmdb-mongo:/mnt\ndocker cp ./init/role.tar.gz ecmdb-mongo:/mnt\ndocker exec ecmdb-mongo mongorestore --uri=\"mongodb://ecmdb:123456@127.0.0.1:27017/ecmdb?authSource=admin\" --gzip  --collection c_menu --archive=/mnt/menu.tar.gz\ndocker exec ecmdb-mongo mongorestore --uri=\"mongodb://ecmdb:123456@127.0.0.1:27017/ecmdb?authSource=admin\" --gzip  --collection c_role --archive=/mnt/role.tar.gz\n\n# 修正 ID 自增值\ndocker exec ecmdb-mongo mongosh \"mongodb://ecmdb:123456@127.0.0.1:27017/ecmdb?authSource=admin\" --eval 'db.c_id_generator.insertOne({ name: \"c_role\", next_id: NumberLong(\"5\") })'\ndocker exec ecmdb-mongo mongosh \"mongodb://ecmdb:123456@127.0.0.1:27017/ecmdb?authSource=admin\" --eval 'db.c_id_generator.insertOne({ name: \"c_menu\", next_id:  NumberLong(\"163\") })'\n\n# 导入 Casbin 权限数据\ndocker exec -i ecmdb-mysql mysql -uecmdb -p123456 ecmdb \u003c ./init/casbin_rule.sql\n\n# 用户添加权限\ndocker exec ecmdb-mongo mongosh \"mongodb://ecmdb:123456@127.0.0.1:27017/ecmdb?authSource=admin\" --eval 'db.c_user.updateOne( { username: \"admin\" }, { $set: { role_codes: [\"admin\"] } } )'\n\n# 重启后端服务，加载策略\ndocker restart ecmdb\n\n# 环境销毁\ndocker compose -p ecmdb -f deploy/docker-compose.yaml down\n```\n\n## 关联项目\n具体内容请查看相关项目，如果没有工单自动化任务需求，可以不部署任务执行器\n- 前端： https://github.com/Duke1616/ecmdb-web\n- 任务执行器：https://github.com/Duke1616/ework-runner\n- 消息通知：https://github.com/Duke1616/enotify\n\n## 功能\n- CMDB\n  - 全文检索、针对资产数据全文检索\n  - 提供了模型的抽象管理，自定义模型属性、加密属性\n  - 模型关联关系、资产关联关系\n  - 集成专用登录网关资产，支持 Web SSH 和 Web SFTP 功能\n- 工单中心\n  - 前端集成`form-create`可以自定义工单模版\n  - 后端集成`easy-workflow`流程引擎，支持或签、并签、判断、会签、抄送、自动化\n  - 自定义执行单元可用于绑定工作节点和任务模版，每个执行单元支持绑定多个变量，以满足不同任务场景的灵活配置需求\n  - 支持接收企业微信OA回调消息、转换自动化任务执行\n    - 接收企业微信数据需自行开发，只需将消息推送至 wechat_callback_events 消息队列。如有需要，可联系我提供具体方案与实现思路。\n  - 自动化任务支持变量篡改、输入篡改及任务重试机制，以满足更灵活的任务控制与异常处理需求\n  - 集成飞书消息通知、消息回调 `pass` `reject` `progress` `cc` 相应业务处理\n  - 定时自动化任务 如：申请权限定时回收\n- 用户权限\n  - 支持LDAP、账号密码登录方式\n  - 支持前端动态菜单、按钮、后端API鉴权\n- 排班管理\n  - 支持自定义创建多个排班计划\n  - 可灵活配置轮换周期、启停时间及多个排班组，以满足多样化的排班需求\n\n## 技术栈\n- 数据库：MongoDB、MySQL\n- 中间件：Redis Stack、kafka、Etcd\n- 框架：Gin、Gorm、Wire、Casbin、Easy-Workflow\n\n## 目录结构\n```\n.\n├── config # 配置文件\n│   └── example.yaml\n├── deploy # CICD\n│   ├── docker-compose.yaml\n│   ├── Dockerfile\n│   └── prod.yaml\n├── docs  # 文档\n│   └── img\n├── go.mod\n├── go.sum\n├── internal\n│   ├── model      # CMDB - 模型 CI\n│   ├── attribute  # CMDB - 字段属性\n│   ├── resource   # CMDB - 资产数据\n│   ├── relation   # CMDB - 关联关系\n│   ├── runner     # 工单 - 执行器\n│   ├── task       # 工单 - 自动化任务\n│   ├── template   # 工单 - 模版\n│   ├── worker     # 工单 - 工作节点\n│   └── workflow   # 工单 - 流程绑定\n│   ├── codebook   # 工单 - 代码库\n│   ├── engine     # 工单 - easyflow engine\n│   ├── event      # 工单 - easyflow event \n│   ├── order      # 工单 - 工单信息\n│   ├── user       # 权限 - 用户模块\n│   ├── role       # 权限 - 角色管理\n│   ├── endpoint   # 权限 - API接口管理\n│   ├── department # 权限 - 人员分组管理\n│   ├── policy     # 权限 - 集成casbin \n│   ├── menu       # 权限 - 菜单信息\n│   ├── permission # 权限 - 整合鉴权\n│   ├── pkg        # 通用工具包\n├── ioc # 依赖注入\n│   ├── app.go\n│   ├── casbin.go\n│   ├── db.go\n│   ├── etcd.go\n│   ├── gin.go\n│   ├── job.go\n│   ├── ldap.go\n│   ├── mq.go\n│   ├── mysql.go\n│   ├── redis.go\n│   ├── redisearch.go\n│   ├── session.go\n│   ├── wire_gen.go\n│   ├── wire.go\n│   └── workwx.go\n├── LICENSE\n├── main.go # 启动\n├── pkg # 二次封装\n│   ├── cryptox\n│   ├── ginx\n│   ├── hash\n│   ├── mongox\n│   ├── mqx\n│   ├── registry\n│   └── tools\n├── README.md\n└── Taskfile.yaml # 类似于makeflie\n```\n\n## CMDB\n![](docs/img/cmdb.png)\n\n## 工单系统\n![](docs/img/order.png)\n\n### 自动化任务-设计流程图\n自动化任务在整改系统里面设计比较有趣的地方，也较为复杂。\n\n通过下面这张图，可以更好的理解任务运行流程，以及如何排查定位问题。\n![](docs/img/自动化任务-设计流程图.png)\n\n## 权限控制\n![](docs/img/permission.png)\n\n## 排班管理\n![](docs/img/scheduling.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDuke1616%2Fecmdb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDuke1616%2Fecmdb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDuke1616%2Fecmdb/lists"}