# cmsp cmsp 是内部使用的 Windows 桌面工具:把货憨憨 ERP 中指定 Shopee 店铺的商品,按商品主图到淘宝搜同款,抓取同款商品详情页的介绍视频,下载到本地,再批量上传回货憨憨对应商品,使 Shopee 商品页刷新后能看到视频。 技术栈为 Go + Wails v2 + Vue 3 + Naive UI + SQLite,只支持 Windows。项目采用 DevHarness 工作流:需要工单的任务以 Gitea 工单为单次任务事实来源,Gitea Wiki 保存长期文档,Git 记录代码变更,人负责确认目标和验收。 治理模式为**轻量**。内部工具、单人开发、不对外交付、无常驻服务,因此不设置超出实际风险的门禁。 ## 当前状态 Go 骨架已建立:Wails v2 窗口、参数设置读写、SQLite 存储和脱敏日志可用并有单元测试覆盖。 货憨憨与淘宝的业务功能尚未实现——界面上「下载数据」「下载视频」「上传数据」三个按钮点击后会明确提示还没实现。这些能力目前只存在于仓库外的两份已验证 Python 实现,正在按工单逐步迁移为 Go。 详见 [项目档案](docs/00-project-profile.md) 与 [需求总览](docs/09-product-requirements-overview.md)。 ## 任务闭环 ```text 讨论需求或缺陷 -> 阅读代码并提出方案 -> 人工确认方案 -> 创建单元任务工单(需要时先建 Epic / MVP) -> Agent 实现并测试 -> 提交代码并更新工单 -> 工单集中回写最终证据并等待人工验收 -> 人工验收后在工单记录结论 -> 关闭工单并更新父工单;长期事实变化时才同步 Wiki ``` 轻量模式下符合直接实施条件的小 Bug、局部 UI 和单模块低风险调整不走上述闭环:确认目标 → 最小修改 → 受影响范围测试 → 提交并报告结果。 涉及货憨憨写操作、账号凭据、SQLite 结构迁移、并发或删除数据时必须建工单并按高风险处理。 ## 快速开始 1. 克隆本仓库到本机,例如 `D:\chengma\cmsp`。 2. 创建 Gitea 远端仓库并推送当前引导提交,启用工单和 Wiki。 3. 配置 `wiki-docs.json` 和安全访问方式;优先使用已配置的 Gitea MCP,MCP 不可用时才使用 Gitea API 并记录原因。令牌只通过环境变量或 MCP 安全配置提供,不写入仓库。 4. 按 [新项目文档初始化](docs/07-new-project-documentation-setup.md) 查询线上 Wiki;`Home` 不存在时先创建并回读 `Home`,取得 revision 后再创建其他核心页面。 5. 治理模式已在 [项目档案](docs/00-project-profile.md) 选定为轻量;不可违反的安全规则写在根目录 `AGENTS.md` 的「项目专用规则」。 6. 需要工单时使用 `.gitea/issue_template/` 中的模板。本地 `docs/` 的存在不能证明线上 Wiki 已初始化。 7. 开始产品代码前运行: ```powershell python dev_scripts/harness.py sync --verify ``` ## 常用命令 ```powershell git status --short --branch python dev_scripts/harness.py check --strict python -m unittest discover -s tests -v python dev_scripts/harness.py sync --check ``` 产品构建与测试命令在 Go 骨架建立后补入 [本地开发与验证](docs/04-local-development-and-verification.md)。 ## 目录 ```text AGENTS.md Agent 的通用工作规则与本项目专用红线 CLAUDE.md Claude Code 的规则入口 .gitea/issue_template/ Epic、MVP、单元任务工单模板 docs/ Gitea Wiki 核心页面的只读镜像 docs/task/ 人工明确要求的专项快照,默认为空 wiki-docs.json 核心 Wiki 页面到本地镜像的显式映射 dev_scripts/harness.py check / sync / archive / export 单一入口 dev_scripts/wiki_docs.py Gitea Wiki 客户端与镜像生成库 tests/ DevHarness 结构自测 main.go / app.go Wails 入口与暴露给前端的方法 internal/config/ 参数设置的读写与校验 internal/store/ SQLite,所有状态的唯一事实来源 internal/logx/ 带脱敏的日志 frontend/src/ Vue 3 + Naive UI 界面 config.example.yaml 本机配置模板(config.yaml 不进 Git) ``` `docs/` 由同步工具生成,不要直接编辑。 ## 安全底线 无论治理模式如何裁剪流程,下面几条不可违反: - 账号、密码、token、Cookie、Chrome Profile 内容不得写入代码、日志、工单、Wiki 和提交。 - 淘宝登录必须由使用者手动完成,程序不代填密码、不绕过验证码与安全验证。 - 淘宝登录失效必须中断整批任务,不得降级为单商品失败后继续。 - 对真实店铺的批量写入、覆盖和删除必须获得明确授权。 - 测试结果必须真实,未执行或无法覆盖的验证必须写明。 ## 文档 默认不创建任务归档;`archive`、`export` 只作为人工显式触发的兼容能力。长期文档的唯一编辑入口是 Gitea Wiki,修改顺序为:修改 Wiki → 读取确认 → 导出核心 `docs` → 校验差异 → 提交镜像。