• wenwen.tang's avatar
    feat(权限): 访客账号改按页授权 —— guest 仅「电费通知单」可操作 · 35f0fbce
    wenwen.tang authored
    能力模型:账号/会话新增 perms(目前只有 elec = 电费通知单)。管理员隐含全部能力;访客按 perms 逐接口放行,perms 为空即纯只读。
    
    写闸门重构:server._write_cap(method,path) 逐接口解析所需能力,_guard_write(user,cap) 按能力判定并给出「账号 X 只能操作:电费通知单」的明确提示。批次类接口再按批次 kind 复核 —— 房租车位费批次的删/重出/发送/收款登记仍只有管理员能动。
    
    前端能力感知:body 加 cap-elec 类,电费页控件由 data-ro 改 data-cap=elec;批次列表/单据表的按钮按 kind 区分;api() 前端拦截改为按能力;顶栏与只读横幅按能力显示「访客 · 仅电费」。
    
    账号管理:新增「权限」列(管理员=全部 / 访客=能力标签 / 空=只读),新增账号可勾选「电费通知单」,已有访客可一键开通/关闭;新增 PUT /api/accounts/{name} 改角色/能力/备注;主账号不可降级且强制清空 perms。
    
    一次性回填:老配置没有 perms 字段 → ensure_default_account 按 guest_perms_seeded 标记补上默认能力(之后管理员关掉不会再被打开)。
    
    guest 落地:密码 guest@2026,perms=['elec'],备注「电费通知单操作员」(本地已改,线上部署后同步)。
    
    修 bug:删除不存在的批次时 service.rollback_receipt_sync(None) 抛 AttributeError → 500;现静默返回 0。
    
    验证:单测 245 项全绿(accounts 60);新增 ui_verify10(69 项,guest/admin/纯只读三方对照)全绿;ui_verify7(访客,改成用纯只读样本 + 新增 guest 段)69/0;ui_verify2 72/0;ui_verify 全绿。
    35f0fbce
Name
Last commit
Last update
..
samples Loading commit data...
check_elec_source.py Loading commit data...
check_scheduler.py Loading commit data...
cmp2.py Loading commit data...
cmp_hist.py Loading commit data...
cmp_style.py Loading commit data...
deploy_docker.py Loading commit data...
deploy_git.py Loading commit data...
deploy_server.py Loading commit data...
dump_elec_style.py Loading commit data...
dump_hdr.py Loading commit data...
dump_style.py Loading commit data...
dump_style2.py Loading commit data...
e2e_round5.py Loading commit data...
e2e_test.py Loading commit data...
extract_media.py Loading commit data...
extract_seed.py Loading commit data...
import_park_notes.py Loading commit data...
import_property_tax.py Loading commit data...
import_rent_parking.py Loading commit data...
make_sample_upload.py Loading commit data...
migrate_next_bill.py Loading commit data...
migrate_rentfree_type.py Loading commit data...
migrate_round2.py Loading commit data...
migrate_round3.py Loading commit data...
nav_verify.py Loading commit data...
peek.py Loading commit data...
peek2.py Loading commit data...
peek3.py Loading commit data...
peek4.py Loading commit data...
peek5.py Loading commit data...
peek6.py Loading commit data...
peek_all.py Loading commit data...
peek_aug.py Loading commit data...
peek_elec.py Loading commit data...
peek_m2.py Loading commit data...
peek_m3.py Loading commit data...
peek_master.py Loading commit data...
peek_n1.py Loading commit data...
peek_n2.py Loading commit data...
peek_n3.py Loading commit data...
peek_n4.py Loading commit data...
peek_names.py Loading commit data...
peek_rent.py Loading commit data...
peek_rent2.py Loading commit data...
peek_sep.py Loading commit data...
peek_src.py Loading commit data...
peek_sum.py Loading commit data...
peek_tpl.py Loading commit data...
peek_tpl2.py Loading commit data...
rent_notice_preview.py Loading commit data...
restore_batches.py Loading commit data...
send_one.py Loading commit data...
setup_wecom_cloud.py Loading commit data...
test_accounts.py Loading commit data...
test_directory.py Loading commit data...
test_rent.py Loading commit data...
test_round5.py Loading commit data...
test_rules.py Loading commit data...
test_scheduler.py Loading commit data...
ui_verify.py Loading commit data...
ui_verify10.py Loading commit data...
ui_verify2.py Loading commit data...
ui_verify3.py Loading commit data...
ui_verify4.py Loading commit data...
ui_verify5.py Loading commit data...
ui_verify6.py Loading commit data...
ui_verify7.py Loading commit data...
ui_verify8.py Loading commit data...
ui_verify9.py Loading commit data...
ui_verify_runner.py Loading commit data...
verify_elec_prev.py Loading commit data...
wait_fire.py Loading commit data...