feat(agc): 发布透传二创核心改动说明并暴露本地来源记录
This commit is contained in:
@@ -626,6 +626,7 @@ pub(super) fn run() {
|
||||
list_platform_game_catalog,
|
||||
read_public_game_cover_preview,
|
||||
read_public_game_detail,
|
||||
read_local_project_fork_source,
|
||||
read_game_distribution_publication,
|
||||
publish_local_project_game,
|
||||
read_game_creator_app_config,
|
||||
|
||||
@@ -1762,6 +1762,9 @@ pub(crate) async fn publish_local_project_game(
|
||||
include_project_bundle: Option<bool>,
|
||||
// 买断价(整数泥点,`0` 表示免费)。旧前端不传时为 `None`,按免费提交,保持向后兼容。
|
||||
price_mud_points: Option<u64>,
|
||||
// 衍生作品的「本次核心改动说明」(母版可空):面板采集后原样透传;必填与长度规则只在服务端
|
||||
// (`game_distribution_change_summary_violation`),这里不预校验,避免两套判据漂移。
|
||||
change_summary: Option<String>,
|
||||
) -> Result<GameDistributionPublishResult, String> {
|
||||
let snapshot = require_platform_session()?;
|
||||
let app_data_dir = app
|
||||
@@ -1915,9 +1918,12 @@ pub(crate) async fn publish_local_project_game(
|
||||
// 买断价随版本冻结;面板已本地校验,这里透传服务端口径的整数泥点。
|
||||
price_mud_points,
|
||||
game_metadata: metadata,
|
||||
// 二创「本次核心改动说明」:AGC 目前没有收集它的入口(发布设置页由另一条链路接线),
|
||||
// 服务端把 `None` 当「未填写」且序列化时省略该键,因此与旧客户端行为一致。
|
||||
change_summary: None,
|
||||
// 二创「本次核心改动说明」:面板采集后原样透传;必填与长度规则只在服务端
|
||||
// (`game_distribution_change_summary_violation`),这里不预校验,避免两套判据漂移。
|
||||
// trim 后为空按「未填写」处理,与契约的 skip_serializing_if 语义一致。
|
||||
change_summary: change_summary
|
||||
.map(|value| value.trim().to_string())
|
||||
.filter(|value| !value.is_empty()),
|
||||
};
|
||||
let version_value = request_json(
|
||||
&client,
|
||||
|
||||
@@ -85,6 +85,22 @@ fn emit_fork_stage(app: &tauri::AppHandle, stage: ForkSyncStage) {
|
||||
}
|
||||
}
|
||||
|
||||
/// 读本项目的改编来源记录(`.agent/fork-source.json`)。
|
||||
///
|
||||
/// 发布面板用它判断「这是不是衍生作品」:衍生作品的「本次核心改动说明」必填、授权档位继承父作品
|
||||
/// 且不可选(服务端口径)。文件缺失/损坏按「不是衍生作品」处理(`None`),与发布链路读它时的口径
|
||||
/// 一致——同一个可选元数据文件不该让面板报错。
|
||||
#[tauri::command]
|
||||
pub(crate) fn read_local_project_fork_source(
|
||||
project_path: String,
|
||||
) -> Result<Option<ProjectForkSourceRecord>, String> {
|
||||
let root = Path::new(project_path.trim());
|
||||
if root.as_os_str().is_empty() {
|
||||
return Err("读取改编来源需要本地项目路径".to_string());
|
||||
}
|
||||
Ok(read_project_fork_source(root))
|
||||
}
|
||||
|
||||
/// 从平台作品 Fork:按取件形态建成项目。
|
||||
///
|
||||
/// - `source: "project"`(工程源包):解压即得作者的工程,再走标准初始化补 `.agent` 身份。
|
||||
|
||||
Reference in New Issue
Block a user