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