shopping-cli 3.2.3__tar.gz → 3.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.
- {shopping_cli-3.2.3/shopping_cli.egg-info → shopping_cli-3.2.4}/PKG-INFO +1 -1
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/pyproject.toml +1 -1
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/__init__.py +1 -1
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/cli.py +2 -1
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/cli_adapter_commands.py +21 -1
- {shopping_cli-3.2.3 → shopping_cli-3.2.4/shopping_cli.egg-info}/PKG-INFO +1 -1
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/LICENSE +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/MANIFEST.in +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/README.md +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/setup.cfg +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/agents/__init__.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/agents/agent_cli.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/agents/buyer_cli.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/agents/merchant_agent.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/agents/merchant_daemon.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/agents/merchant_state_helpers.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/agents/tools.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/__init__.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/app.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/auth.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/error_handlers.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/error_response.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/fallback_asgi.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/fastapi_routes.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/handlers/__init__.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/handlers/agents.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/handlers/audit.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/handlers/buyer.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/handlers/catalog.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/handlers/common.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/handlers/conversations.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/handlers/erp.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/handlers/human_review.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/handlers/listings_projection.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/handlers/negotiation.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/idempotency.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/limits.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/request_dispatch.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/request_limits.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/route_matching.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/route_registry.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/route_table.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/routes_agents.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/routes_conversations.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/routes_marketplace.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/routes_merchants.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/api/server.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/cli_agent_commands.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/cli_buyer_commands.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/cli_catalog_commands.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/cli_common.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/cli_conversation_commands.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/cli_erp_commands.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/cli_listing_commands.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/commerce/__init__.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/commerce/adapters.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/commerce/data_source.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/config.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/contracts/kiwi-contracts.lock.json +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/contracts/shopping.negotiation/0.1/capabilities.schema.json +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/contracts/shopping.negotiation/0.1/decision.schema.json +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/contracts/shopping.negotiation/0.1/policy-result.schema.json +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/contracts/shopping.negotiation/0.1/snapshot.schema.json +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/__init__.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/catalog.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/catalog_scoring.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/catalog_text.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/catalog_views.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/channels.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/conversations.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/delivery.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/errors.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/harness.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/limits.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/negotiation.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/negotiation_contracts.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/policies.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/risk.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/core/tokens.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/data_sources/__init__.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/data_sources/adapter.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/data_sources/csv_excel_source.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/data_sources/erp_source.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/db/__init__.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/db/migrations.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/db/models.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/db/provenance.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/db/session.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/http_client.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/listings/__init__.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/listings/projection.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/__init__.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/agents.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/audit.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/buyer_bootstrap.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/conversations.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/human_review.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/negotiation.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/negotiation_gates.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/negotiation_message.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/negotiation_policy_helpers.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/negotiation_policy_result.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/negotiation_snapshot.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/negotiation_snapshot_projection.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/tokens.py +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli.egg-info/SOURCES.txt +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli.egg-info/dependency_links.txt +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli.egg-info/entry_points.txt +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli.egg-info/requires.txt +0 -0
- {shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli.egg-info/top_level.txt +0 -0
|
@@ -866,7 +866,8 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
866
866
|
import_csv = subparsers.add_parser(
|
|
867
867
|
"import-csv-excel", help="Import product facts from CSV / Excel (.xlsx) into the local store"
|
|
868
868
|
)
|
|
869
|
-
import_csv.add_argument("--file",
|
|
869
|
+
import_csv.add_argument("--file", default="", help="Path to .csv / .tsv / .xlsx file (required unless --template)")
|
|
870
|
+
import_csv.add_argument("--template", default="", dest="template", help="写一份 CSV 模板到该路径后退出(不导入)")
|
|
870
871
|
import_csv.add_argument("--merchant", default="", dest="merchant", help="Owning merchant id (or SHOPPING_MERCHANT_ID / KIWI_MERCHANT_ID)")
|
|
871
872
|
import_csv.add_argument("--default-merchant", default="", dest="default_merchant", help=argparse.SUPPRESS)
|
|
872
873
|
import_csv.add_argument("--allowed-merchant", default="", dest="allowed_merchant", help="Tenant boundary: only rows of this merchant are written")
|
|
@@ -18,6 +18,14 @@ from shopping_cli.data_sources.adapter import (
|
|
|
18
18
|
)
|
|
19
19
|
from shopping_cli.db.session import db_session
|
|
20
20
|
|
|
21
|
+
# CSV/Excel 导入模板(与 examples/products-template.csv 一致)。必填列 sku/title/
|
|
22
|
+
# price/stock;可选 currency(缺省 CNY)/ category / description / merchant_id。
|
|
23
|
+
PRODUCTS_TEMPLATE_CSV = (
|
|
24
|
+
"sku,title,price,stock,currency,category,description\n"
|
|
25
|
+
"VQ-001,智能保温杯 500ml,129.00,50,CNY,kitchenware,316 不锈钢内胆真空保温\n"
|
|
26
|
+
"VQ-002,桌面无线充电器 15W,89.00,120,CNY,electronics,兼容 QC3.0\n"
|
|
27
|
+
)
|
|
28
|
+
|
|
21
29
|
|
|
22
30
|
def cmd_adapters_list(args: argparse.Namespace) -> None:
|
|
23
31
|
"""列出已注册适配器(Adapter SDK 注册表)。"""
|
|
@@ -28,7 +36,19 @@ def cmd_adapters_list(args: argparse.Namespace) -> None:
|
|
|
28
36
|
|
|
29
37
|
|
|
30
38
|
def cmd_import_csv_excel(args: argparse.Namespace) -> None:
|
|
31
|
-
"""运行 CSV/Excel 适配器导入本地 products
|
|
39
|
+
"""运行 CSV/Excel 适配器导入本地 products 表;--template 只生成模板不导入。"""
|
|
40
|
+
template_path = str(getattr(args, "template", "") or "").strip()
|
|
41
|
+
if template_path:
|
|
42
|
+
with open(template_path, "w", encoding="utf-8", newline="") as fh:
|
|
43
|
+
fh.write(PRODUCTS_TEMPLATE_CSV)
|
|
44
|
+
emit(
|
|
45
|
+
{"ok": True, "message": f"CSV 模板已写入 {template_path}(填好 sku/title/price/stock 后再导入)"},
|
|
46
|
+
getattr(args, "format", "text"),
|
|
47
|
+
)
|
|
48
|
+
return
|
|
49
|
+
file_path = str(args.file or "").strip()
|
|
50
|
+
if not file_path:
|
|
51
|
+
raise SystemExit("--file <path> 必填(或先用 --template <path> 生成模板)")
|
|
32
52
|
db_path = db_path_from_args(args)
|
|
33
53
|
merchant_id = (
|
|
34
54
|
str(args.merchant or "").strip()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/negotiation_policy_helpers.py
RENAMED
|
File without changes
|
{shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/negotiation_policy_result.py
RENAMED
|
File without changes
|
|
File without changes
|
{shopping_cli-3.2.3 → shopping_cli-3.2.4}/shopping_cli/services/negotiation_snapshot_projection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|