saiadmin-artd/src/views/water/agents 是独立代理运营页面,替代通用 WaterWorkspace。页面包含四张统计卡、关键词/等级/授权筛选、每页五行代理列表、本月业绩排行、权限说明、管理抽屉、档案编辑、地图选择服务辖区和账号开通。
GET /core/water/agents/dashboard:列表、全量统计、前四名业绩排行、上级代理选项。GET /core/water/agents/detail?id=...:档案、关联登录账号、直属下级、最近20家归属企业。POST /core/water/agents:沿用 save 操作,委托 WaterAgentManagement 校验并保存档案与上下级关系。POST /core/water/agents/open-account:新建档案并开通账号,或为已有未关联账号的档案开通账号;仅超级管理员可执行。读接口要求 water:agents:read,写接口要求 water:agents:write,账号开通额外校验管理员ID=1。控制器只处理鉴权、请求及响应;查询/命令分别由 WaterAgentDashboard、WaterAgentManagement 应用服务处理,策略类位于 service/agent。数据读写均经 Eloquent 模型。
sa_water_enterprise.agent_id 当前关联数量,包含停用客户;业绩从这些企业已登记的供水购水订单汇总,不复用旧充电设备租赁收入或分润比例。php scripts/migrate_water_commission.php --apply 创建 InnoDB 佣金表与平台比例设置;迁移不回填旧订单,重复运行保留已修改的比例。计提随收款订单在同一数据库事务内提交或回滚。保存比例需 water:agents:write 权限,并用 revision 防止覆盖其他操作员的修改。GET /core/water/agents/commission-policy 读取三级比例(字段为整数基点,1000 代表 10%)和版本号;POST 同路径提交三个 level{1,2,3}_basis_points 及 revision。比例允许 0% 到 100%,精确到 0.01%;保存会记录操作员与修改前后值。scripts/migrate_water_agent_hierarchy.php --apply 仅添加可空 sa_water_agent.parent_id 及索引,可重复执行。NULL为未设置、0为一级、其他值为上级代理ID;不从旧部门或地区推断供水代理等级。
AgentHierarchyPolicy 限制最多三级,阻止自指、循环、缺失上级、把完整子树移动到第四级、给未设置等级/停用代理新增下级。有下级时不能把自身等级清空。事务锁定代理关系后保存,避免并发修改成环。
授权状态由 AgentAccessPolicy 根据真实账号及启用的供水角色权限计算:
开通账号使用独立输入的账号和密码,密码哈希存储;无默认密码、不自动分配角色、部门或超级管理员标记。账号和档案在同一事务创建,失败不留下孤立档案。重复账号或重复开通被拒绝。日志不记录密码,开通控制器返回脱敏失败响应。
供水控制器每次请求核验关联代理合作状态,停用立即阻断关联账号的供水接口;不会修改原系统角色、旧系统账号状态或其非供水权限。菜单可能待客户端刷新后更新;不声称停用自动清除所有旧菜单。
当前页面是平台管理入口;地图辖区和团队关系是业务归属,不会自动转换成数据权限。独立代理业务门户和逐代理数据隔离尚未启用,不应给待开通代理直接分配平台全量管理角色。角色和账号管理仍使用框架原流程。
php -d extension=mbstring scripts/seed_water_agent_ranking_demo.php --apply --http,固定批次 TEST-WATER-AGENT-RANKING-20260916;首次执行限当天,复跑只读已有结果,不重复入账或改写用户后续操作。【代理测试0916】 的5家启用客户,新增订单32–36:李策划2000元(2单)、西瓜商贸1500元(2单)、测试商贸600元(1单),合计4100元、205桶模拟权益。订单凭据、套餐名称及流水均标记为测试,没有实际收款。WaterBusiness::purchase 生成订单和权益;新测试SKU15及5个套餐完成后停用,保留历史统计。没有入库或创建配送任务;已有代理、客户、订单、账户、库存、设备及流水原记录快照不变。PHP语法检查、事务内金额/权益增量及旧记录验证、本地HTTP排行核验通过;再次执行返回 replayed=true,排行仍为2000/1500/600元。仅为本月测试数据,下月不会自动续造。
增量迁移已执行两次,无旧档案内容回填或账号权限修改。
php -d extension=mbstring tests/water_agent_dashboard_test.php --http:63项通过,含层级规则、筛选分页、订单日期、真实权限状态、账号事务、密码哈希/隐藏、接口即时停用及本地HTTP读取;所有夹具回滚,未单独做并发压力测试。
原企业68项(含HTTP)、供水业务69项检查通过,共200项。
前端 vue-tsc、ESLint、Stylelint 和 Vite 生产构建通过,saiadmin-artd/dist 已更新。
浏览器工具仍返回 unsupported Codex auth method: apikey,无法完成截图级视觉和真实浏览器交互验收。