fix(pages): 收紧部署包与 Agent 同步边界

完成 V2 Phase 0 安全与一致性前置:统一真实归档限额、流式拉取、候选裁剪、保留上传删除语义及 Pages 路由引用锁。
This commit is contained in:
deqiying
2026-07-19 16:42:45 +08:00
parent f386674464
commit 4e8ec23264
47 changed files with 4005 additions and 759 deletions
+4
View File
@@ -30,6 +30,10 @@ sidebar: false
- WAF 规则编辑器支持为节点自定义显示名称,并从节点库拖放到画布指定位置添加节点。
- WAF 规则画布支持右键删除节点或连线,并屏蔽浏览器默认右键菜单。
### 修复
- 修复 Pages 部署包路径校验、归档展开限额、历史版本裁剪、代理路由绑定与 Agent 下载过程中的安全和一致性问题;大包改为流式处理,部署入口、旧版目录切换、保留版本及上传记录在并发场景下更加可靠。
## [v3.4.0] - 2026-07-19
### 新增
+43 -2
View File
@@ -3738,6 +3738,12 @@ const docTemplate = `{
"schema": {
"$ref": "#/definitions/response.Any"
}
},
"409": {
"description": "系统保留类型或存储只读",
"schema": {
"$ref": "#/definitions/response.Any"
}
}
}
}
@@ -12535,6 +12541,12 @@ const docTemplate = `{
"$ref": "#/definitions/response.Any"
}
},
"409": {
"description": "系统保留类型或存储只读",
"schema": {
"$ref": "#/definitions/response.Any"
}
},
"500": {
"description": "内部错误",
"schema": {
@@ -12729,6 +12741,12 @@ const docTemplate = `{
"schema": {
"$ref": "#/definitions/response.Any"
}
},
"409": {
"description": "系统保留类型或存储只读",
"schema": {
"$ref": "#/definitions/response.Any"
}
}
}
}
@@ -14574,11 +14592,20 @@ const docTemplate = `{
"deployment_id": {
"type": "integer"
},
"file_count": {
"type": "integer"
},
"hash": {
"type": "string"
},
"package_size": {
"type": "integer"
},
"project_id": {
"type": "integer"
},
"total_size": {
"type": "integer"
}
}
},
@@ -16568,9 +16595,15 @@ const docTemplate = `{
"observability.AccessLogView": {
"type": "object",
"properties": {
"bytes_sent": {
"type": "integer"
},
"cache_status": {
"type": "string"
},
"created_at": {
"type": "string"
},
"host": {
"type": "string"
},
@@ -16595,6 +16628,12 @@ const docTemplate = `{
"remote_addr": {
"type": "string"
},
"request_length": {
"type": "integer"
},
"request_time_ms": {
"type": "integer"
},
"status_code": {
"type": "integer"
},
@@ -19310,7 +19349,8 @@ const docTemplate = `{
"block",
"ip_match",
"geo_match",
"pow"
"pow",
"ua_check"
],
"x-enum-varnames": [
"RuleNodeStart",
@@ -19318,7 +19358,8 @@ const docTemplate = `{
"RuleNodeBlock",
"RuleNodeIPMatch",
"RuleNodeGeoMatch",
"RuleNodePoW"
"RuleNodePoW",
"RuleNodeUACheck"
]
},
"waf.RulePosition": {
+43 -2
View File
@@ -3731,6 +3731,12 @@
"schema": {
"$ref": "#/definitions/response.Any"
}
},
"409": {
"description": "系统保留类型或存储只读",
"schema": {
"$ref": "#/definitions/response.Any"
}
}
}
}
@@ -12528,6 +12534,12 @@
"$ref": "#/definitions/response.Any"
}
},
"409": {
"description": "系统保留类型或存储只读",
"schema": {
"$ref": "#/definitions/response.Any"
}
},
"500": {
"description": "内部错误",
"schema": {
@@ -12722,6 +12734,12 @@
"schema": {
"$ref": "#/definitions/response.Any"
}
},
"409": {
"description": "系统保留类型或存储只读",
"schema": {
"$ref": "#/definitions/response.Any"
}
}
}
}
@@ -14567,11 +14585,20 @@
"deployment_id": {
"type": "integer"
},
"file_count": {
"type": "integer"
},
"hash": {
"type": "string"
},
"package_size": {
"type": "integer"
},
"project_id": {
"type": "integer"
},
"total_size": {
"type": "integer"
}
}
},
@@ -16561,9 +16588,15 @@
"observability.AccessLogView": {
"type": "object",
"properties": {
"bytes_sent": {
"type": "integer"
},
"cache_status": {
"type": "string"
},
"created_at": {
"type": "string"
},
"host": {
"type": "string"
},
@@ -16588,6 +16621,12 @@
"remote_addr": {
"type": "string"
},
"request_length": {
"type": "integer"
},
"request_time_ms": {
"type": "integer"
},
"status_code": {
"type": "integer"
},
@@ -19303,7 +19342,8 @@
"block",
"ip_match",
"geo_match",
"pow"
"pow",
"ua_check"
],
"x-enum-varnames": [
"RuleNodeStart",
@@ -19311,7 +19351,8 @@
"RuleNodeBlock",
"RuleNodeIPMatch",
"RuleNodeGeoMatch",
"RuleNodePoW"
"RuleNodePoW",
"RuleNodeUACheck"
]
},
"waf.RulePosition": {
+28
View File
@@ -760,10 +760,16 @@ definitions:
properties:
deployment_id:
type: integer
file_count:
type: integer
hash:
type: string
package_size:
type: integer
project_id:
type: integer
total_size:
type: integer
type: object
github_com_Rain-kl_Wavelet_pkg_protocol.WAFIPGroup:
properties:
@@ -2085,8 +2091,12 @@ definitions:
type: object
observability.AccessLogView:
properties:
bytes_sent:
type: integer
cache_status:
type: string
created_at:
type: string
host:
type: string
id:
@@ -2103,6 +2113,10 @@ definitions:
type: string
remote_addr:
type: string
request_length:
type: integer
request_time_ms:
type: integer
status_code:
type: integer
user_agent:
@@ -3908,6 +3922,7 @@ definitions:
- ip_match
- geo_match
- pow
- ua_check
type: string
x-enum-varnames:
- RuleNodeStart
@@ -3916,6 +3931,7 @@ definitions:
- RuleNodeIPMatch
- RuleNodeGeoMatch
- RuleNodePoW
- RuleNodeUACheck
waf.RulePosition:
properties:
x:
@@ -6157,6 +6173,10 @@ paths:
description: 文件不存在
schema:
$ref: '#/definitions/response.Any'
"409":
description: 系统保留类型或存储只读
schema:
$ref: '#/definitions/response.Any'
security:
- SessionCookie: []
summary: 删除文件
@@ -11589,6 +11609,10 @@ paths:
description: 未登录
schema:
$ref: '#/definitions/response.Any'
"409":
description: 系统保留类型或存储只读
schema:
$ref: '#/definitions/response.Any'
"500":
description: 内部错误
schema:
@@ -11622,6 +11646,10 @@ paths:
description: 文件不存在
schema:
$ref: '#/definitions/response.Any'
"409":
description: 系统保留类型或存储只读
schema:
$ref: '#/definitions/response.Any'
security:
- SessionCookie: []
summary: 删除我的文件