Files
Shiny 340dd241c9 feat: 实现完整的本地配置管理与CLI重构
本次重构实现了标准化的本地配置系统,替换原有的硬编码环境变量读取逻辑:
1. 新增跨平台的原子化配置文件读写,支持Unix和Windows系统
2. 新增init命令用于安全初始化和更新本地凭据
3. 替换原有错误提示文案为更友好的中文提示
4. 更新文档说明新的配置流程和安全规范
5. 新增完整的配置相关测试用例
6. 添加必要的依赖包支持
2026-08-01 02:39:49 +08:00

56 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: lc-shop-crm-agent
description: 安装、更新并安全使用 shop-crm-agent 查询和维护 Shop CRM 项目与独立报价。
---
# lc-shop-crm-agent - Shop CRM Agent 操作流程
## 目的
指导 AI Agent 从公开源码构建 `shop-crm-agent`,并通过正式 Protobuf API 安全操作 CRM 项目和独立报价。
## 安装与更新
1. 仓库固定 clone 为工作区中的 `shop-crm-agent` 目录;与 LightCore 联合开发时二者必须同级。
2. 缺少仓库时,从 `https://code.zhecent.com/open/shop-crm-agent.git` 匿名 clone,不使用来源不明的压缩包或二进制。
3. 检查 `go version` 满足 `go.mod`;缺少 Go 时安装官方 Go 工具链,再继续构建。
4. 首次安装在仓库根目录执行 `go run ./scripts/build.go`,使用 `bin/shop-crm-agent`Windows 使用 `bin/shop-crm-agent.exe`
5. 只运行仓库内 `bin/shop-crm-agent[.exe]`;不得用 `go install` 安装该 CLI,不得将其二进制复制或软链接到仓库外,也不得为该 CLI 修改 `PATH`、Shell 启动文件或系统级配置。
6. 构建成功后执行 `bin/shop-crm-agent init`;让员工在隐藏提示中粘贴 Shop 管理后台只显示一次的 Token,不得要求员工把 Token 发到聊天中。
7. 收到更新通知后先确认 `git status --short` 为空,再执行 `git pull --ff-only`;拉取后重新读取本文件并重新构建。`.env` 被 Git 忽略,正常更新不会改动凭据。
8. 本地存在修改、拉取失败、测试失败、构建失败或版本探针失败时停止,不得强制重置或继续使用半完成产物。
## 运行配置
- 默认生产 API 为 `https://api.zhecent.com`,无需设置 `LIGHTCORE_API_BASE_URL`,且不会回退 localhost。
- Token 只通过 Shop 管理后台 `/shop/crm/settings/agent-credentials` 创建和撤销,绑定当前管理员与所选 scope,明文仅在创建时显示一次;CLI 的 `init` 只把已有 Token 写入本地 `.env`,不管理服务端凭据。
- `.env` 固定在仓库根,由 `init` 创建且已被 Git 忽略;`init` 可重复执行并且每次原子覆盖旧文件,除此之外 Agent 不得读取或修改其内容。
- 业务命令默认从 `.env` 读取 TokenCI 可使用 `LIGHTCORE_SHOP_CRM_AGENT_TOKEN` 覆盖。覆盖 `LIGHTCORE_API_BASE_URL` 时必须同时显式提供对应环境的 Token,不得读取 `.env` 中的生产 Token。
- 不得显示、记录、提交 Token,也不得把真实 Token 写入命令参数、会保留历史的 Shell 命令、普通日志或聊天内容。
- 业务命令使用仓库 `bin/` 下的当前构建产物,精确参数以 `<binary> <subcommand> --help` 为准。
## 操作流程
1. 创建项目前用 `customer-list` 获取真实客户 ID;其他操作先查询真实项目、报价、SKU、层级和产品行 ID。
2. 每个写命令使用稳定且唯一的 `--request-id`;重试同一操作时复用原 ID 和完全相同的参数。
3. 报价内容修改严格执行 `begin -> command -> preview -> commit`;不提交时执行 `discard`
4. 删除先执行 `delete-preview`,只使用其返回的 revision 和 `changeSetId``allowed=false` 时停止。
5. 读取 JSON 响应的 `header.code``header.replayed`、revision、`changeSetId``affectedLineIds`,不得只凭进程退出码推断业务状态。
## 阻塞检查点
- 需求超出项目主线和独立报价时停止;不得转向客户维护、合同、设计画板、跟进、资金、文件、采购或产品库维护。
- 产品库行只提交真实 `sku-id`,不得尝试修改产品库成本;自定义行仅通过明确 flag 修改自身成本。
- 非空层级删除只有用户意图明确时才使用 `--cascade`
- 项目非空、报价锁定、revision 变化、changeSet 不一致或回执状态未知时不得强行继续。
- 请求取消、超时或结果不确定时先查询资源状态,不得盲目生成新 request ID 重复写入。
## 验证
```bash
go test ./...
go build ./...
go run ./scripts/build.go
./bin/shop-crm-agent --version
```