From 5882064295dd2c0a59e2641e6544a3f6729121ea Mon Sep 17 00:00:00 2001 From: shiran <2488252513@qq.com> Date: Sat, 23 May 2026 17:22:48 +0800 Subject: [PATCH] Localize bulk upload script help --- server/scripts/bulk_upload_spots.py | 36 ++++++++++++++++++----------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/server/scripts/bulk_upload_spots.py b/server/scripts/bulk_upload_spots.py index 27f0141..341615e 100644 --- a/server/scripts/bulk_upload_spots.py +++ b/server/scripts/bulk_upload_spots.py @@ -1,7 +1,7 @@ """ -Bulk upload spots through the admin API. +通过管理端 API 批量上传地点。 -Input JSON shape: +JSON 输入结构: [ { "title": "示例地点", @@ -19,8 +19,8 @@ Input JSON shape: } ] -CSV uses the same field names. List fields can be separated by semicolon, comma, -or pipe, for example: images=./a.jpg;./b.jpg and tag_ids=街拍,城市. +CSV 使用相同字段名。列表字段可用分号、逗号或竖线分隔, +例如:images=./a.jpg;./b.jpg,tag_ids=街拍,城市。 """ from __future__ import annotations @@ -121,16 +121,24 @@ class TagResolver: def parse_args() -> argparse.Namespace: - parser = argparse.ArgumentParser(description="Bulk upload spots via admin API.") - parser.add_argument("input", type=Path, help="JSON or CSV data file.") - parser.add_argument("--base-url", default=DEFAULT_BASE_URL, help="API base URL, default: %(default)s") - parser.add_argument("--account", default=DEFAULT_ACCOUNT, help="Admin phone/email.") - parser.add_argument("--password", default=DEFAULT_PASSWORD, help="Admin password.") - parser.add_argument("--creator-id", type=int, help="Default creator_id when an item omits it.") - parser.add_argument("--audit-status", default="approved", choices=["pending", "approved", "rejected", "deleted"]) - parser.add_argument("--timeout", type=float, default=30.0) - parser.add_argument("--dry-run", action="store_true", help="Validate and print payloads without sending requests.") - parser.add_argument("--stop-on-error", action="store_true", help="Abort on the first failed item.") + parser = argparse.ArgumentParser(description="通过管理端 API 批量上传地点。", add_help=False) + parser._positionals.title = "位置参数" + parser._optionals.title = "可选参数" + parser.add_argument("-h", "--help", action="help", help="显示帮助信息并退出。") + parser.add_argument("input", type=Path, help="JSON 或 CSV 数据文件路径。") + parser.add_argument("--base-url", default=DEFAULT_BASE_URL, help="API 基础地址,默认:%(default)s") + parser.add_argument("--account", default=DEFAULT_ACCOUNT, help="管理员手机号或邮箱。") + parser.add_argument("--password", default=DEFAULT_PASSWORD, help="管理员密码。") + parser.add_argument("--creator-id", type=int, help="数据中未填写 creator_id 时使用的默认创建者用户 ID。") + parser.add_argument( + "--audit-status", + default="approved", + choices=["pending", "approved", "rejected", "deleted"], + help="默认审核状态:pending=待审核,approved=已通过,rejected=已驳回,deleted=已删除。默认:%(default)s", + ) + parser.add_argument("--timeout", type=float, default=30.0, help="单次请求超时时间,单位秒。默认:%(default)s") + parser.add_argument("--dry-run", action="store_true", help="只校验并打印提交内容,不登录、不上传图片、不创建地点。") + parser.add_argument("--stop-on-error", action="store_true", help="任意一条数据失败后立即停止。") return parser.parse_args()