feat(pages): 支持 Remote 部署源同步

新增部署源配置与运行态模型、安全下载、租约续期、原子激活和失败补偿。

接入内部任务与脱敏前端交互,并阻止数据库 Trace 和日志展开敏感查询参数。
This commit is contained in:
deqiying
2026-07-19 17:36:51 +08:00
parent 4e8ec23264
commit 38b0516937
58 changed files with 9858 additions and 1075 deletions
+21 -4
View File
@@ -38,6 +38,7 @@ const (
pagesIngestMarkerKey = "pages_ingest_marker"
pagesIngestMarkerV2 = "pages_deployment_v2"
pagesProjectIDMetadataKey = "pages_project_id"
pagesSourceIDMetadataKey = "pages_source_id"
pagesMaxPathLength = 512
bytesPerMiB = 1024 * 1024
pagesExtractedSizeMultiplier = 4
@@ -263,10 +264,29 @@ func ingestPagesDeploymentPackage(
projectID uint,
fileName string,
format pagesarchive.Format,
) (upload.IngestResult, error) {
return ingestPagesDeploymentPackageWithSource(ctx, localPath, checksum, projectID, 0, fileName, format)
}
func ingestPagesDeploymentPackageWithSource(
ctx context.Context,
localPath string,
checksum string,
projectID uint,
sourceID uint,
fileName string,
format pagesarchive.Format,
) (upload.IngestResult, error) {
systemUser := repository.GetSystemUser(ctx)
accessMode := 0
extension := pagesarchive.NormalizeNameExtension(fileName, format)
extra := map[string]any{
pagesIngestMarkerKey: pagesIngestMarkerV2,
pagesProjectIDMetadataKey: strconv.FormatUint(uint64(projectID), 10),
}
if sourceID != 0 {
extra[pagesSourceIDMetadataKey] = strconv.FormatUint(uint64(sourceID), 10)
}
return upload.IngestFromLocalPath(ctx, localPath, upload.IngestRequest{
UserID: systemUser.ID,
FileName: fileName,
@@ -278,10 +298,7 @@ func ingestPagesDeploymentPackage(
SkipExtensionCheck: true,
Policy: upload.PolicyDedupNewRecord,
Metadata: model.UploadMetadata{
Extra: map[string]any{
pagesIngestMarkerKey: pagesIngestMarkerV2,
pagesProjectIDMetadataKey: strconv.FormatUint(uint64(projectID), 10),
},
Extra: extra,
},
})
}