fix: --encrypt/--license 构建链修复(网关收集项、[license] 注入点、契约测试)

- config.toml:--encrypt 会先 PyArmor 混淆 main.py / server.py,PyInstaller 静态
  分析跟不到里面的 `from chongming.app import app`,网关包整个漏收(打包"成功"、
  产物启动即报 No module named 'chongming')—— 收集清单显式列出 chongming /
  chongming.app 等入口包,注释也从"静态分析可跟到"改准;
- public/config.toml:补 [license] 段(public_key 留空),--license 的注入点,
  缺了会在 prepare 阶段报"未找到 [license] 段的 public_key";
- README:补 --license 的公钥前置条件(keygen → license_public.key 或环境变量);
- test_build_flags.py:4 条契约守卫 —— 真实模板/骨架可注入 [license]、收集清单含
  网关入口包、加密包密钥写进包内且按运行端口径(get_key())可导入。此前用例都
  自造 config.toml,这两类模板漂移测不出来。

实测(device-hub):修复前 --encrypt --license 产物启动报错;修复后网关启动、
授权校验通过、插件从加密 mbank 正常加载、HTTP 正常返回。
This commit is contained in:
2026-10-14 15:29:29 +08:00
parent 774f44f830
commit ac8b563c7d
4 changed files with 77 additions and 3 deletions
+8
View File
@@ -28,6 +28,14 @@ launch_worker_count = "cache"
algorithm = "HS256"
secret_key = "your-secret-key-change-in-production"
[license]
# 机器码授权(厂商 Ed25519 签发):`uv run build --license` 在打包前把厂商公钥注入
# 这里,并把"本产物是否为授权版"烘焙进产物代码(编译后部署侧改不了)。
# public_key 留空 = 未接入授权:开发态不校验;未加 --license 的产物也不校验
# (插件照常加载,不是砖头包)。可选键:path(授权文件,默认 ./license.lic)、
# min_match(指纹容错阈值)、enabled(仅开发态生效;打包产物以构建期烘焙为准)。
public_key = ""
[production]
debug = false
env = "production"