Skip to content
Open
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
14 commits
Select commit Hold shift + click to select a range
89d9182
docs(space): 空间配置改版设计与 P1 实现计划 --story=132989396
dengyh Jul 6, 2026
2033944
docs(space): 新增空间配置改版低保真原型(wiremd 线框 + 交互流程)--story=132989396
dengyh Jul 6, 2026
57e58d8
docs(space): 精简空间配置原型说明并移除冗余 html --story=132989396
dengyh Jul 7, 2026
6f3b9be
docs(space): 补充空间配置改版蓝鲸风格简易设计稿 --story=132989396
dengyh Jul 9, 2026
a72af44
docs(space): 补充空间配置改版 P2/P3 实现计划 --story=136012988
dengyh Jul 10, 2026
4545661
docs(space): 调整 API 插件设计稿 common 独立成区与 api_key 粒度测试 --story=132989396
dengyh Jul 22, 2026
c940836
feat: 空间管理空间配置改版 --story=132989396 (#837)
Mianhuatang8 Jul 28, 2026
f89a535
feat: 空间配置优化-后端接口 --story=1070120217132989396
kaedePing Jul 15, 2026
55bb70e
Merge pull request #838 from kaedePing/feat/optimize_space_config
kaedePing Aug 4, 2026
e08fffd
feat: 空间配置优化-后端接口,修复Bug --story=1070120217132989396
kaedePing Aug 6, 2026
c7f4c2d
Merge pull request #853 from kaedePing/feat/optimize_space_config2
kaedePing Aug 6, 2026
2b2d3ea
fix: 空间配置api配置测试接口结构修改 --story=132989396 (#854)
Mianhuatang8 Aug 6, 2026
e6ff31d
feat: 空间配置优化-后端接口,修复新建流程获取api插件的Bug --story=1070120217132989396
kaedePing Aug 6, 2026
a5593df
Merge pull request #855 from kaedePing/feat/optimize_space_config3
kaedePing Aug 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
314 changes: 310 additions & 4 deletions bkflow/space/configs.py

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions bkflow/space/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,10 @@ def validate_configs(self, configs):
logger.exception(f"[validate_configs] error: {e}")
raise serializers.ValidationError(e.message)
return configs


class SpaceConfigVerifySerializer(serializers.Serializer):
space_id = serializers.IntegerField(help_text=_("空间ID"))
name = serializers.CharField(help_text=_("配置项名称"))
value = serializers.JSONField(help_text=_("待验证的配置值"), required=False)
params = serializers.DictField(help_text=_("验证参数"), required=False, default=dict)
32 changes: 32 additions & 0 deletions bkflow/space/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
from bkflow.space.configs import (
ApiGatewayCredentialConfig,
SpaceConfigHandler,
SpaceConfigVerifyNotSupported,
SuperusersConfig,
)
from bkflow.space.exceptions import SpaceConfigDefaultValueNotExists
Expand All @@ -68,6 +69,7 @@
SpaceConfigBaseQuerySerializer,
SpaceConfigBatchApplySerializer,
SpaceConfigSerializer,
SpaceConfigVerifySerializer,
SpaceSerializer,
)
from bkflow.utils.api_client import ApiGwClient, HttpRequestResult
Expand Down Expand Up @@ -404,6 +406,36 @@
SpaceConfig.objects.get_space_config_info(space_id=ser.validated_data["space_id"], simplified=False)
)

@swagger_auto_schema(
method="post",
operation_summary="验证空间配置",
request_body=SpaceConfigVerifySerializer,
)
@action(detail=False, methods=["POST"])
def verify(self, request, *args, **kwargs):
ser = SpaceConfigVerifySerializer(data=request.data)
ser.is_valid(raise_exception=True)
data = ser.validated_data
try:
config_cls = SpaceConfigHandler.get_config(data["name"])
except Exception as e:
return Response({"ok": False, "error": {"message": str(e)}})
try:
# 注入操作人
params = dict(data.get("params", {}))
params.setdefault("operator", getattr(request.user, "username", "admin"))
params.pop("space_id", None)
params.pop("value", None)
verify_data = config_cls.verify(
space_id=data["space_id"], value=data.get("value"), **params
)
return Response({"ok": True, "data": verify_data})
except SpaceConfigVerifyNotSupported as e:
return Response({"ok": False, "error": {"message": str(e), "not_supported": True}})
except Exception as e:
logger.error(f"[space_config verify] name={data['name']} error: {e}")
return Response({"ok": False, "error": {"message": str(e)}})

def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
Expand Down
Loading
Loading