module-quest 任务运行时模块说明
日期:2026-04-21
1. package 职责
module-quest 是任务运行时模块 package,当前已经承接下面 4 类纯领域能力:
QuestRecord / QuestStep / QuestReward / QuestProgressSignal等任务状态模型- 任务 step 归一化、active step 选择、状态收口规则
accept -> apply signal -> acknowledge completion -> turn in的最小任务状态流转 helper- 供
crates/spacetime-module聚合表与 reducer 复用的纯 Rust 规则函数
2. 当前已落地的真实范围
当前 crate 已经提供:
QuestRecordInput / QuestRecordSnapshotQuestProgressSignal / QuestSignalApplyInput / QuestSignalApplyOutcomeQuestCompletionAckInput / QuestTurnInInputbuild_quest_record_snapshotapply_quest_signalacknowledge_quest_completionturn_in_quest_recordgenerate_quest_log_id
补充说明:
- 当前 crate 仍保持“纯领域规则”定位,不直接依赖 Axum、SpacetimeDB reducer context 或外部平台。
spacetime-typesfeature 只用于在spacetime-module中复用这些类型做表字段和 reducer 输入。
3. 当前未落地的范围
本 crate 当前明确还没有承接:
- AI 任务意图生成
- 奖励中的货币、好感、情报统一发放
- runtime snapshot 投影
- story action 跨域编排
- Axum 兼容接口 DTO
补充说明:
- 当前
QuestRewardItem的字段已经升级到可无损映射inventory_slot的粒度,包含description / stackable / stack_key / equipment_slot_id。 - 当前
turn_in_quest已在crates/spacetime-module中完成经验奖励到player_progression / chapter_progression的最小联动。 - 当前
turn_in_quest已在crates/spacetime-module中完成物品奖励写入inventory_slot;module-quest本身仍只冻结奖励 contract,真实聚合写入继续由crates/spacetime-module负责。
这些能力后续分别由 module-ai、module-runtime、module-story、api-server 衔接,不在这里堆成大而全服务。
4. 边界约束
module-quest负责任务状态真相与任务规则,生成型任务草案与外部 AI 编排不直接塞进模块内部。- 任务状态最终回写到
crates/spacetime-module聚合的状态模型中,前端兼容接口由crates/api-server暴露。 - 任务不能再次散落到 story service、runtime service 或前端临时状态里分别维护。
- 当前真实工程口径以
docs/technical/M4_RPG_RUNTIME_QUEST_SPACETIMEDB_BASELINE_2026-04-21.md为准。