Files
main_plugin_farm/docs/zhenxun-preview-current.md
T

121 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 当前真寻农场:构建、安装与维护
更新日期:2026-10-26。本文按当前源码编写;`11-zhenxun-preview.md`
保留为旧版资料,不能作为当前版本的功能或安装依据。
## 支持范围
主仓库维护共享核心,真寻发布仓库接收生成内容。不要把主仓库的
`integrations/zhenxun` 直接复制到插件目录:其中没有构建生成的私有
共享模块和版本文件。使用生成的预览包或对应发布仓库完整内容。
当前支持注册、农场/地块/详情、种子商店、仓库、购买、播种、收获、
铲除、加锁/解锁、出售,以及已接入的土地操作、虫害和偷菜命令。
实际参数以“农场帮助”为准。新账号初始500农场币、6块普通空地。
签到、活动和作物目录在线更新尚未实现;图片/字体下载不等于作物更新。
## 构建和验证
开发或CI环境需要Python3.10及以上、Pillow、PyYAML、setuptools、wheel,
完整共享测试还需要 `integrations/astrbot/requirements.txt` 中的依赖。
真寻部署环境沿用宿主提供的NoneBot、真寻和Uninfo;仅安装插件的
`requirements.txt`,其Pillow约束为 `>=10.4,<11`,不要强制升级宿主到12。
主仓库根目录执行,输出目录必须尚不存在:
```text
python scripts/ci_font.py
python scripts/check_workflows.py
python scripts/verify_foundation.py
python scripts/build_zhenxun.py --output dist/zhenxun-manual
python scripts/verify_zhenxun.py dist/zhenxun-manual/zhenxun_plugin_farm_preview-<版本>.zip
```
将 `<版本>` 替换为构建实际输出的版本。字体脚本优先复用本地合法字体,
否则下载默认字体;全量测试可显式设置 `FARM_TEST_FONT` 为已准备字体。
源码方式调用渲染工具时设置 `PYTHONPATH=src`。构建帮助图和图片测试
需要可用中文字体。完全离线时应提前准备依赖、字体和所需图片缓存。
CI构建任务会上传 `zhenxun-preview` 附件,解包后包含插件ZIP、哈希文件、
生成仓库及辅助脚本。ZIP和 `FARM-MANIFEST.json` 用于内容一致性验证,
不能把它们当作发布者身份的密码学签名。
## 安装与升级
1. 停止机器人;备份插件代码和完整数据目录,停用会注册相同原指令的
旧农场插件。命令不加测试前缀,不能同时启用旧版和预览版。
2. 在宿主自己的Python环境安装预览包 `requirements.txt`,保留宿主
原有依赖约束。安装脚本不会代为安装依赖或启动机器人。
3. 使用主仓库辅助脚本,或附件中配套的同名脚本安装:
```text
python scripts/install_zhenxun.py <插件ZIP完整路径> --plugins-dir <现有插件父目录>
```
目标目录名为 `zhenxun_plugin_farm_preview`;父目录必须已存在。
安装器拒绝已有目标、坏哈希、路径穿越及符号链接,不覆盖旧插件或玩家数据。
升级时停止机器人,手工备份并移走上一版插件目录,再安装已验证的新包。
4. 配置宿主加载该插件,检查下述数据目录及资源配置,再手工启动。
5. 使用构造的测试账号检查“农场帮助”“开通农场”“我的农场”等命令,
查看日志;本仓库的模拟测试不代替该真实宿主验证。
## 配置、数据及日志
| 项目 | 当前行为 |
| --- | --- |
| 农场图片质量 | 真寻网页配置,整数1~95、默认75,请求时读取;PNG无损不受影响 |
| 高清 | 仅“我的农场 高清”,宽1536,质量max(配置值,85);其他查询拒绝高清 |
| 资源获取地址 | Github、Gitea、farm_service,默认Github,修改后重载 |
| farm_service 地址 | 独立HTTPS基础地址,选择服务源时必须有效,不使用示例占位域名 |
| FARM_PREVIEW_DATA_DIR | 可选宿主启动配置;未设置时使用真寻DATA_PATH下的farm_db目录 |
| FARM_PREVIEW_DEPLOYMENT | 默认zhenxun-preview;改变它会改变玩家身份作用域,不用于改显示名 |
| FARM_PREVIEW_IMAGE_FORMAT | 默认AUTO;编码与分辨率分别设置,按宿主能力选择 |
共享核心数据库为数据目录内的 `farm.sqlite3`,运行日志为
`farm-preview.log`;素材和字体缓存在同一数据目录的独立子目录。
旧 `farm.db` 与新库不是同一种格式,不得直接覆盖或改名冒充新库。
生产旧库迁移应使用独立迁移流程和副本预检,不是安装器的行为。
公开素材和小赖字体由Service仓库分发,默认下载后按大小及SHA256校验,
缓存完整OFL许可。网页不提供自定义字体路径配置;共享Runtime/绘图API
及开发测试支持显式字体路径。下载失败时保留文字业务并记录原因,
修改源后重载插件重试。插件包不包含大型素材及字体ZIP。
作物目录仍随插件内置,当前没有启动检查作物目录更新或定时更新。
已播种规则按快照保存;出售使用当前目录价格,旧库存也受调价影响。
## 备份、回退与卸载
- 备份:先停止机器人,复制完整插件目录与完整数据目录;若存在SQLite
的WAL/SHM文件,随数据一起保存,不能在运行中仅复制主数据库文件。
- 回退:先停止机器人,恢复匹配的代码与停机备份。旧程序可能拒绝新
schema,不把新数据库强行交给旧代码,也不删除或重置库来使它启动。
恢复旧数据会丢失备份之后的进度,先保留当前副本。
- 卸载:停止机器人并取消加载,备份后移走本插件代码即可。保留数据
和缓存供恢复,不要求删除玩家数据库或旧插件目录。
## 工作流发布与Secrets
主仓库 `main` 的push,或手动运行工作流且选择 `publish=true`,在test与
build通过后可触发同步;PR只测试构建,不执行跨仓库发布。
发布固定为 `Shu-Ying/zhenxun_plugin_farm` 的 `main`,并非旧farm-preview。
它会把目标分支内容更新为生成仓库,发布前应核对目标确为分发仓库。
发布任务使用受保护的 `zhenxun-preview` environment,从Secrets读取
`FARM_RELEASE_TOKEN`;按组织规则授予固定目标仓库所需的最小写权限。
不把令牌写进源码、包、命令示例或日志。缺令牌时发布失败,离线
构建和验证仍不需要发布凭据。
`scripts/publish_zhenxun.py <插件ZIP>` 默认离线dry-run;只有显式
`--publish` 才联网,并拒绝脏来源包。普通更新不force,检测分支并发
变化后失败。本轮归档不运行真实发布,不新增或读取任何令牌。
## 本轮证据边界
2026-10-26在Windows/Python3.12.14/Pillow12.3进行了本地离线检查,
实际命令和验收结论以Comet生成报告为准。NoneBot宿主配置的一项测试
因本地缺Pydantic而跳过;不能将其说成通过。CI声明Windows/Linux及
Pillow10.4/12.3矩阵,本机未运行全部矩阵。真实真寻启动、消息发送、
公开资源下载和GitHub发布均不由本地测试证明。