feat: 小程序阅读记录与资料链路、管理端用户规则、API/VIP/推荐与运营脚本
- miniprogram: reading-records、imageUrl/mpNavigate、多页资料与 VIP 展示调整 - soul-admin: Users/Settings/UserDetailModal、dist 构建产物更新 - soul-api: user/vip/referral/ckb/db、MBTI 头像管理、user_rule_completion、迁移 SQL - .cursor: karuo-party 与飞书文档;.gitignore 忽略 .tmp_skill_bundle Made-with: Cursor
This commit is contained in:
@@ -4,9 +4,8 @@
|
||||
|
||||
重要说明(微信官方限制):
|
||||
- 代码上传:可用本机「微信开发者工具」CLI 或 miniprogram-ci。
|
||||
- submit_audit:开放平台文档标明主要为「第三方平台代调用」;自有主体使用小程序 appid+secret
|
||||
换取的 access_token 调用时,常见返回 errcode=86000(仅允许第三方代调用),此时必须在
|
||||
mp 后台手动点「提交审核」。
|
||||
- submit_audit:主要为「第三方平台代调用」;自有主体用 appid+secret 常返回 errcode=86000,
|
||||
无法在仓库内替代网页提审;`release` 默认只跑上传+接口调用,不弹浏览器、不提示手动操作。
|
||||
- 「自动过审」不可能由开发者脚本保证:是否通过由微信审核决定。
|
||||
"""
|
||||
from __future__ import annotations
|
||||
@@ -149,6 +148,8 @@ def cmd_submit_audit(
|
||||
version_desc: str,
|
||||
item_json: Path | None,
|
||||
privacy_api_not_use: bool | None,
|
||||
*,
|
||||
quiet: bool = False,
|
||||
) -> dict:
|
||||
token = get_access_token(appid, secret)
|
||||
if item_json and item_json.is_file():
|
||||
@@ -184,18 +185,19 @@ def cmd_submit_audit(
|
||||
except urllib.error.HTTPError as e:
|
||||
raise SystemExit(f"submit_audit HTTP 错误: {e}") from e
|
||||
print(json.dumps(data, ensure_ascii=False, indent=2))
|
||||
if data.get("errcode") == 86000:
|
||||
print(
|
||||
"\n说明 errcode=86000:该接口仅支持「第三方平台」代小程序调用。"
|
||||
"自有主体请在浏览器打开公众平台 → 管理 → 版本管理 → 提交审核。\n"
|
||||
"可先运行: python3 scripts/wechat_miniprogram_release.py open-mp",
|
||||
file=sys.stderr,
|
||||
)
|
||||
elif data.get("errcode") == 61039:
|
||||
print(
|
||||
"\n说明 errcode=61039:上传后隐私/代码检测任务未完成,请等待数分钟后再提交审核。",
|
||||
file=sys.stderr,
|
||||
)
|
||||
if not quiet:
|
||||
if data.get("errcode") == 86000:
|
||||
print(
|
||||
"\n说明 errcode=86000:该接口仅支持「第三方平台」代小程序调用。"
|
||||
"自有主体请在浏览器打开公众平台 → 管理 → 版本管理 → 提交审核。\n"
|
||||
"可先运行: python3 scripts/wechat_miniprogram_release.py open-version",
|
||||
file=sys.stderr,
|
||||
)
|
||||
elif data.get("errcode") == 61039:
|
||||
print(
|
||||
"\n说明 errcode=61039:上传后隐私/代码检测任务未完成,请等待数分钟后再提交审核。",
|
||||
file=sys.stderr,
|
||||
)
|
||||
return data
|
||||
|
||||
|
||||
@@ -291,7 +293,10 @@ def main() -> None:
|
||||
)
|
||||
p_uo.add_argument("--desc", "-d", default="", help="默认:版本 v<版本号>")
|
||||
|
||||
p_rel = sub.add_parser("release", help="先 upload 再 submit-audit(提审失败仍可到后台操作)")
|
||||
p_rel = sub.add_parser(
|
||||
"release",
|
||||
help="上传 → 尝试 submit_audit(默认不弹浏览器、不提示手动打开;可加 --open-browser)",
|
||||
)
|
||||
p_rel.add_argument(
|
||||
"--version",
|
||||
"-v",
|
||||
@@ -305,6 +310,11 @@ def main() -> None:
|
||||
action=argparse.BooleanOptionalAction,
|
||||
default=None,
|
||||
)
|
||||
p_rel.add_argument(
|
||||
"--open-browser",
|
||||
action="store_true",
|
||||
help="完成后打开公众平台版本管理页(默认关闭)",
|
||||
)
|
||||
|
||||
args = p.parse_args()
|
||||
|
||||
@@ -336,18 +346,17 @@ def main() -> None:
|
||||
if args.cmd == "release":
|
||||
d = args.desc.strip() or f"版本 v{args.version}"
|
||||
cmd_upload(args.version, d)
|
||||
if not appid or not secret:
|
||||
print(
|
||||
"未设置 WECHAT_APPID / WECHAT_APPSECRET,跳过 submit-audit。",
|
||||
file=sys.stderr,
|
||||
if appid and secret:
|
||||
vd = (args.version_desc or "").strip() or d
|
||||
cmd_submit_audit(
|
||||
appid,
|
||||
secret,
|
||||
vd,
|
||||
args.item_json,
|
||||
args.privacy_api_not_use,
|
||||
quiet=True,
|
||||
)
|
||||
cmd_open_mp_version()
|
||||
return
|
||||
vd = (args.version_desc or "").strip() or d
|
||||
res = cmd_submit_audit(
|
||||
appid, secret, vd, args.item_json, args.privacy_api_not_use
|
||||
)
|
||||
if res.get("errcode") == 86000:
|
||||
if getattr(args, "open_browser", False):
|
||||
cmd_open_mp_version()
|
||||
return
|
||||
|
||||
|
||||
Reference in New Issue
Block a user