summaryrefslogtreecommitdiff
path: root/src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-21 18:40:17 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-21 18:40:17 +0800
commitf8830705272cfa2c877cd0b984f61d1fa7a77ec2 (patch)
tree80afb54d4972915db413128917128f17a7d3458c /src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj
parentcf214889490a62ba4fe84fb0055bc2133776e8a2 (diff)
downloadliving-village-f8830705272cfa2c877cd0b984f61d1fa7a77ec2.tar.gz
feat(occupation): P11 每日任务生成纯函数 + TaskState 状态机(Kernel 侧)
Occupation.fs 增补:TaskState(Offered|Active|Done|Failed)、TaskTemplateId 首期池=农夫3(送粮/帮工/翻土)+渔夫3(夜捕/卖渔/询价)、DailyTask 记录(设计 §2/§3)。生成 = taskHash(seed ^ occupationSeed, dayIndex) mod |pool|,与 Rng.fs splitmix 同源(禁 System.Random),输出只依赖三元组;taskHash 以 5 个 splitmix 已知向量钉死。完成判定 = satisfiesCompletion 纯谓词,信号 TaskSignal(Dialogued/Traded/ArrivedAt/NightAtWater) 全部来自既有事件通道(DialogueEvent/TradeEvent/到达瓦片/夜+水边),TargetNpc/TargetTile None=通配;acceptTask/applySignal/expireAt 状态机纯函数,Sim.step 数值路径零改动。货郎/书生空池 → dailyTaskOf = None。13 例测试:splitmix 向量、池约束、逐日确定性、窗口=整日、中文名、状态机转移、六模板正负完成信号、终态不可复活、逾期判负。
Diffstat (limited to 'src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj')
-rw-r--r--src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj b/src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj
index f7a50d5..c11e064 100644
--- a/src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj
+++ b/src/LivingVillage.Kernel.Tests/LivingVillage.Kernel.Tests.fsproj
@@ -12,6 +12,7 @@
<Compile Include="TradeTests.fs" />
<Compile Include="M5Tests.fs" />
<Compile Include="M6aTests.fs" />
+ <Compile Include="DailyTaskTests.fs" />
<Compile Include="PerformanceTests.fs" />
</ItemGroup>