Former-commit-id: 1de24b7eb79676d1aba9d799a58c5a753290cf52
5.8 KiB
访客无鉴权策略验证发布包(v20260430)
1. 发布目标
本目录为“黄平访问蒙海文”无鉴权策略验证的版本化发布包,用于生产执行、结果留痕与归档。
当前对应代码发布版本:cw-elevator-application-2.0.9
2. 包内文件
README.md:发布说明(本文件)操作手册.md:完整操作步骤与判定规则执行流程设计-简化版.md:先明确流程再执行的最小闭环方案(推荐先读)sql/黄平访客ID手工查询.sql:生产手工查询黄平访客 ID 的 SQLsql/批量样本筛选-多公司多部门.sql:筛选多个公司/多个部门被访人样本 SQLsql/人工核查最终楼层结果.sql:自定义访客 ID 集合时执行后核验sql/标准批量25访客-执行后核验.sql:§4.0 单行命令固定 25 名访客号段后的执行后核验python/quick_verify_visitor_floor_policy.py:执行脚本快照(支持纯 HTTP;可选连组织库/电梯库)python/requirements.txt:requests+pymysql(预置样本拉取、--verify-local-db)python/requirements-min.txt:仅requests(不连库时)report/:脚本输出 JSON 汇总(打包时排除*.json历史文件)打包说明.txt:生产机pip install、一键 zip、全量预置命令示例MANIFEST.txt:交付清单
3. 关键基线参数
- 被访人(蒙海文)
personId=964454497399468032 - 访客(黄平)
personId=1102270499947507712 - 租户
businessId=2524639890ba4f2cba9ba1a4eeaa4015 - 策略语义(与电梯源码一致):未传
floorIds且策略启用且allow_zone_ids非空时,生效楼层为 被访人floorList∩allow_zone_ids(求交);无策略或 allow 为空则仍为floorList全集。详见visitor-registration-business-flow.md、租户组织人员访客-数据模型与用例.md。
4. 测试执行(一行命令)
以下参数已由交付侧与现场环境对齐:组织 http://10.0.22.207:8089,电梯 http://10.0.22.207:16112;25 名测试访客 personId 为连续号段 9199000100000000001~9199000100000000025(预置脚本内置 25 个被访人样本,本命令不访问 MySQL)。
操作: 打开解压后的发布包目录(能看到子目录 python/),只粘贴下面整行,回车执行(自动安装缺失的 requests 并跑预置 25 人批量无鉴权探测):
python3 -m pip install -q -r python/requirements-min.txt && python3 python/quick_verify_visitor_floor_policy.py --mode noauth-probe --org-base-url "http://10.0.22.207:8089" --elevator-base-url "http://10.0.22.207:16112" --use-preset-cases --visitor-person-ids "$(python3 -c 'print(",".join(str(9199000100000000000+i) for i in range(1,26)))')" --probe-with-businessid --batch-output-summary "batch-preset-static-$(date +%Y%m%d-%H%M%S).json"
汇总 JSON:report/ 目录下文件名形如 batch-preset-static-<时间戳>.json。
执行后须查库分析: 在目标环境 cw-elevator-application 库运行 sql/标准批量25访客-执行后核验.sql,将每名访客的 active_row_count、zone_id 与 JSON 中的 derived.floor_count、derived.floors 对齐;具体操作与判定要点见 操作手册.md §4.0.1、§4.6。
附录 A:单样本(广发基金基线)
python3 python/quick_verify_visitor_floor_policy.py \
--mode noauth-probe \
--org-base-url "http://10.0.22.207:8089" \
--elevator-base-url "http://10.0.22.207:16112" \
--business-id "2524639890ba4f2cba9ba1a4eeaa4015" \
--meng-person-id "964454497399468032" \
--visitor-person-id "1102270499947507712" \
--probe-with-businessid
该访客为存量人员:库表核验易与历史 image_rule_ref 混在一起;若以「本轮新增访客 + 证据」为目标,请以 §4 一行批量号段 919900… 为主。操作手册 §4.2 对上述边界有全文说明。
附录 B:连 MySQL 拉样本 / 库表比对
需与 HTTP 同属一套库的地址与账号由运维另行提供,不由本 README 承载;禁止使用与目标环境不一致的数据库串联验证。
附录 C:sql/batch_cases.csv 批量
python3 python/quick_verify_visitor_floor_policy.py \
--mode noauth-probe \
--org-base-url "http://10.0.22.207:8089" \
--elevator-base-url "http://10.0.22.207:16112" \
--batch-input-csv "sql/batch_cases.csv" \
--visitor-person-ids "1102270499947507712,1102270499947507713,1102270499947507714" \
--visitor-names "黄志平A,黄志平B,黄志平C" \
--probe-with-businessid \
--batch-output-summary "batch-from-csv-$(date +%Y%m%d-%H%M%S).json"
附录 D:人员导出 CSV 自动筛选
python3 python/quick_verify_visitor_floor_policy.py \
--mode noauth-probe \
--org-base-url "http://10.0.22.207:8089" \
--elevator-base-url "http://10.0.22.207:16112" \
--batch-source-person-csv "../_cw_is_person__202604302030.csv" \
--exclude-business-ids "2524639890ba4f2cba9ba1a4eeaa4015" \
--sample-companies 3 \
--sample-persons-per-company 2 \
--visitor-person-ids "1102270499947507712,1102270499947507713,1102270499947507714" \
--visitor-names "黄志平A,黄志平B,黄志平C" \
--probe-with-businessid \
--batch-output-summary "batch-from-export-$(date +%Y%m%d-%H%M%S).json"
说明:导出 CSV 需含列 BUSINESS_ID,ID,IS_DEL,NAME(等);无部门列时汇总中 department 可能为空。
5. 输出位置
脚本输出(均在发布包下 report/ 目录):
- 单样本:
quick-verify-<timestamp>.json - 标准批量:见 §4,
batch-preset-static-*.json - 其他批量:
--batch-output-summary指定名;默认batch-summary.json