feat(engine): 四座自动化设施——喷灌 / 收割机 / 售货机 / 磨坊
为什么:自动化建筑只有水井和喂食器,中期以后每天的操作只剩浇水喂食 的重复劳动。新设施把"替代行动点动作"的思路推到完整流水线: 浇水(井/喷灌)→ 收割机收熟地 → 磨坊把陈粮变饲料 → 喂食器喂牲口 → 售货机趁高价清库存,人不在也能持续产出。 - config.BUILDINGS 注册 4 座:喷灌系统 2800 金(全量浇水)、 自动收割机 900 金 ×3(每天各收 2 块熟地,刻意不给经验——机器收的 不算劳动,给手动玩法留价值)、自动售货机 1200 金(市价 > 基准价才 出手、每天上限 5 份、越贵越先卖)、饲料磨坊 500 金(1 份最便宜的 作物磨 3 份饲料)。 - engine._run_buildings 扩成六段流水线,顺序即依赖:磨坊排在喂食器前, 早上磨的饲料当天就能喂上;收割机遇满仓停摆、作物留地(同喂食器 缺料停摆哲学——自动系统绝不硬来,更绝不自动花钱)。 - webui / build 动作 / catalog 全部由 config.BUILDINGS 驱动,零改动。 - 测试 +6(喷灌全量浇水、收割入库且无经验、满仓停摆留作物、磨坊挑 最便宜、磨坊→喂食器同日链路、售货机阈值与配额)。修复断言时确认 两个既有行为:引擎自带 START_FEED=5;advance_day 末尾会把动物 fed 复位("喂到了"的证据是 pending 累计而非 fed 本身)。 - 门禁:534 项 OK(skip 39)、ruff/pyright 全绿。
This commit is contained in:
1 parent
2676927c1a
commit
cb4c1e7800
7 files changed
+332
-10
No files matched your search
@@ -48,9 +48,29 @@ requirements.txt 是导出产物只读。门禁(改动后必跑):
|
||||
|
||||
## 远端与推送
|
||||
- https://gitea.4i.hk/hhhge/SimpleFarm(public,main)。推送:
|
||||
`GCM_INTERACTIVE=always git push origin main`(缺它 GCM 拒交互,报
|
||||
"Failed to authenticate");还不行加 GCM_TRACE=1。沙箱会丢
|
||||
`NO_PROXY=gitea.4i.hk no_proxy=gitea.4i.hk GCM_INTERACTIVE=always git push origin main`
|
||||
(NO_PROXY 缺了被系统代理拦成 502;GCM_INTERACTIVE 缺了 GCM 拒交互报
|
||||
"Failed to authenticate")。还不行加 GCM_TRACE=1。沙箱会丢
|
||||
.git/refs/remotes 写入使 status 显示 [gone]——假象,验证推送看 `git ls-remote`。
|
||||
- credential.helper 链已修(2026-09-23 晚):system 级 `helper-selector` 会开
|
||||
选择框等人点导致 push 永久挂死,已用 global **空 helper 重置列表**顶掉,
|
||||
现为:"" → wincred → `!"C:/Program Files/Git/mingw64/bin/git-credential-manager.exe"`
|
||||
(**必须带 `!` 和引号**,否则空格截断)。push 反复挂死先 taskkill 清
|
||||
git.exe/GCM 僵尸(占 GCM 单例锁)。凭据库有 GCM 刷新令牌
|
||||
`git:https://refresh_token.gitea.4i.hk`。
|
||||
- 真浏览器验收(UI bug API 测不出):headless Chrome 自己起进程
|
||||
(--headless=new --remote-debugging-port=9333 --user-data-dir=临时目录,
|
||||
后台任务保活),agent-browser 用 `--cdp 9333` 连(每条命令都要带);
|
||||
系统浏览器 --executable-path 直起会 exit 0 连不上。详见项目技能
|
||||
simplefarm-verify-and-ship。
|
||||
|
||||
## webui 前端铁律(2026-09-23)
|
||||
- **HTTP 头只允许 Latin-1**:用户可输入内容(中文用户名)塞进请求头会让
|
||||
fetch 发送前抛 TypeError。headers() 里非 ASCII 一律不塞(登录态走 Cookie)。
|
||||
- api() 必须接住 fetch 异常并 toast——静默 Promise 拒绝曾让登录后所有写
|
||||
操作失效却毫无痕迹。
|
||||
- localStorage 裸调用全走 lsGet/lsSet 兜底(sandbox iframe 无
|
||||
allow-same-origin 时访问即抛,会炸掉整个启动脚本)。
|
||||
|
||||
## 文档
|
||||
README.md 是入口文档(接口表、SSE 协议、设计取舍);当天记录在
|
||||
|
||||
Reference in new issue
Block a user