drinkzen-admin-cli 0.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- drinkzen_admin_cli-0.2.4/PKG-INFO +181 -0
- drinkzen_admin_cli-0.2.4/README.md +159 -0
- drinkzen_admin_cli-0.2.4/drinkzen_admin/__init__.py +3 -0
- drinkzen_admin_cli-0.2.4/drinkzen_admin/cli.py +547 -0
- drinkzen_admin_cli-0.2.4/drinkzen_admin/client.py +90 -0
- drinkzen_admin_cli-0.2.4/drinkzen_admin/config.py +130 -0
- drinkzen_admin_cli-0.2.4/drinkzen_admin/formatting.py +34 -0
- drinkzen_admin_cli-0.2.4/drinkzen_admin/menu_options.py +76 -0
- drinkzen_admin_cli-0.2.4/drinkzen_admin_cli.egg-info/PKG-INFO +181 -0
- drinkzen_admin_cli-0.2.4/drinkzen_admin_cli.egg-info/SOURCES.txt +15 -0
- drinkzen_admin_cli-0.2.4/drinkzen_admin_cli.egg-info/dependency_links.txt +1 -0
- drinkzen_admin_cli-0.2.4/drinkzen_admin_cli.egg-info/entry_points.txt +2 -0
- drinkzen_admin_cli-0.2.4/drinkzen_admin_cli.egg-info/top_level.txt +3 -0
- drinkzen_admin_cli-0.2.4/pyproject.toml +36 -0
- drinkzen_admin_cli-0.2.4/setup.cfg +4 -0
- drinkzen_admin_cli-0.2.4/tests/test_config.py +93 -0
- drinkzen_admin_cli-0.2.4/tests/test_standalone_cli.py +113 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: drinkzen-admin-cli
|
|
3
|
+
Version: 0.2.4
|
|
4
|
+
Summary: Standalone CLI client for DrinkZen Admin operations
|
|
5
|
+
Author: DrinkZen Team
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://drinkzen.cn
|
|
8
|
+
Project-URL: Source, https://github.com/xiaolinstar/drinkzen
|
|
9
|
+
Project-URL: Issues, https://github.com/xiaolinstar/drinkzen/issues
|
|
10
|
+
Keywords: drinkzen,admin,beverage,operations,cli
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Requires-Python: >=3.9
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
|
|
23
|
+
# drinkzen-admin-cli
|
|
24
|
+
|
|
25
|
+
`drinkzen-admin-cli` 是奶茶仙人(DrinkZen)运营管理后台的轻量级、零外部依赖 Python 命令行工具。
|
|
26
|
+
可由管理员直接在终端使用,也可挂载至用户自己的 AI Agent(如 Antigravity / Claude / Cursor 等)进行安全的辅助审核与菜单数据治理。
|
|
27
|
+
|
|
28
|
+
> 💡 **命令定位说明**:
|
|
29
|
+
>
|
|
30
|
+
> - `drinkzen-admin`:管理员与数据运营专属 CLI,用于配置管理、品牌管理、菜单模板配置、Logo 上传与用户贡献审核。
|
|
31
|
+
> - `drinkzen`:(规划中)普通用户专属 CLI,用于查询饮品热量、记录饮用与管理每日预算。
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 快速安装与分发方式
|
|
36
|
+
|
|
37
|
+
### 方式 1:通过 PyPI 安装(正式发布后推荐)
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
pipx install drinkzen-admin-cli
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 方式 2:通过 Git URL 一键直接安装(预发布或源码验证)
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
pip install "git+https://github.com/xiaolinstar/drinkzen.git#subdirectory=packages/admin-cli"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 方式 3:通过 pipx 隔离环境运行 Git 源码(免污染系统 Python)
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pipx run --spec "git+https://github.com/xiaolinstar/drinkzen.git#subdirectory=packages/admin-cli" drinkzen-admin config show
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 方式 4:在 Monorepo 本地源码开发运行
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# 可编辑安装
|
|
59
|
+
pip install -e packages/admin-cli
|
|
60
|
+
|
|
61
|
+
# 或直接通过 Python 模块运行
|
|
62
|
+
PYTHONPATH=packages/admin-cli python3 -m drinkzen_admin.cli config show
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 密钥与持久化配置管理 (`config`)
|
|
68
|
+
|
|
69
|
+
`drinkzen-admin` 提供了内置的密钥持久化管理,避免每次在终端手动输入敏感 Token 或将其留在 Bash 历史记录中。
|
|
70
|
+
|
|
71
|
+
### 1. 一键保存服务端地址与 Secret
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# 保存远程生产 API 与 Admin Token
|
|
75
|
+
drinkzen-admin config set --set-url "https://api.drinkzen.cn" --set-token "your-secret-admin-token"
|
|
76
|
+
|
|
77
|
+
# 保存本地开发 API
|
|
78
|
+
drinkzen-admin config set --set-url "http://api.drinkzen.localhost:8000" --set-token "local-admin-token"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
配置文件将保存在 `~/.drinkzen/admin.json`,且在 Unix/macOS 系统上自动设置 **`chmod 600`** 权限(仅当前系统用户可读写)。
|
|
82
|
+
|
|
83
|
+
### 2. 查看当前生效的配置与 Secret 脱敏展示
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
drinkzen-admin config show --json
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
输出示例:
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"config_file": "/Users/admin/.drinkzen/admin.json",
|
|
94
|
+
"file_exists": true,
|
|
95
|
+
"active_url": "https://api.drinkzen.cn",
|
|
96
|
+
"url_source": "file",
|
|
97
|
+
"active_token": "secr****1234",
|
|
98
|
+
"token_source": "file"
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 3. 配置加载优先级
|
|
103
|
+
|
|
104
|
+
当执行命令时,配置按如下优先级依次生效:
|
|
105
|
+
|
|
106
|
+
1. **显式命令行参数**:`--url "..."` / `--token "..."`
|
|
107
|
+
2. **系统环境变量**:`DRINKZEN_API_BASE_URL` / `DRINKZEN_ADMIN_TOKEN`
|
|
108
|
+
3. **用户配置文件**:`~/.drinkzen/admin.json`
|
|
109
|
+
4. **内置默认值**:`http://localhost:8000` / `local-admin-token`
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 常用业务命令速查
|
|
114
|
+
|
|
115
|
+
配置好 Secret 后,日常执行命令无需再附带 URL 和 Token:
|
|
116
|
+
|
|
117
|
+
### 1. 品牌管理 (`brand`)
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# 查看品牌列表(支持 --search 与 --active-only)
|
|
121
|
+
drinkzen-admin brand list --search "霸王" --json
|
|
122
|
+
|
|
123
|
+
# 查看具体品牌详情
|
|
124
|
+
drinkzen-admin brand show 霸王茶姬 --json
|
|
125
|
+
|
|
126
|
+
# 更新品牌名称/别名/启用状态(--dry-run 仅预览变更,不真正写库)
|
|
127
|
+
drinkzen-admin brand update 霸王茶姬 --name "霸王茶姬 CHAGEE" --alias "CHAGEE" --dry-run --json
|
|
128
|
+
|
|
129
|
+
# 上传品牌 Logo 并标注数据置信度
|
|
130
|
+
drinkzen-admin brand set-logo 霸王茶姬 ./logo.png --confidence verified --source-name "官方小程序"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 2. 菜单模板管理 (`menu-template`)
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# 导出品牌菜单模板到本地文件
|
|
137
|
+
drinkzen-admin menu-template export 霸王茶姬 --out chagee.json
|
|
138
|
+
|
|
139
|
+
# 本地离线校验 JSON 模板合法性
|
|
140
|
+
drinkzen-admin menu-template validate chagee.json --json
|
|
141
|
+
|
|
142
|
+
# 预览应用新模板到指定品牌
|
|
143
|
+
drinkzen-admin menu-template apply 霸王茶姬 chagee.json --dry-run --json
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 3. 审核任务管理 (`review`)
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# 列出待审核任务
|
|
150
|
+
drinkzen-admin review list --status pending --limit 10 --json
|
|
151
|
+
|
|
152
|
+
# 查看某个审核任务上下文与用户提交数据
|
|
153
|
+
drinkzen-admin review show 102 --json
|
|
154
|
+
|
|
155
|
+
# 审核处理(动作支持 create / merge / supplement / reject)
|
|
156
|
+
drinkzen-admin review resolve 102 create --reason "官方菜单确认无误,同意入库" --dry-run --json
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 安全设计原则
|
|
162
|
+
|
|
163
|
+
1. **零外部第三方依赖**:仅使用 Python 标准库,保证极致的安全与跨平台兼容性。
|
|
164
|
+
2. **不直连数据库**:所有写操作通过带有权限校验与审计追踪的 RESTful API 完成。
|
|
165
|
+
3. **Secret 安全隔离**:配置文件自动进行 0600 文件权限保护,`show` 输出自动脱敏,防止日志/录屏泄露。
|
|
166
|
+
4. **全命令支持 `--dry-run` 与 `--json`**:便于 AI Agent 输出结构化建议并在人工确认后再执行真正变更。
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 发布维护说明
|
|
171
|
+
|
|
172
|
+
发布由 GitHub Actions 的 **Publish Admin CLI** workflow 完成,使用 PyPI Trusted Publishing(OIDC),不使用长期 PyPI Token。
|
|
173
|
+
|
|
174
|
+
首次发布前,项目维护者需要在 PyPI 和 TestPyPI 分别配置对应的 Trusted Publisher:
|
|
175
|
+
|
|
176
|
+
- Owner:`xiaolinstar`
|
|
177
|
+
- Repository:`drinkzen`
|
|
178
|
+
- Workflow:`publish-admin-cli.yml`
|
|
179
|
+
- Environment:TestPyPI 使用 `testpypi`,正式 PyPI 使用 `pypi`
|
|
180
|
+
|
|
181
|
+
先通过 workflow 选择 `testpypi` 并填写当前包版本完成安装验证,再选择 `pypi` 发布正式版本。版本不可覆盖;每次发布前必须先提升 `packages/admin-cli/pyproject.toml` 中的版本号。
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# drinkzen-admin-cli
|
|
2
|
+
|
|
3
|
+
`drinkzen-admin-cli` 是奶茶仙人(DrinkZen)运营管理后台的轻量级、零外部依赖 Python 命令行工具。
|
|
4
|
+
可由管理员直接在终端使用,也可挂载至用户自己的 AI Agent(如 Antigravity / Claude / Cursor 等)进行安全的辅助审核与菜单数据治理。
|
|
5
|
+
|
|
6
|
+
> 💡 **命令定位说明**:
|
|
7
|
+
>
|
|
8
|
+
> - `drinkzen-admin`:管理员与数据运营专属 CLI,用于配置管理、品牌管理、菜单模板配置、Logo 上传与用户贡献审核。
|
|
9
|
+
> - `drinkzen`:(规划中)普通用户专属 CLI,用于查询饮品热量、记录饮用与管理每日预算。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 快速安装与分发方式
|
|
14
|
+
|
|
15
|
+
### 方式 1:通过 PyPI 安装(正式发布后推荐)
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pipx install drinkzen-admin-cli
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### 方式 2:通过 Git URL 一键直接安装(预发布或源码验证)
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pip install "git+https://github.com/xiaolinstar/drinkzen.git#subdirectory=packages/admin-cli"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 方式 3:通过 pipx 隔离环境运行 Git 源码(免污染系统 Python)
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pipx run --spec "git+https://github.com/xiaolinstar/drinkzen.git#subdirectory=packages/admin-cli" drinkzen-admin config show
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 方式 4:在 Monorepo 本地源码开发运行
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# 可编辑安装
|
|
37
|
+
pip install -e packages/admin-cli
|
|
38
|
+
|
|
39
|
+
# 或直接通过 Python 模块运行
|
|
40
|
+
PYTHONPATH=packages/admin-cli python3 -m drinkzen_admin.cli config show
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 密钥与持久化配置管理 (`config`)
|
|
46
|
+
|
|
47
|
+
`drinkzen-admin` 提供了内置的密钥持久化管理,避免每次在终端手动输入敏感 Token 或将其留在 Bash 历史记录中。
|
|
48
|
+
|
|
49
|
+
### 1. 一键保存服务端地址与 Secret
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# 保存远程生产 API 与 Admin Token
|
|
53
|
+
drinkzen-admin config set --set-url "https://api.drinkzen.cn" --set-token "your-secret-admin-token"
|
|
54
|
+
|
|
55
|
+
# 保存本地开发 API
|
|
56
|
+
drinkzen-admin config set --set-url "http://api.drinkzen.localhost:8000" --set-token "local-admin-token"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
配置文件将保存在 `~/.drinkzen/admin.json`,且在 Unix/macOS 系统上自动设置 **`chmod 600`** 权限(仅当前系统用户可读写)。
|
|
60
|
+
|
|
61
|
+
### 2. 查看当前生效的配置与 Secret 脱敏展示
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
drinkzen-admin config show --json
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
输出示例:
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"config_file": "/Users/admin/.drinkzen/admin.json",
|
|
72
|
+
"file_exists": true,
|
|
73
|
+
"active_url": "https://api.drinkzen.cn",
|
|
74
|
+
"url_source": "file",
|
|
75
|
+
"active_token": "secr****1234",
|
|
76
|
+
"token_source": "file"
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 3. 配置加载优先级
|
|
81
|
+
|
|
82
|
+
当执行命令时,配置按如下优先级依次生效:
|
|
83
|
+
|
|
84
|
+
1. **显式命令行参数**:`--url "..."` / `--token "..."`
|
|
85
|
+
2. **系统环境变量**:`DRINKZEN_API_BASE_URL` / `DRINKZEN_ADMIN_TOKEN`
|
|
86
|
+
3. **用户配置文件**:`~/.drinkzen/admin.json`
|
|
87
|
+
4. **内置默认值**:`http://localhost:8000` / `local-admin-token`
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 常用业务命令速查
|
|
92
|
+
|
|
93
|
+
配置好 Secret 后,日常执行命令无需再附带 URL 和 Token:
|
|
94
|
+
|
|
95
|
+
### 1. 品牌管理 (`brand`)
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# 查看品牌列表(支持 --search 与 --active-only)
|
|
99
|
+
drinkzen-admin brand list --search "霸王" --json
|
|
100
|
+
|
|
101
|
+
# 查看具体品牌详情
|
|
102
|
+
drinkzen-admin brand show 霸王茶姬 --json
|
|
103
|
+
|
|
104
|
+
# 更新品牌名称/别名/启用状态(--dry-run 仅预览变更,不真正写库)
|
|
105
|
+
drinkzen-admin brand update 霸王茶姬 --name "霸王茶姬 CHAGEE" --alias "CHAGEE" --dry-run --json
|
|
106
|
+
|
|
107
|
+
# 上传品牌 Logo 并标注数据置信度
|
|
108
|
+
drinkzen-admin brand set-logo 霸王茶姬 ./logo.png --confidence verified --source-name "官方小程序"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 2. 菜单模板管理 (`menu-template`)
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# 导出品牌菜单模板到本地文件
|
|
115
|
+
drinkzen-admin menu-template export 霸王茶姬 --out chagee.json
|
|
116
|
+
|
|
117
|
+
# 本地离线校验 JSON 模板合法性
|
|
118
|
+
drinkzen-admin menu-template validate chagee.json --json
|
|
119
|
+
|
|
120
|
+
# 预览应用新模板到指定品牌
|
|
121
|
+
drinkzen-admin menu-template apply 霸王茶姬 chagee.json --dry-run --json
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### 3. 审核任务管理 (`review`)
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# 列出待审核任务
|
|
128
|
+
drinkzen-admin review list --status pending --limit 10 --json
|
|
129
|
+
|
|
130
|
+
# 查看某个审核任务上下文与用户提交数据
|
|
131
|
+
drinkzen-admin review show 102 --json
|
|
132
|
+
|
|
133
|
+
# 审核处理(动作支持 create / merge / supplement / reject)
|
|
134
|
+
drinkzen-admin review resolve 102 create --reason "官方菜单确认无误,同意入库" --dry-run --json
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 安全设计原则
|
|
140
|
+
|
|
141
|
+
1. **零外部第三方依赖**:仅使用 Python 标准库,保证极致的安全与跨平台兼容性。
|
|
142
|
+
2. **不直连数据库**:所有写操作通过带有权限校验与审计追踪的 RESTful API 完成。
|
|
143
|
+
3. **Secret 安全隔离**:配置文件自动进行 0600 文件权限保护,`show` 输出自动脱敏,防止日志/录屏泄露。
|
|
144
|
+
4. **全命令支持 `--dry-run` 与 `--json`**:便于 AI Agent 输出结构化建议并在人工确认后再执行真正变更。
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 发布维护说明
|
|
149
|
+
|
|
150
|
+
发布由 GitHub Actions 的 **Publish Admin CLI** workflow 完成,使用 PyPI Trusted Publishing(OIDC),不使用长期 PyPI Token。
|
|
151
|
+
|
|
152
|
+
首次发布前,项目维护者需要在 PyPI 和 TestPyPI 分别配置对应的 Trusted Publisher:
|
|
153
|
+
|
|
154
|
+
- Owner:`xiaolinstar`
|
|
155
|
+
- Repository:`drinkzen`
|
|
156
|
+
- Workflow:`publish-admin-cli.yml`
|
|
157
|
+
- Environment:TestPyPI 使用 `testpypi`,正式 PyPI 使用 `pypi`
|
|
158
|
+
|
|
159
|
+
先通过 workflow 选择 `testpypi` 并填写当前包版本完成安装验证,再选择 `pypi` 发布正式版本。版本不可覆盖;每次发布前必须先提升 `packages/admin-cli/pyproject.toml` 中的版本号。
|