修复资产计费边界风险
资产生成预扣费改为 fail-closed,避免钱包异常时继续调用外部生成 新增钱包退款 outbox,退款失败时本地落盘并后台重放 拼图首图后台任务改用 SpacetimeDB claim 表实现跨实例互斥 计费 ledger id 统一绑定 request_id,并让前端重试复用 x-request-id 同步 SpacetimeDB bindings、后端架构文档和 Hermes 决策记录
This commit is contained in:
@@ -13,6 +13,16 @@ pub(crate) fn map_puzzle_agent_session_procedure_result(
|
||||
Ok(map_puzzle_agent_session_snapshot(session))
|
||||
}
|
||||
|
||||
pub(crate) fn map_puzzle_background_compile_task_procedure_result(
|
||||
result: PuzzleBackgroundCompileTaskProcedureResult,
|
||||
) -> Result<bool, SpacetimeClientError> {
|
||||
if !result.ok {
|
||||
return Err(SpacetimeClientError::procedure_failed(result.error_message));
|
||||
}
|
||||
|
||||
Ok(result.claimed)
|
||||
}
|
||||
|
||||
pub(crate) fn map_puzzle_work_procedure_result(
|
||||
result: PuzzleWorkProcedureResult,
|
||||
) -> Result<PuzzleWorkProfileRecord, SpacetimeClientError> {
|
||||
@@ -614,6 +624,23 @@ pub struct PuzzleFormDraftSaveRecordInput {
|
||||
pub saved_at_micros: i64,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct PuzzleBackgroundCompileTaskClaimRecordInput {
|
||||
pub task_id: String,
|
||||
pub claim_id: String,
|
||||
pub session_id: String,
|
||||
pub owner_user_id: String,
|
||||
pub claimed_at_micros: i64,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct PuzzleBackgroundCompileTaskReleaseRecordInput {
|
||||
pub task_id: String,
|
||||
pub claim_id: String,
|
||||
pub session_id: String,
|
||||
pub owner_user_id: String,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct PuzzleAgentMessageSubmitRecordInput {
|
||||
pub session_id: String,
|
||||
|
||||
Reference in New Issue
Block a user