尚未检查
尚未自检
CREATE(“验证连接”会报出当前角色与这项权限);
最后那颗「可选:库不存在时才创建」平时不用碰:库已由你或 1Panel 建好时它无事可做,只有目标库确实还不存在时才会创建那一个库(需要 CREATEDB 权限;没有它就请 DBA 预先建库并把属主交给这个角色)。
向导不提供任何裸 SQL 或 Shell 能力,从不执行 GRANT/REVOKE,也绝不删除任何数据库;验证不通过时一个配置字节都不写。尚未操作
admins 表(结果里会写明库名与迁移台账条数):它不看业务数据、不建库、也不涉及数据库服务本身。
空白数据库首次初始化得到的就是“还没有管理员、请创建”,这是正常流程;若这里报“连迁移台账都没有”,意思是第 ② 步的结构迁移还没执行,回到第 ② 步点「执行结构迁移」即可,不是初始化失败。
库里已有管理员时向导拒绝重复创建(不覆盖、也不重置任何口令),但“库里已有管理员记录”本身既不代表初始化完成,也不代表其口令可用——这时走「使用已有管理员」那条正常路径:见下方检查结果后出现的口令校验。公开注册产生的是普通用户,永远不会获得管理员权限。admins 行上做一次只读口令比对(与管理端登录同一套校验):不改任何字段、不重置口令、不授予任何权限,比对通过也不等于初始化完成——第 ⑥/⑦ 步的服务端复验一条都不会少。
比对失败就是“账号或密码不正确”,向导同样什么都不改。
当前进程里管理端登录页还进不去(安装未完成时 /login 与 /api/admin/* 由安装闸门挡着),那不是这个账号的问题:按第 ⑦ 步完成安装并重启后即正常,本步校验通过也就不用再勾选任何登录确认。尚未操作
https://你的域名/api/auth/wechat/callback 再写进配置——那是服务端唯一一条真的会拿 code 换身份、签发会话并把你送回登录页的路由。基址填成一个具体路径(例如反向代理自己的回调路径)时按原样保留。但用户端站点自己的路径不算:把 https://你的域名/v/<短码> 这类地址交进来,本步会拒绝并说明原因——那条路径是用户端页面,不是回调路由,换码与签发会话一次都不会执行。微信后台里登记的授权回调地址要和写进配置的这一条一致,保存后本步的返回会原样告诉你最终地址。尚未操作
wechat,任一项缺失就写入 disabled 并在结果里列出缺哪几项(只列配置项名,不回显内容)。
选“启用真实微信支付”时任何一项不通过都会拒绝启用;选“暂不启用”则直接写 disabled。任何情况都不会自动落到模拟支付,模拟与真实在数据上按支付渠道来源分开记录。私钥仅写入服务器 secrets 目录(0600),不回显。尚未操作
http://192.168.1.20:3000),不要编一个 https 域名:换台机器它就解析不到。图片不落任何地址前缀(存的是站内相对路径),因此这一项只影响用户端入口,不影响图片能不能显示。这一档还决定下面那份用户端入口清单里能否出现 http://内网地址:选“公网”时 http 条目在本步会被整批拒绝,压根成不了分享链接候选。要让内网 http 与公网 https 两条入口共存就选“仅内网”——公网 https 条目在这一档同样合法,这不是放松校验,只是把私有网段的 http 一并放进允许集合。/、管理端在 /login(同一地址按路径分开)。这一行填用户端规范入口的站点根(https://你的域名),不要追加 /vote 或其他路径前缀:微信授权完成后会回到 <站点根>/login?success=1,而 /vote 下没有用户端页面。接口仍在站点根的 /api/…,安装向导那条给操作者点击的入口地址也取这一行的站点根(https://你的域名/api/install)。http://localhost:5173)清掉——那不是对外地址,留着会被严格校验按“不能指向本机地址”拒绝,而这一页别无清除入口。
两条约束一条没松:选“公网”就必须是可解析的 https 真实域名;微信登录处于启用状态时这一行变成必填,且不能是本机地址。/),所以清单为空也能生成链接——这条清单的作用是补充“固定的、跨域的”用户端入口,不是“没配就不能分享”。
多条目时取哪一条有固定顺序:先跟随你此刻打开管理端用的那个地址(同主机且同协议的那条候选);当前地址是内网地址时优先于站点基础地址;当前地址是公网地址且没有同主机候选时,才退到上面的站点基础地址。
想同时用内网 IP 与内网域名两种方式访问、并希望两种方式都优先生成对应的链接,两种方式各自打开管理端即可,不要求先把另一种写法配进清单;清单里也可以把两种写法各列一条(如 http://192.168.1.20,http://vote.internal)。系统不推断 DNS 别名,也不做 IP 与域名互换:要让两种写法各自生成对应链接,就把它们各列一条。
上面那行“站点基础地址 APP_BASE_URL”只是单一规范/跨域入口:从内网入口打开管理端时它只做兜底,不会顶掉当前内网入口。它不会让管理端自动认出、自动多出其它内网入口——“有哪些用户端入口”这个事实只由 USER_APP_URLS 这一行承载。
留空表示本次不改这一行:第 ⑦ 步会不带参数复验同一个方法,把留空当成“清除”会连带抹掉你早已配好的清单。
本机地址(localhost/127.*)不能当入口,任一条不合格本步一个字都不写、原文件逐字节不变。
本安装包的用户端与后台共用一个地址、只靠路径分开(后台是 http://内网地址/login、用户端是 http://内网地址/),所以这一行写纯站点根(http://内网地址),不要追加 /vote:当前路由没有那个前缀,协议与主机该判的一条没少。
但这一行的每一条都要与该用户端站点的实际路径和产物构建形态一致(见下面那段):写成 /toupiao 这类没人为它服务的前缀,链接格式全对、打开的却是后台或白屏。
这一行同样要重启 API 进程才生效:本进程用的是启动时读入的那一份。apps/web/vite.config.ts 按 VITE_WEB_BASE 三态决定:没写或显式写 / 都落站点根、显式写前缀按该前缀构建,形态非法直接拒绝构建)。本安装包是站点根形态:两行写纯站点根(https://你的域名),产物按 / 构建(npm run build:web 缺省即是,或显式 VITE_WEB_BASE=/)。first-entry.ts 只提供 / 的用户端与 /login 的管理端,不再为 /vote/ 提供用户端页面;把这两行写成 /vote,链接格式可能全对,打开却会落到管理端外壳或 404。apps/web/dist/index.html 里 src= 是 /assets/… 还是 /vote/assets/…,或在新窗口打开一条分享链接看得到的是投票页还是空白页;对不上就按站点根形态重新构建,改配置不会让一份产物同时满足两种形态。尚未校验
尚未判定管理员来源:请先回到第 ③ 步检查或创建管理员。
尚未完成