This commit is contained in:
14
server-rs/crates/module-quest/Cargo.toml
Normal file
14
server-rs/crates/module-quest/Cargo.toml
Normal file
@@ -0,0 +1,14 @@
|
||||
[package]
|
||||
name = "module-quest"
|
||||
edition.workspace = true
|
||||
version.workspace = true
|
||||
license.workspace = true
|
||||
|
||||
[features]
|
||||
default = []
|
||||
spacetime-types = ["dep:spacetimedb"]
|
||||
|
||||
[dependencies]
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
shared-kernel = { path = "../shared-kernel" }
|
||||
spacetimedb = { workspace = true, optional = true }
|
||||
55
server-rs/crates/module-quest/README.md
Normal file
55
server-rs/crates/module-quest/README.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# 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` 为准。
|
||||
1156
server-rs/crates/module-quest/src/lib.rs
Normal file
1156
server-rs/crates/module-quest/src/lib.rs
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user