feat(权限): 收敛普通账号写权限至本人凭证
将调度时刻、采集参数等实例级配置收归管理员,普通账号仅可维护本人 Cookie 与 User-Agent。 新增 config.writable_by 作为唯一写权限入口,set_setting 强制全局键落到 user_id=0, 消除「管理员改了只有自己生效」的静默缺陷。新增 tools/check_docs.py 文档自检, smoke 断言扩至 215 项、check_live 扩至 122 项并支持普通账号越权验收, 忽略 backups/、data/*.bak* 与 legacy-v1/,版本升至 v1.3.0。
这个提交包含在:
+4
-3
@@ -184,9 +184,10 @@ def build(out_dir: str, days: int, seed: int, admin_password: str,
|
||||
# 经 set_secret 落库 = 真的走一遍加密,所以示例库里也是密文。
|
||||
db.set_secret(conn, "cookie", DEMO_COOKIE, admin_uid)
|
||||
db.set_secret(conn, "cookie", DEMO_COOKIE_2, demo_uid)
|
||||
# 两个账号各有一套调度时刻,界面上能看出「每人可改自己的」
|
||||
db.set_setting(conn, "schedule_times", "09:00,17:00", admin_uid)
|
||||
db.set_setting(conn, "schedule_times", "08:30,20:00", demo_uid)
|
||||
# 调度与采集参数是**实例级**的(v1.3.0 起普通账号只读),所以只写一次;
|
||||
# 这里刻意不按账号各写一份 —— set_setting 会把全局键归到 user_id=0,
|
||||
# 写两次只会后一次覆盖前一次,看起来「每人一套」其实没有。
|
||||
db.set_setting(conn, "schedule_times", "09:00,17:00", 0)
|
||||
|
||||
rng = random.Random(seed)
|
||||
now = datetime.now().replace(second=0, microsecond=0)
|
||||
|
||||
在新工单中引用
屏蔽一个用户