Commit Graph

113 Commits

Author SHA1 Message Date
chareice
0d2b1caa7c fix: collections load order 2022-12-12 18:50:53 +08:00
ChengLei Shao
1764b53a9b
fix: create inherits with empty table (#1160)
* chore: test

* feat: patch to queryInterface.describeTable

* test: add field to empty collection

* fix: create inherits with parent dose not have id field

* fix: test

* fix: test
2022-11-30 10:00:46 +08:00
ChengLei Shao
78fe77e2cf
feat: belongs to many on delete (#1158) 2022-11-29 18:27:41 +08:00
ChengLei Shao
1ebb70e4c5
fix/inherits issues(#1146)
* chore: sync inherits command

* fix: inherit field type conflit

* fix: merge

* fix: test

* fix: test

* chore: app command

* chore: create inheritance map

* fix: test

* fix: test

* fix: test
2022-11-26 09:24:53 +08:00
chenos
024cc102ea fix: field record not updated 2022-11-25 12:12:44 +08:00
ChengLei Shao
945c64304a
fix: create empty collection (#1141)
* fix: create empty collection

* chore: comment

* chore: sqlite support

* chore: mysql support

* fix: collection api

* fix: error message
2022-11-24 18:16:01 +08:00
ChengLei Shao
3556ddc730
fix: reference check after remove collection (#1123) 2022-11-22 16:19:48 +08:00
ChengLei Shao
466aa4987e
fix: sort field with table dose not have primary key (#1119) 2022-11-22 10:13:55 +08:00
ChengLei Shao
fba8f253d4
fix: test (#1118) 2022-11-22 09:29:09 +08:00
ChengLei Shao
d72123c5b0
fix: update to bigint (#1117)
* fix: update sequence and foreignKey

* chore: rename migration

* fix: single foreign field update

* fix: update bigint

* fix: rename

Co-authored-by: chenos <chenlinxh@gmail.com>
2022-11-21 18:50:23 +08:00
ChengLei Shao
c861a6884a
fix: update sequence and foreignKey (#1116)
* fix: update sequence and foreignKey

* chore: rename migration
2022-11-21 18:07:58 +08:00
chenos
c888d793ee fix(cm): update to bigint 2022-11-21 15:33:21 +08:00
chenos
c52f451840
fix: fk type invalid (#1113) 2022-11-21 14:58:07 +08:00
chareice
a0cb35ffa4 fix: handle column not exists error 2022-11-20 21:27:19 +08:00
ChengLei Shao
73e2d27e29
feat: using bigint for id field (#1100)
* feat: using bigint for id field

* fix: postgres bigint parse

* fix: sequelize test

* test: update to bigint migrator

* chore: updateToBigInt method

* fix: mysql update bigint

* fix: update to bigint with inherits table

* feat: update fields type in fields table

* fix: import

* fix: bigInt

Co-authored-by: chenos <chenlinxh@gmail.com>
2022-11-20 14:40:41 +08:00
ChengLei Shao
e991b2965a
feat: collection inheritance (#1069)
* chore: test

* chore: inherited-collection class

* feat: collection inherit

* feat: collection inherit

* feat: inhertis sync runner

* test: get parents fields

* feat: collection inherit style promote

* feat: sync

* feat: sync alter table

* feat: pgOnly Test

* fix: child collection create api

* feat: replace parent field

* chore: reload parent fields

* test: reload collection test

* feat: details are displayed according to conditions

* fix: typo

* feat: inheritance map class

* chore: is parent node

* feat: display where child row created from

* fix: find with appends

* feat: add parent collection fields

* fix: create table

* feat: load fields for all children

* refactor: sync fields from parent

* test: has one field inhertis

* feat: replace child association target

* feat: should not replace child field when parent field update

* test: should update inherit field when parent field update

* feat: only the blocks directly inherited from the current data are displayed

* fix: inherit from multiple collections

* feat: only the blocks directly inherited from the current data are displayed

* fix: test

* feat: parent collection expend

* fix: test

* test: belongsToMany inherits

* test: belongsToMany inherits

* feat: block display

* feat: collection inherite

* feat: collection inherite

* feat: multiple inherits

* fix: sync runner

* feat: collection inherite

* feat: collecton inherits

* feat: cannot be modified after inheritance and saving

* feat: collection inherit for graph

* feat: collection inherits

* fix: drop inhertied field

* fix: should throw error when type conflit

* feat: output inherited fields

* feat: bulk update collection fields

* feat: collection fields

* feat: collection fields

* test: create relation with child table

* fix: test

* fix: test

* fix: test

* feat: style impove

* test: should not replace field with difference type

* feat: add text

* fix: throw error when replace field with difference type

* feat: overriding

* feat: kan bankanban group fields

* feat: calendar block fields

* feat: kan bankanban group fields

* fix: test

* feat: relationship fields

* feat: should delete child's field when parent field deleted

* feat: foreign key filter

* fix: build error & multiple inherit destory field

* fix: test

* chore: disable error

* feat: no recursive update associations (#1091)

* feat: update associations

* fix(collection-manager): should update uiSchema

* chore: flip if

* feat: mutile inherits

* feat: db dialect

* feat: inherits show by database

* chore: git hash into docker image

* fix: js gzip

* fix: dockerfile

* chore: error message

* feat: overriding

* feat: overriding

* feat: overriding

* feat: local

* feat: filter fields by interface

* fix: database logging env

* test: replace hasOne target

* feat: add view

* feat: local

* chore: enable error

* fix: update docs

Co-authored-by: katherinehhh <katherine_15995@163.com>
Co-authored-by: chenos <chenlinxh@gmail.com>
2022-11-16 12:53:58 +08:00
chenos
688387413d
feat: no recursive update associations (#1091)
* feat: update associations

* fix(collection-manager): should update uiSchema
2022-11-15 20:37:26 +08:00
ChengLei Shao
83cc19a013
fix: reference options sync (#1061)
* fix: sync onDelete options between field and reverseField

* feat: reference compatibility
2022-11-10 21:28:33 +08:00
lyf-coder
ce5f835829
test(collection-manager): 20221104151410-update-collections-hidden test correct (#1042)
fix new version test fail
2022-11-05 01:38:39 +08:00
chenos
dcee3dd94a chore(versions): 😊 publish v0.8.0-alpha.13 2022-11-04 21:23:02 +08:00
lyf-coder
8996dc6899
test(collection-manager): migration - 20221104151410-update-collections-hidden test optimize (#1040) 2022-11-04 20:44:12 +08:00
lyf-coder
dd20951323
chore(collection-manager): migration - 20221104151410-update-collections-hidden (#1039) 2022-11-04 17:17:35 +08:00
chenos
3aa7c0787a
fix: db sync failed (#1037)
* fix: db sync failed

* fix: remove db sync
2022-11-04 15:38:08 +08:00
ChengLei Shao
b3f3883435
fix: association accessors rebind (#1027)
* chore: test

* chore: test

* fix: association accessors rebind

* fix: test
2022-11-04 09:04:53 +08:00
chenos
642e04490d chore(versions): 😊 publish v0.8.0-alpha.9 2022-11-02 22:27:03 +08:00
chenos
0e70e3848a
feat: improve collection manager (#1013)
* feat: 图形化管理数据表

* feat: 图形化管理数据表

* feat: 图形化管理数据表

* feat: 图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat(collection-manager): add foreignKey Field and support relate field record foreignKey info

through collection record into collections and foreignKey field record info fields

* fix(collection-manager): if has through collection then don't create through collections record

* fix(client/route-switch): skip sub routes

* feat: 添加graphpostion

* feat: 图形化collection新增表时刷新数据

* fix(collection-manager): refactor afterCreateForRelateField

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化样式优化

* feat: styling

* feat: 图形化样式优化

* feat: 图形化样式优化

* feat: 图形化数据表多语言完善

* feat: 图形化数据表多语言完善

* feat: improve code

* feat: 图形化数据表连线样式修改

* feat: 图形化数据表样式修改

* feat: 图形化数据表样式修改

* feat: 图形化数据表样式修改

* feat: 图形化数据表样式修改

* fix(collection-manager): fix afterCreateForRelateField

* feat: 样式优化

* feat: 样式优化

* feat: afterCreateForForeignKeyField

* fix: timestamps: false

* feat: 连线锚点优化

* fix(collection-manager): when del foreign key field, relate fields will be del too

* fix: update package.json

* fix: update package.json

* feat: 文件名大小写

* feat: 连线锚点优化

* feat: 连线锚点通过计算得到样式优化

* feat: 连线锚点通过计算得到样式优化

* fix: fk

* fix: remove index

* feat: 连线hover时高亮

* fix: test error

* feat: 初始化计算位置

* feat: 初始化时计算坐标位置

* feat: 初始化时计算坐标位置

* feat: improve code (#933)

* fix: built in

* feat: 没有关系字段时也要连线

* feat: 自关联也要连线

* fix: styling

* feat: 滚动条问题

* feat: 拖拽优化

* feat: 画布paddig优化

* feat: 编辑时支持反向关联字段配置

* feat: 画布拖拽滚动优化

* feat: 画布拖拽滚动优化

* fix: reload

* feat: 修复数据表新建重叠

* fix: refreshCM & refreshGM

* feat: 修复表达式输入框显示异常

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* fix: 消除代码警告

* fix: 消除代码警告

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化

* feat: 渲染性能优化

* feat: 外键生成在位置在前面

* feat: 限制表最多显示10个字段其余滚动

* feat: 移动表位置的连线重新计算最优位置

* fix: error

* feat: 布局自动换行

* fix: test error

* fix: xpipe.eq

* fix: upgrade error

* fix: upgrade error

* feat: 选中表时只显示和目标表关联的表和连线

* feat: 连线优化

* fix: maxListenersExceededWarning

* feat: 连线优化

* feat: powerby样式优化

* feat: 表筛选优化

* feat: 新建字段优化

* feat: 点击线高亮主外键和关联字段

* feat: 点击线高亮主外键和关联字段

* feat: 鼠标hover连线高亮主外键和关联字段

* fix(collection-manager): foreign key sorting should follow ID

* fix(client/config-relation-field): set Relation field's ReverseField default value is false

* feat: 卡片默认显示主外键和关联字段其余通过折叠展示且分组区分显示

* fix(client/collection-manager): don't display auto create through collections and foreign key

only display in graph menu

* feat: 样式优化

* feat: 添加字段时默认展开折叠

* feat: 样式优化

* feat: foreign field migration (#1001)

* feat: 补充多语言

* feat: settings center tabs

* feat: 主键判断primaryKey

* fix(collection-manager): foreign key sorting should follow primaryKey

* fix(client/block-select-collection): filter auto create through collections

* fix(client/block-config-fields): filter isForeignKey fields

* fix(client/configuration-table): relation fileds select collection filter auto create through

* feat: 多对多连线高亮时全亮

* feat: 选中多对多中的一张表另一张表也显示

* feat: 连线mouseleave事件

* feat: 多语言更新

* feat: 计算新建表位置优化

* feat: 添加自动布局

* feat(client/configure-fields): categorize fields

* fix(client/configure-fields): display foreign key fields

* fix(client): package reference

* fix: remove graph

* fix: remove

Co-authored-by: 唐小爱 <tangxiaoai@192.168.0.103>
Co-authored-by: lyf-coder <lyf-coder@foxmail.com>
Co-authored-by: katherinehhh <katherine_15995@163.com>
Co-authored-by: ChengLei Shao <chareice@live.com>
Co-authored-by: mytharcher <mytharcher@gmail.com>
2022-11-02 22:13:25 +08:00
chenos
d5680f80d7 chore(versions): 😊 publish v0.8.0-alpha.8 2022-11-01 18:34:12 +08:00
chenos
85ead5375a
chore(versions): 😊 publish v0.8.0-alpha.7 (#1002) 2022-11-01 17:29:49 +08:00
chenos
3453f46997 chore(versions): 😊 publish v0.8.0-alpha.5 2022-11-01 00:50:00 +08:00
ChengLei Shao
9f5f2d6028
feat: reference check (#989)
* chore: test

* chore: test

* chore: test code

* feat:  on delete restrict

* feat: on delete cascade

* feat:  on delete set null

* feat: reference unbind

* fix: test

* fix: acl test

* fix: test on Windows

* fix: database recreate

* fix: application reload

* fix: multi-app-manager test

* fix: test

* feat: ondelete

* fix: hasOne field onDelete

Co-authored-by: chenos <chenlinxh@gmail.com>
2022-10-31 22:45:39 +08:00
chenos
f67afba964
feat: improve code (#978)
* feat: 图形化管理数据表

* feat: 图形化管理数据表

* feat: 图形化管理数据表

* feat: 图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 完善图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat: 样式优化图形化管理数据表

* feat(collection-manager): add foreignKey Field and support relate field record foreignKey info

through collection record into collections and foreignKey field record info fields

* fix(collection-manager): if has through collection then don't create through collections record

* fix(client/route-switch): skip sub routes

* feat: 添加graphpostion

* feat: 图形化collection新增表时刷新数据

* fix(collection-manager): refactor afterCreateForRelateField

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化collection存储位置

* feat: 图形化样式优化

* feat: styling

* feat: 图形化样式优化

* feat: 图形化样式优化

* feat: 图形化数据表多语言完善

* feat: 图形化数据表多语言完善

* feat: improve code

* feat: 图形化数据表连线样式修改

* feat: 图形化数据表样式修改

* feat: 图形化数据表样式修改

* feat: 图形化数据表样式修改

* feat: 图形化数据表样式修改

* fix(collection-manager): fix afterCreateForRelateField

* feat: 样式优化

* feat: 样式优化

* feat: afterCreateForForeignKeyField

* fix: timestamps: false

* feat: 连线锚点优化

* fix(collection-manager): when del foreign key field, relate fields will be del too

* fix: update package.json

* fix: update package.json

* feat: 文件名大小写

* feat: 连线锚点优化

* feat: 连线锚点通过计算得到样式优化

* feat: 连线锚点通过计算得到样式优化

* fix: fk

* fix: remove index

* feat: 连线hover时高亮

* fix: test error

* feat: 初始化计算位置

* feat: 初始化时计算坐标位置

* feat: 初始化时计算坐标位置

* feat: improve code (#933)

* fix: built in

* feat: 没有关系字段时也要连线

* feat: 自关联也要连线

* fix: styling

* feat: 滚动条问题

* feat: 拖拽优化

* feat: 画布paddig优化

* feat: 编辑时支持反向关联字段配置

* feat: 画布拖拽滚动优化

* feat: 画布拖拽滚动优化

* fix: reload

* feat: 修复数据表新建重叠

* fix: refreshCM & refreshGM

* feat: 修复表达式输入框显示异常

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* fix: 消除代码警告

* fix: 消除代码警告

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化(增量渲染)

* feat: 渲染性能优化

* feat: 渲染性能优化

* feat: 外键生成在位置在前面

* feat: 限制表最多显示10个字段其余滚动

* feat: 移动表位置的连线重新计算最优位置

* fix: error

* feat: 布局自动换行

* fix: test error

* fix: xpipe.eq

* fix: upgrade error

* fix: upgrade error

* feat: 选中表时只显示和目标表关联的表和连线

* fix: maxListenersExceededWarning

* feat: remove graph-collection-manager

* fix: remove graph-collection-manager

* fix: update yarn.lock

Co-authored-by: 唐小爱 <tangxiaoai@192.168.0.103>
Co-authored-by: lyf-coder <lyf-coder@foxmail.com>
Co-authored-by: katherinehhh <katherine_15995@163.com>
2022-10-28 15:09:14 +08:00
chenos
249dff16d3
refactor: plugin manager (#965)
* feat: improve code

* chore: update version

* feat: api service

* fix: api services

* feat: improve code

* feat: improve code

* feat: improve code

* feat: pm socket

* fix: test errors

* feat: add built-in plugins before upgrade

* feat: update docs

* feat: improve code

* fix: after load
2022-10-27 13:00:16 +08:00
chenos
3e22a47be6 fix: unbind on error throwing (#914) 2022-10-15 10:47:01 +08:00
Junyi
4247c1b255
Doc: api database events (#887)
* docs: add full sequelize model event types

* feat: update docs

* fix: types

* fix: update docs

* docs: refactor db event apis

* docs: add all events to db api

Co-authored-by: chenos <chenlinxh@gmail.com>
2022-10-14 17:22:32 +08:00
ChengLei Shao
76f5754e20 fix: sync collection field default value (#907) 2022-10-14 10:04:25 +08:00
chenos
f6add23da5 feat(collection-manager): inverse fields can be configured (#883)
* feat: inverse field

* feat: improve code

* feat: translations

* fix: required

(cherry picked from commit 306dca8e5ee1b74562d835a816b72f933465bfb6)

# Conflicts:
#	packages/core/client/src/locale/zh_CN.ts
2022-10-13 12:37:29 +08:00
ChengLei Shao
3082a7d6f8 feat: update option must have filter or filterByTk (#847)
* feat: update option must have filter or filterByTk

* fix: typo

* fix: typo

(cherry picked from commit 83e6f93e1e3a188781530ec7492de1ed917a4dc1)

# Conflicts:
#	packages/plugins/acl/src/server.ts
#	packages/plugins/collection-manager/src/__tests__/field-options/indexes.test.ts
2022-10-13 12:19:05 +08:00
chenos
fd21447810 fix(collection-manger): incorrect scope key parameter
(cherry picked from commit 38421ae0966b4a38c6e7e4f149bf3a911cb4f415)
2022-10-13 12:15:30 +08:00
chenos
8bf23004a1
refactor: middleware (#857)
* refactor: middleware

* fix: test error

* fix: test error

* fix: test

* fix: tag
2022-09-29 21:05:31 +08:00
chenos
f9f8dc78f4
refactor: plugin manager (#775)
* feat: dynamic import plugin client

* refactor: pm

* chore: improve cli

* feat: improve code

* feat: update dependences

* feat: hello plugin

* fix: plugin.enabled

* fix: test error

* feat: improve code

* feat: pm command

* feat: add samples

* fix: redirect

* feat: transitions

* feat: bookmark

* feat: add pm script
2022-09-18 14:10:01 +08:00
Junyi
d1b52c7d96
fix(plugin-cm): fix field disappear after failed to update (#773) 2022-08-24 11:51:14 +08:00
Junyi
e6a2dff79a
fix(plugin-cm): fix unique option default value to update (#768) 2022-08-23 08:59:36 +08:00
chenos
86650f16d9 fix: update package versions 2022-08-21 19:29:07 +08:00
Junyi
a1dc139cf4
feat(plugin-cm): add unique option for base fields (#745)
* feat(plugin-cm): add unique option for base fields

* refactor(plugin-cm): make sure unique constraint sync with field option

* fix(plugin-cm): fix sqlite unique field sync

* fix(plugin-cm): fix unique constraint sync logic

* refactor(plugin-cm): remove unique property for select components

* fix: previous

* fix: test error

Co-authored-by: chenos <chenlinxh@gmail.com>
2022-08-20 23:23:13 +08:00
chenos
7fde444a60
chore(versions): 😊 publish v0.7.4-alpha.7 (#740) 2022-08-15 16:12:12 +08:00
chenos
a3810ac61a
chore(versions): 😊 publish v0.7.4-alpha.4 (#727) 2022-08-12 10:54:10 +08:00
金昶
f4f35bdb43
feat: default value (#679)
* feat: default value

* feat: add global default value

* fix: field default value should be updated

* feat: adjust defaultValue logic

* feat: add hasDefaultValue property

Co-authored-by: chenos <chenlinxh@gmail.com>
2022-08-03 09:32:16 +08:00
chenos
bc12c92091
chore(versions): 😊 publish v0.7.4-alpha.1 (#696)
* docs: update release notes

* chore(versions): 😊 publish v0.7.4-alpha.1

* feat: update docker image version
2022-07-28 23:16:17 +08:00
chenos
83f2e19ef3
chore(versions): 😊 publish v0.7.3-alpha.1 (#657) 2022-07-20 15:28:13 +08:00
chenos
451d6ae974
chore(versions): 😊 publish v0.7.2-alpha.7 (#611)
* fix(cli): db sync error
* fix(cli): upgrade error
* feat: update docker image version
2022-07-10 00:41:36 +08:00