Files
cmautobuy/docs/admin/00-getting-started.md
T
chengmaandClaude Opus 5 4f920f9d8b docs: 排除蝦皮原始报表,并同步主按钮文案
raw_data 不进 Git
原始报表含逐商品台币销售额等商业数据,进了 Git 就是永久历史。
- .gitignore 排除 raw_data/
- 改掉三处"仓库里有一份样本"的失真表述,改为向项目负责人索取
- 06 §2.1 相应加强:既然大样本不进库,admin/testdata/ 下的脱敏小样本
  就必须提交,否则别人拉下来测试跑不了;并写明脱敏做法

主按钮文案 开始自动获取 → 获取任务 ⇄ 停止获取
只改按钮标签。"自动获取"作为功能名保留(状态栏、Tab 顺序、
协调器开关等处不动),05 §4.1 加了一句说明两者不是一回事。

已知遗留:pdd_ui.py 自身仍不一致——构造时用「获取任务」,
但状态机 485/487 行仍是「开始自动获取」/「停止自动获取」,
会覆盖掉构造时的文字。该文件有未提交改动,本次未触碰,
差异已记入 02 §3.1,需另开工单修。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 15:58:09 +08:00

156 lines
5.8 KiB
Markdown
Raw 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.
# 00 Admin 上手指南
- 文档状态:基线草案
- 读者:第一次接手 Admin 的开发者
- 目标:照着做完,能在自己电脑上把 Admin 跑起来,并知道下一步读哪份文档
这份文档只讲"怎么把环境搭好、怎么跑起来"。业务规则不在这里,见 [文档索引](../README.md)。
遇到不认识的词(货运单、upsert、SKU 映射……),先查 [术语表](00-glossary.md)。
## 1. 准备电脑环境
| 需要什么 | 版本 | 怎么确认装好了 |
|---|---|---|
| Go | **1.23.0** | `go version` 输出 `go version go1.23.0 windows/amd64` |
| Git | 任意较新版本 | `git --version` 有输出 |
| DB Browser for SQLite | 任意 | 用来看数据库,可选但强烈建议装 |
版本已定为 **go1.23.0**,写在 `admin/go.mod` 里。低于这个版本可能编译不过。
**不需要装 gcc。** 本项目的 SQLite 驱动是纯 Go 实现的
(`modernc.org/sqlite`),不依赖 cgo,这也是选它的原因——
`go build` 直接出单个 exe,不用配 C 编译器。
## 2. 拉依赖
先配国内代理,否则大概率拉不动:
```powershell
go env -w GOPROXY=https://goproxy.cn,direct
```
**第一次**需要把三个依赖装上(`go.mod` 里只有模块名和 Go 版本,依赖靠 `go get` 添加):
```powershell
cd D:\chengma\cmautobuy\admin
go get github.com/gin-gonic/gin
go get modernc.org/sqlite
go get github.com/xuri/excelize/v2
go mod tidy
```
跑完 `go.mod` 会多出 `require` 段,还会生成 `go.sum`。
`[必须]` **这两个文件都要提交 Git**,否则别人拉下来版本对不上。
**之后**只需要:
```powershell
go mod download
```
预期没有输出——Go 的惯例,成功时不打印东西。
> 三个依赖是定死的,见 [admin/AGENTS.md](../../admin/AGENTS.md) 技术栈一节。
> 特别注意 SQLite 驱动**不要**换成 `mattn/go-sqlite3`,那个需要 cgo。
## 3. 跑起来
```powershell
cd D:\chengma\cmautobuy\admin
go run .
```
然后浏览器打开 <http://localhost:8080>。
**这个命令是安全的**:Admin 只管理数据,不会连手机、不会下单。放心随便跑。
改了代码要重启才生效(Go 不像 Python 那样改完就生效)。按 `Ctrl+C` 停掉再 `go run .`。
## 4. 你应该看到什么
左边(或顶部)是四个模块的导航:
| 模块 | 干什么的 |
|---|---|
| 蝦皮数据 | 导入蝦皮商品报表,填 PDD 链接,发起采集 |
| 顺运宝数据 | 同步货运单,匹配规格,生成采购任务 |
| 采购任务 | 看任务执行到哪一步了 |
| 客户端列表 | 看哪些客户端在干活 |
每个页面都是同一个结构:**上面工具条 / 中间表格 / 下面状态条**。
四个页面长得像是故意的,见 [05 界面规范](05-ui-specification.md)。
## 5. 常见报错
| 报错 | 原因 | 怎么办 |
|---|---|---|
| `go: command not found` | Go 没装或不在 PATH | 装 Go,重开 PowerShell |
| `dial tcp ... i/o timeout` | 拉不到模块 | 配 GOPROXY,见第 2 步 |
| `no required module provides package` | 依赖没装 | 回第 2 步跑那三条 `go get` |
| `listen tcp :8080: bind: ...` | 8080 端口被占了 | 换端口:`go run . -port 8081`,或关掉占用的程序 |
| 页面全是没样式的白底黑字 | 静态文件没加载到 | 确认是从 `admin/` 目录启动的,静态文件路径是相对的 |
| `database is locked` | 有别的程序占着数据库 | 关掉 DB Browser 再试;程序运行时只读打开是可以的 |
| 导入 Excel 报错但没说哪一行 | 解析器没带行号 | 这是 bug,报错必须带行号,见 [06](06-quality-security.md) §2 |
## 6. 数据库在哪、怎么看
跟 Client 一样是**便携模式**——数据都在程序旁边的 `data/` 里:
```text
admin/data/
├── admin.db 数据库
├── logs/ 运行日志
└── uploads/ 上传的 Excel 原件
```
跑源码时在 `admin\data\`;将来打包成 exe 后,在 exe 旁边。
用 **DB Browser for SQLite** 打开 `admin.db` 就能看数据。
每张表什么意思见 [03 数据模型](03-data-model.md)。
> 写代码时**不要自己拼这个路径**,用统一的 `DataDir()` 函数,
> 见 [02 架构](02-architecture.md) §6。
## 7. 拿样本数据试一下导入
蝦皮的真实报表**不在仓库里**——里面有逐商品的台币销售额,属于商业数据,
已在 `.gitignore` 里排除。
需要的话**找项目负责人要一份**,放到仓库根目录的 `raw_data/` 下:
```text
raw_data/蝦皮数据样本.xlsx
```
参考样本是 11287 行 = 5195 商品汇总行 + 6092 SKU 行,
导入后应得到 **5195 条商品 + 6092 条 SKU**。数字对不上就是解析有问题。
> 写自动化测试**不要**用这份大文件,用 `admin/testdata/` 下已脱敏的小样本,
> 见 [06 质量与安全](06-quality-security.md) §2.1。
解析规则见 [03 数据模型](03-data-model.md) §3.3,那里说明了为什么一个文件要拆成两张表。
## 8. 提交代码前的自检
```powershell
cd D:\chengma\cmautobuy\admin
go vet ./... # 静态检查,有问题会打印出来
go build ./... # 能编译
go test ./... # 测试能过
```
三条都没报错就算通过。完整验证要求见 [admin/AGENTS.md](../../admin/AGENTS.md) §验证。
## 9. 接下来读什么
| 我要做的事 | 读这份 |
|---|---|
| 改页面、加表格列 | [05 界面规范](05-ui-specification.md) |
| 加字段、改表、写 SQL | [03 数据模型](03-data-model.md) |
| 改给 Client 的接口 | [04 Client 接口实现](04-client-api.md) + [Client 侧契约](../client/04-admin-api-contract.md) |
| 改 Excel 导入 | [03 数据模型](03-data-model.md) §3.3 |
| 搞不清这功能要不要做 | [01 产品需求基线](01-requirements.md) |
无论做哪一样,都必须先看一遍 [admin/AGENTS.md](../../admin/AGENTS.md)(技术栈和红线)。