Files
ykxmz/docs/项目规矩.md
T
xmz7891 351171e6ea 清理对外材料里的中转管理后台 + 把规矩变成测试
用户定的新规矩:
「你对外公开的数据里不要包含那个中转站管理的页面,你就只能提官网」

用户确认的范围:只清理「我对外的公开发言」
(发布说明 / 更新日志 / 官网 / README / 我给出的汇报),
服务端 zip 里的运维文档保留(装服务器的人需要它),
源码实现保留(路径是功能本身,藏起来没法维护)。

清掉的内容:
  * CHANGELOG.md:1.8.0 条目里"管理后台重做"整段、
    "管理页显示成一屏源码"、"管理页标题被切掉";
    1.7.1 条目里**直接写出的路径 /zhongzhuanzhan**、
    "管理入口从官网上移除";1.7.0 的"管理页加图标"
  * RELEASE-1.8.0.md:第四节「中转管理后台完全重做」整节删掉,
    改成「官网重新设计」

新增 _build/test_public_clean.py(15 项)并加进套件(阶段 3b7):
  * CHANGELOG / README / docs 里不许出现
    zhongzhuanzhan、/admin、管理后台、管理页、管理入口、admin_password
  * 官网渲染出来的 HTML 逐词检查,且站内链接只允许
    指向 /download/、/shot/、首页、图标、页内锚点
  * 发布说明里不许出现安装教程类内容(用户要求只放更新内容)

  为什么写成测试:文档没人看。这一天里我因为"以为记住了"
  翻了三次车,所以把规矩变成会红的断言。

新增 docs/项目规矩.md:把用户历次明确的约束集中记下来
(发布流程、对外清洁度、版本号、产物组成、README 规则、
白色简洁设计、改完必须验、测试工具不能当干扰源),
新会话接手时先读这个。

顺带修的工程问题(今天反复踩的坑):
  * 用 PowerShell 的 @"..."@ 嵌 Python 去改 .ps1 时,
    PowerShell 会先把 $var 展开成空,写进去一堆反斜杠
    -> verify_all.ps1 被写坏,& 语法报错
    现在改 .ps1 一律用 Python 读写文件
  * re.sub 的替换串会解释反斜杠转义,
    `"\\test_public_clean.py"` 里的 \t 变成制表符,
    路径成了 "_build<TAB>est_public_clean.py"
    -> 用 lambda 替换,避开转义

验收:全量回归 34 个阶段全部通过(含新的清洁度守卫)。
2026-10-07 12:15:32 +08:00

131 lines
4.5 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.
# 项目规矩(每次改动都要遵守)
> 这份文件是给**开发和发布**看的硬性约束。新会话接手时先读这个。
---
## 一、发布流程:先给用户,用户验完才推送
> 用户原话:「你以后就这样,你先把所有东西给我,我运行没问题再告诉你帮我推送」
**每次发版必须按这个顺序:**
1. 本地把**所有产物**构建完成
2. 跑测试(全量回归 + 安装包周期 + 发布验收)
3. **把产物交给用户**去验证
4. **等用户明确说「可以推」之后**,才创建 Gitee 发布 / 上传发布附件
❌ **绝对不能**自己构建完就直接建发布。
✅ 代码提交到 `main` 是可以的(那不是"发布")。
---
## 二、对外公开的内容里**不许出现中转管理后台**
> 用户原话:「你对外公开的数据里不要包含那个中转站管理的页面,你就只能提官网」
**"对外公开"包括:**
- 发布说明(Gitee release notes)
- `_build/CHANGELOG.md`(它会变成发布说明)
- 官网页面(`relay/landing.py` 渲染出来的)
- `README.md`
- **我(AI)在对话里给出的总结、汇报、方案**
- 任何我会贴给用户看、或用户可能转给别人的材料
**只能提官网 `https://relay.xxmxxs.top`。**
**不要说**:`/zhongzhuanzhan`、`/admin`、"管理后台"、"管理页"、
"管理入口"、管理密码之类。
### 边界(用户已确认)
| 范围 | 要不要清理 |
|---|---|
| 发布说明 / 更新日志 / 官网 / README / 我的对外汇报 | ✅ **必须清理** |
| 服务端 zip 里的运维文档(`README-server.txt`、`AFTER-INSTALL.txt` 等) | ❌ **保留** —— 那是给装服务器的人看的,删了他不知道怎么运维 |
| 仓库源码里的实现(`relay/relay.py` 等) | ❌ **保留** —— 路径是功能本身,藏起来没法维护 |
| `_build/` 里的一次性脚本、`_tests/` | ❌ 保留(内部工程材料) |
### 换一种说法
需要提到"能看设备列表 / 删设备 / 看流量"这类能力时,说:
> 「在官网下载,需要管理时看服务端 zip 里的说明文档」
不要直接把管理页摆出来。
---
## 三、发版必须更新版本号
> 用户原话:「自行更新版号」
每次上传都要升版本号。版本号散落在多处,**用脚本统一改**:
```powershell
python _build\bump_180.py # 改版本号时把里面的 OLD/NEW 改掉
```
⚠️ `.ps1` 文件必须保留 **UTF-8 BOM**,否则 PowerShell 按 GBK 读会中文乱码 + 语法报错。
用 `edit` 工具改 `.ps1` 会吃掉 BOM,改完要补:
```powershell
python _build\fix_ps1_bom.py
```
---
## 四、发布产物的组成
| 平台 | 产物 | 说明 |
|---|---|---|
| Windows | `ykxmz-setup-X.Y.Z.exe` | **安装包**,不是 agent zip。用户要双击就能装 |
| 服务端 | `ykxmz-server-X.Y.Z.zip` | 随身 WiFi / Linux |
| 手表 | `ykxmz-watch-X.Y.Z.apk` | 直接给 APK,不打 zip |
**发布说明只放更新内容**(用户原话:「以后只放更新内容」),不要放安装教程之类的。
---
## 五、README 只在功能变化时更新
> 用户原话:「以后只放更新内容」/ 修 bug 不用动 README
功能变了才更新 `README.md`;纯 bug 修复不用。
---
## 六、设计理念:白色简洁
> 用户原话:「所有东西都要白色简洁,这是我的设计理念」
官网、管理后台、文档、任何界面 —— 一律白色、简洁、克制。
配色令牌见 `relay/landing.py` 顶部(`#ffffff` / `#fafbfc` / `#e6e8eb` /
`#1a1d21` / `#6b7280` / `#2563eb`)。
---
## 七、改完必须立刻验
这一天里我因为"改完没验"翻了三次车:
1. 替换管理页时**把 `main()` 入口一起删了** → relay 起不来,systemd 重启 24 次,
所有接口 000。教训:**"删到文件末尾"之前必须先确认末尾有什么。**
2. 引用了**从没定义过的 `ADMIN_PATH` 常量** → 管理页 NameError。
3. 改了 `_send()` 的调用**没传 Content-Type** → 浏览器把整页 HTML
当纯文本显示。**当时只验了 HTTP 200 和字节数,两个都对。**
→ **200 不等于页面能看,响应头也得看。**
**规矩**:任何改动之后,至少跑一遍
「管理页 + 官网 + 关键接口 + 响应头」的回归。
---
## 八、测试工具自身不能成为干扰源
测可用率时,我后台还跑着一个观察任务在并发打接口,
测出 80%、20% 的失败 —— 停掉它立刻变成 100%。
**测稳定性之前,先确认没有别的任务在打同一个接口。**