Metadata-Version: 2.4
Name: makea-cli
Version: 0.1.2
Summary: Makea admin CLI (browser login + Makea admin HTTP API)
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27
Requires-Dist: platformdirs>=4.2
Requires-Dist: rich>=13.7
Requires-Dist: typer>=0.12
Description-Content-Type: text/markdown

# makea-cli

给 **Makea** 内部同事用的命令行小工具：连的是线上正式环境，**装好就能用，不用配环境变量、不用改配置文件**。

第一次用时在浏览器里登录一次公司账号，之后在本机保存登录状态，即可查询用户、供应商等（具体能执行哪些命令取决于你的账号权限）。

---

## 怎么用（三步）

1. **安装**（本机需要已安装 [Python 3.10 或以上](https://www.python.org/downloads/)）
  - **从本仓库安装（开发 / 内网 clone）：** 在 `makea-cli/` 目录执行  
   `python3 -m pip install -e .`  
   若提示找不到 `python3`，可改用 `python`。
  - **不经过 GitHub：** 把本包的 **Python** 发行版发布到公司私有 PyPI / Artifact Registry 等，同事执行  
  `python3 -m pip install makea-cli`（或 `pipx install makea-cli`）即可；无需 clone 仓库。
  - **可选 — 用 npm 只占一个全局命令名：** 仓库里 `npm/makea-cli/` 是一个 **薄封装**，`npm install -g` 后会把 `makea-cli` 指到 `python3 -m makea_cli`；**仍需**在同一台机器上先用 `pip` 装好同名 Python 包（npm 不会替你安装 Python 依赖）。适合已经用 npm 管理全局工具的团队。
2. **登录（只需做一次，或过期后再做）**
  ```bash
   makea-cli auth
  ```
   会自动打开浏览器，按公司流程登录即可。完成后可以关掉浏览器标签页。
3. **执行功能**（示例）
  ```bash
   makea-cli list-users
   makea-cli list-suppliers
   makea-cli list-product-orders
   makea-cli list-sampling-orders-by-product <product_reference_id>
   makea-cli list-production-orders-by-product <product_reference_id>
  ```
   **从「产品订单」JSON 下载附件：** `list-product-orders` 返回的每条 `result` 里已有 `user_id` 和 `available_documents`（含 `document_id`、`admin_user_id` 等），一般 **不必再调单独的 document metadata API**。可直接：
   若只有 `product_reference_id`，可用（建议加上设计师 `user_id` 避免扫全库）：
   更多子命令与参数：

退出登录（清除本机保存的令牌）：

```bash
makea-cli auth --logout
```

---

## 登录信息保存在哪

保存在本机当前用户下的应用数据目录里（例如 macOS 常见为 `~/Library/Application Support/makea-cli/`，Linux 常见为 `~/.config/makea-cli/`），文件名类似 `credentials.json`。一般不用手动打开。

---

## 给技术同事：可选环境变量

日常同事 **不需要** 看本节。只有要连 **非线上** 或 **自建环境** 时，才用环境变量覆盖内置地址（默认值在 `makea_cli/config.py` 里）：


| 变量                        | 说明                                             |
| ------------------------- | ---------------------------------------------- |
| `MAKEA_API_BASE_URL`      | API 根地址（无末尾 `/`）                               |
| `MAKEA_COGNITO_DOMAIN`    | Cognito Hosted UI 的**主机名**（不要写 `https://`）     |
| `MAKEA_COGNITO_CLIENT_ID` | Cognito 应用客户端 ID                               |
| `MAKEA_REDIRECT_URI`      | OAuth 回调地址，默认 `http://127.0.0.1:8250/callback` |


---

## 命令一览

- `makea-cli auth` — 浏览器登录并保存令牌  
- `makea-cli auth --logout` — 清除本机令牌  
- `makea-cli list-users` — 列出用户（需管理员权限）  
- `makea-cli list-suppliers` — 列出供应商（需管理员权限）  
- `makea-cli get-quote-requests-by-supplier-id <supplier_id> [--status <status>] [-n <limit>]` — 直连后端按 supplier_id 查询 quote requests  
- `makea-cli get-supplier-links-by-supplier-id <supplier_id> [--link-type SAMPLING|PRODUCTION]` — 直连后端按 supplier_id 查询 supplier links  
- `makea-cli submit-supplier-quote <quote_request_id> --link-name ... --currency ... --sampling-price-amount ... --sampling-price-valid-until ... --production-price-tiers-json ... --sample-lead-time ... --lead-time ... --deliverables-json ... --customer-note ...` — 以供应商身份向指定 quote request 新增 quote（完整参数说明见 `--help`）  
- `makea-cli list-product-orders` — 列出所有设计师产品订单（GET `/admin/designer/get_all_product_orders`）  
- `makea-cli list-sampling-orders-by-product <id>` — 按产品 reference id 列打样单  
- `makea-cli list-production-orders-by-product <id>` — 按产品 reference id 列大货单  
- `makea-cli download-document <document_id> -u <user_id>` — 下载单个文件（GET `/admin/document/download`）  
- `makea-cli download-product-document <product_reference_id> <document_id> -d <designer_user_id>` — 按产品行 + 文档 id 下载（内部用订单列表 JSON，不额外查 metadata）  
- `makea-cli upload-product-document -u <designer_user_id> -p <product_id> -f <path>` — 通用产品文档上传（不限 quote 流程）：上传到 AWS S3 并挂到产品（POST `/admin/designer/upload_document`），返回 document domain 元数据供其它命令使用  
- `makea-cli upload-supplier-document -s <supplier_id> -f <path>` — 上传 supplier 文档到 AWS S3（POST `/admin/supplier/upload_document`），返回 document domain 元数据  
- `makea-cli upload-sampling-order-document <sampling_order_id> -f <path>` — 上传 sampling order 文档到 AWS S3（POST `/admin/sampling_orders/{id}/documents`），返回 document domain 元数据  
- `makea-cli upload-production-order-document <production_order_id> -f <path>` — 上传到 AWS S3 并挂到 production order（POST `/admin/production_orders/{id}/documents`），返回 document domain 元数据  
- `makea-cli upload-production-progress-document <production_order_id> <progress_id> -f <path>` — 上传 production progress 文档到 AWS S3（POST `/admin/production_orders/{id}/progress/{progress_id}/upload`），返回 document domain 元数据  
- `makea-cli upload-financial-documents <product_id> -f <path1> -f <path2>` — 上传一个或多个 financial documents（POST `/admin/products/{product_id}/financial_documents`），返回 financial document 元数据  
- `makea-cli upload-link-document -f <path>` — 上传文件到 AWS S3（POST `/admin/upload_link_document`），返回 document domain 元数据（可作为其它命令的 document 输入）  
- `makea-cli backfill-supplier-id --user-id <cognito_sub> --old-supplier-id <wrong_uuid>` — 供应商 `supplier_id` 迁到 Cognito `sub`（默认 dry-run，加 `--apply` 才写入；详见 `makea-cli backfill-supplier-id --help`）  
- `makea-cli version` — 打印版本号

---

## Claude / Cursor skills（可选）

仓库内 `.claude/skills/` 下放有面向 agent 的操作说明，例如：

- `supplier-user-id-migration` — 供应商 ID 与 Cognito sub 对齐、与 `backfill-supplier-id` 配套

