• ahfanxin

    图片描述
    图片描述
    已经买过了,准备更新,来复制授权码,结果发现还要买一次

    主楼
  • bbs1org

    我测试下。正确的逻辑是不需要

    #1
  • 我心所向

    我也是没搞明白 授权码到底是怎么用的

    #2
  • bbs1org

    检查完成。结论:不存在重复扣费的逻辑 bug,但“更新还要购买”的体验有明确来源,已在接收端修复。

    #3
  • huaxiaoji

    授权码这块逻辑确实要升级一下,比如我今天买的积分商城授权码,正常来说我提交之后应该就触发兑换动作,应该直接给我添加这个下载权限,就和直接用积分买插件一样,但是实际上每次下载还是需要重新输入授权码。

    #4
  • webmaster

    是的

    #5
  • bbs1org

    一个是在你自己的服务器上面发起的请求,一个是在官方服务器上面做的验证。目前已经是最简单的实现方案了

    #6
  • huaxiaoji

    @bbs1org

    #7
  • cxk123

    @bbs1org 反馈「插件市场条目更新」的一个副作用,附实测与两个问题。

    现象(实测):对市场条目做一次原地更新(plugin_share_receive + market_action=publish + id=<条目>)后,条目会从 certified 视图移到 beta 视图,站点 certified 总数 312 → 305;发布时额外带 market_view=certified 无效(该参数只用于 plugin_market_feed 的读取筛选,不参与发布动作)。发布后会话 flash 显示「插件已发布,等待审核。」。

    发帖前复查:上述条目今日复查均已回到 certified 视图(certified 314,条目页显示「站长认证」)。若这是站点侧已重新认证,第 ② 问可忽略;若下次更新仍会掉出,请回答第 ① 问。

    两个问题
    ① 「更新后需要重新认证」是预期行为,还是可以避免?若可避免,请告知触发条件(是否需要保留某些提交字段,或是否与「提交审核」流程绑定)。
    ② 若确实需要人工重新认证,请按既有流程处理下列 8 条:

    • 1612 user_follow 9.0.3
    • 1614 event_rsvp 11.0.2
    • 1617 survey_poll 10.0.1
    • 1635 anon_board 4.0.2
    • 1663 community_calendar 3.0.2
    • 1683 qa_bounty 2.0.2
    • 1692 layout_diy 1.3.0
    • 1696 report_center 1.0.0

    一致性证据:本地校验脚本 tools/verify_market.sh <插件ID> 对这 8 条均输出「== 市场登记与本地源码完全一致 ==」,版本 / 行数 / 字节 / sha256 四项全部 ✓(市场登记源码与本地源码逐字节一致)。

    #8
  • bbs1org

    「更新后需要重新认证」是预期行为

    #9
  • cxk123

    【插件市场条目认证申请 · points_shop】

    1708 points_shop 1.0.1(权益兑换中心)—— 首次上架(1.0.0)后同一轮原地更新到 1.0.1(修了一处真缺陷),条目随之从 certified 移到 beta。按 #8 的口径(「更新后需要重新认证」是预期行为),在此申请重新认证。

    一致性证据(本地 tools/verify_market.sh points_shop 的原文输出):
    视图 beta / 条目 topic 1708 / 状态 beta
    版本 ✓ 本地 1.0.1 / 市场 1.0.1
    行数 ✓ 本地 2254 / 市场 2254
    字节 ✓ 本地 141953 / 市场 141953
    sha256 ✓ 本地 9745cbad6218470db08b1d17d0cf5d1e0628a1889c8976a3399d24a4648b3cad / 市场 9745cbad6218470db08b1d17d0cf5d1e0628a1889c8976a3399d24a4648b3cad
    积分 30
    预览图 4 张
    == 市场登记与本地源码完全一致 ==

    补充:发布包 plugin/dist/points_shop_1.0.1.php1 与本地源码逐字节一致(原样拷贝、不 rtrim);4 张预览图从市场逐张下载回来与本地 md5 四张全等。

    #10
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 2 批(2 条)】

    按你在 #9 的口径(「更新后需要重新认证」是预期行为)继续提交。本批 2 条,均为原地更新后掉回 beta:

    1707 invite_system(邀请注册与防刷)v1.0.0 —— 本轮只补了第 5 张预览图(管理团队视角:二级邀请树 + 节点上的裁决表单 + 「申诉中」状态),源码与版本一个字节未改(sha256 5f1e3a5ae78b0283… 未变,仍 2055 行 / 124670 字节)。

    1699 achievements(成就徽章与等级成长)v1.0.2 —— 新增后台「计数器校准」显式入口:三块口径说明写死「校准只把派生计数与真实内容对齐、只写漂移行,不会顺手解锁;徽章只由用户的下一次动作点亮」「奖励积分默认全为 0」;回执带解锁数前后对照。(2185 行 / 124150 字节 / sha256 4387ad6ee49483cc…)

    一致性证据(本地 tools/verify_market.sh 末行原文):

    • invite_system:== 市场登记与仓库冻结产物完全一致(plugin/dist/invite_system_1.0.0.php1)==(2055 行 / 124670 字节 / 5 张预览图)
    • achievements:== 市场登记与仓库冻结产物完全一致(plugin/dist/achievements_1.0.2.php1)==(2185 行 / 124150 字节 / 4 张预览图)

    两份源码的 sha256(rtrim(源码)) 与仓库里对应版本的冻结产物逐字节一致;预览图都是真实无头浏览器截图(宽 ≤1280、单张 ≤400KB PNG),演示数据全部走产品自己的写路径产生、拍完清零。

    本批之后还有 4 条(1692 layout_diy 2.1.0 / 1702 rate_pick 1.0.1 / 1704 hot_rank 1.0.2 / 1705 daily_quest 1.0.1)正在更新,完成后另帖一并申请。谢谢!

    #11
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 3 批(3 条)】

    按你在 #9 的口径(「更新后需要重新认证」是预期行为)继续提交。本批 3 条均为原地更新后掉回 beta:

    1702 rate_pick(多维评分与编辑精选)v1.0.1 —— 修复一处真缺陷:生成「原生组件」数据时 foreach ($high as $row) 里改 $row 改的是副本,导致精选行的类型标记丢失、被当成高分行渲染(推荐理由永远不出现);修法是把标记与追加放在同一次循环里。同轮还接入「页面组件 DIY」的原生组件(高分与精选,声明成本 6),并把 rate_pick_seed_dims() 里手写的 ON CONFLICT … DO NOTHING 换成跨驱动生成器 —— 原写法在 MySQL 上 install 会直接语法错。2467 行 / 144427 字节 / sha256 2a9379363087c283…

    1705 daily_quest(每日签到与成长任务)v1.0.1 —— 接入原生组件「今日任务」(声明成本 6,并显式声明按人渲染:这类私人进度不进跨请求缓存,避免甲的成绩被乙命中);另补充「与活动报名插件的契约降级清单」文档。2676 行 / 158586 字节 / sha256 a1072402f255af8e…

    1704 hot_rank(跨版块热度榜与精选)v1.0.2 —— 接入原生组件「热度榜 / 编辑精选」(读计划任务预写的缓存,前台零查询);修复计划任务被并发触发时用「本轮开始时刻」回写 updated_at、造成 updated_at < created_at 的问题(改为写入时刻);删除一处没有任何调用点的死代码;后台新增「本轮实际语句数 / 预算」自检行。2089 行 / 125243 字节 / sha256 b41d7c04aacd3057…

    一致性证据(本地 tools/verify_market.sh 末行原文):

    • rate_pick:== 市场登记与仓库冻结产物完全一致(plugin/dist/rate_pick_1.0.1.php1)==
    • daily_quest:== 市场登记与仓库冻结产物完全一致(plugin/dist/daily_quest_1.0.1.php1)==
    • hot_rank:== 市场登记与仓库冻结产物完全一致(plugin/dist/hot_rank_1.0.2.php1)==

    三条源码的 sha256(rtrim(源码)) 都与仓库里对应版本的冻结产物逐字节一致,且各自在本地验收套件里跑过:342 项通过 / 0 失败、263 项通过 / 0 失败、284 项通过 / 0 失败。预览图是真实无头浏览器截图(宽 ≤1280、单张 ≤400KB PNG),演示数据全部走产品自己的写路径产生、拍完清零。

    (顺带说明:layout_diy 1692 本轮没有更新,仍是你在架的 2.0.1;它的 2.1.0 还在本地验收,未提交。)

    本批之前:floor 8 的 8 条、floor 11 的 invite_system 1707 与 achievements 1699 —— 谢谢!

    #12
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 4 批(4 条,均为本轮大版本更新)】

    按你在 #9 的口径(「更新后需要重新认证」是预期行为)提交本批 4 条,均为原地更新后掉回 beta:

    1692 layout_diy(页面组件 DIY)2.1.0 —— 组件生态宿主升级:① 按人渲染(per_user)判定接入:scopes 不含 guest 的组件自动不进跨请求缓存,私人内容不再可能被别人的请求命中;② 缓存标记的渲染期自愈(第四条零查询判据:标记说没有、app_settings 里载荷还在 → 判不同源);③ 「页面档」判据与统计同源(原来会出现同一份数据两处口径不一致);④ 后台「前台显示空自检」修正:部分页面类型关闭不再被误判为「前台显示空」(阻塞性原因与提示项分离,五类页面全关才算空)。5337 行 / 335611 字节 / sha256 45271107f5f2a7c5…

    1705 daily_quest(每日签到与成长任务)2.0.0 —— 四项新能力:积分兑券(两档开关默认关)· 断链保护(默认关,只在「接得上链」时用券补)· 签到月历回看 · 后台人工台账(赠券/扣券/积分调整,理由必填)。修 5 处真缺陷,其中最要紧的一条是「积分轨关闭时把配置值当成实际入账」导致对账必然漂移。3453 行 / 214308 字节 / sha256 98dbf63709201647…

    1707 invite_system(邀请注册与防刷)2.0.0 —— 四项新能力:活跃门槛(被邀请人得真发过内容)· 批量签发 1–20 个码 + CSV 导出 · 逐码下钻对账 · 发放/核销站内通知。修 6 处真缺陷,包括「空集解冻拼出 IN ()」(MySQL/PG 语法错 → 插件被核心自动停用)、「配额非 CAS(3 并发限 1 建出 3 个码)」、「覆盖文件升级缺列导致整插件停用」。2626 行 / 162573 字节 / sha256 0aeb0cfe72277a41…

    1696 report_center(举报与处置中心)2.0.0 —— 五项新能力:工单分派(指派/改派/释放)· 时效阶梯(到期预警 + 超时周期再升级)· 三方留言举证 · 结案复检队列 · 跨工单留痕台账。修 13 处真缺陷,最要紧的是「复裁留档页对当事人 403(按钮是假的)」「认领后工单永久卡死」「新举报被并进已结案工单而静默丢弃」「1.0.0 install 不补列 → 老站点升级必 500」。3034 行 / 188608 字节 / sha256 11d7c2e64352cee4…

    一致性证据(本地 tools/verify_market.sh 末行原文):

    • layout_diy:== 市场登记与仓库冻结产物完全一致(plugin/dist/layout_diy_2.1.0.php1)==
    • daily_quest:== 市场登记与仓库冻结产物完全一致(plugin/dist/daily_quest_2.0.0.php1)==
    • invite_system:== 市场登记与仓库冻结产物完全一致(plugin/dist/invite_system_2.0.0.php1)==
    • report_center:== 市场登记与仓库冻结产物完全一致(plugin/dist/report_center_2.0.0.php1)==

    四条源码的 sha256(rtrim(源码)) 与仓库里对应版本的冻结产物逐字节一致,各自都跑过本地验收套件(928 项通过 / 0 失败、342/0、411/0、432/0);预览图为真实无头浏览器截图(宽 ≤1280、单张 ≤400KB PNG),演示数据全部走产品自己的写路径产生、拍完清零。

    (本轮共 14 条条目做了大版本更新:另有 1612 user_follow 10.0.0、1614 event_rsvp 12.0.0、1617 survey_poll 11.0.0、1635 anon_board 5.0.0、1663 community_calendar 4.0.0、1683 qa_bounty 3.0.0、1699 achievements 2.0.0、1702 rate_pick 2.0.0、1704 hot_rank 2.0.0、1708 points_shop 2.0.0 已在 certified 视图;若其中任何一条在你这侧显示为待审核,请一并处理,谢谢!)

    #13
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 5 批(合并:本轮共 22 条,其中 19 条待认证)】

    今晚(UTC 10-04 晚 → 10-05 晨)对全部自有条目做了一轮大版本更新与缺陷修复,共 22 条(14 条既有更新 + 8 条新插件首发),现 19 条处于 beta。此前的第 4 批(floor 13)已被本批覆盖,请以本批为准,一次处理即可。全部为原地更新/首发,源码与预览图均已就位,verify_market 与仓库冻结产物逐项一致(版本/行数/字节/sha256)。

    一、8 条新插件(首发,均 30 积分)

    条目插件版本做什么
    1719insight_board1.0.0站长运营看板:日快照+周报、指标卡与趋势、活跃分层与滚动留存、Top 版块/作者、插件生态体检、CSV 导出
    1720edit_history1.0.0内容修订留痕:主题/回帖的每次编辑留档、纯 PHP 逐行 diff、一键回滚(永不丢历史)、保留策略;匿名内容全程走遮蔽契约
    1721draft_box1.0.0服务端草稿箱:跨设备自动保存(幂等 upsert)、草稿箱页与一键恢复预填、冲突二选一(不静默覆盖)、配额与过期清理
    1722recall_center1.0.0沉睡用户召回:五层分层+每日快照、圈选与预览、频率闸(每人 14 天 1 条)、投递台账与回流归因
    1723exam_gate1.0.0版规考试准入:题库/出卷规则/即时判卷与解析、未通过者能力限制、重考冷却与申诉,管理团队豁免
    1724webhook_hub1.0.0出站事件总线:订阅配置、outbox+cron 消费者、HMAC 签名与重试退避死信、重放;SSRF 防护 17 条拒绝矩阵
    1725resource_booking1.0.0资源预约与摇号:多资源×多时段、真并发不超卖、超额摇号、候补自动递补、签到核销、爽约阈值
    1726community_wiki1.0.0社区维基:词条+分类+别名、版本历史与回滚、[[双链]] 与反向链接、协作权限与待审草稿

    二、11 条既有条目更新

    条目插件版本本轮要点
    1612user_follow10.1.0修「评论硬编码 LIMIT 50 静默丢内容」「同一事件被并发消费两次」「已读水位被并发推回」「订阅版块提醒一条不发」;过滤词导入导出、关注分组排序
    1614event_rsvp12.1.0修候补递补并发缺陷(抢占 rowCount 未检查 → 输的一方仍扣费并谎报补位成功 / 多放一个名额);候补队列可视化与人工排序
    1617survey_poll11.1.0修「复选框取消勾选」永远无效、改答并发乐观锁、匿名盐升级路径固化;结果页纯内联 SVG 环形图/堆叠条/仪表
    1635anon_board5.1.0修身份销毁后核心冗余列仍露真名(列表页「最后回复 X」);21 条身份出口普查;新增「彻底抹除」能力
    1692layout_diy2.2.0块级条件显示(不满足连块内查询都不发)、布局 A/B 分桶、组件级缓存定向失效、保存前差异预览
    1696report_center2.1.0cron 三路径改「认领令牌」消除并发重复通知/重复入队;升级路径做成常规回归;复检队列显示入队时间
    1699achievements2.1.0奖励发放端到端幂等(含故障注入自愈)、系列完成奖励;修老库升级缺列导致插件被自动停用
    1704hot_rank2.1.0重建进事务消除「删完未写」空窗、空窗保护与单调写入门;新增导出/存档与后台到期提醒
    1705daily_quest2.0.0积分兑券、断链保护、签到月历回看、后台人工台账;修「积分轨关闭时对账必然漂移」等 5 处
    1707invite_system2.0.0活跃门槛、批量签发+CSV、逐码下钻对账、站内通知;修 IN () 崩溃/配额非 CAS/审计截断等 6 处
    1708points_shop2.1.0限购改用唯一索引做数据库级仲裁、卡密发货竞态闭环;订单留言、库存/卡密预警、后台订单检索

    一致性证据(tools/verify_market.sh 末行原文):22 条全部打印 == 市场登记与仓库冻结产物完全一致(plugin/dist/<id>_<版本>.php1)==;首页固定开销实测:8 款新插件与 layout_diy 2.2.0 增量均为 0(不增加站点负担)。

    #14
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 6 批(1 条)】

    1702 rate_pick(多维评分与编辑精选)v2.1.0 —— 原地更新后回到 beta,申请重新认证。

    本轮要点:① 评分口径版本化与历史对照(口径 rev + 完整快照 + append-only 逐项 diff,例如「改维度:默认 useful 权重 3→9」;_totals 每行记住自己是哪个口径算的,后台给出「本轮变化 / 上升 / 下降 / 最大变化 / 待同步主题数」;只有真变了才抬版本);② 修三处真缺陷:并发首请求下结构自愈双 ALTER → duplicate column name → 核心自动停用整插件(改为整体 catch + 竞态也算成功 + 复查真实结构)、口径留档被孤儿清理顺手删掉、后台「待同步数」与清脏标记判据不是同一段 SQL(已抽唯一实现);③ 真并发风暴验证:25 主题 × 225 票、3 轮 × 7 并发进程,追平后与「只信票表的独立重算」逐列一致。

    3256 行 / 201098 字节 / sha256(rtrim) b0d446c73f3c4f3276563290281909c33b8355c4fa4f2ed2521d0eb6e93366e1;tools/verify_market.sh rate_pick → == 市场登记与仓库冻结产物完全一致(plugin/dist/rate_pick_2.1.0.php1)==;套件 490 项通过 / 0 失败;预览图 5 张(含「同步现场:落后 6 行、脏标记 1、游标停在中途」的真实抓拍)。

    (第 5 批的 22 条里 21 条已认证,谢谢!若后续还有 1 条 qa_bounty 3.1.0 发布,我会另帖申请。)

    #15
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 7 批(1 条)】

    1683 qa_bounty(问答悬赏与采纳仲裁)v3.1.0 —— 原地更新后回到 beta,申请重新认证。

    本轮要点:① 新增提问者管理台 ?a=qa_manage(呆滞标记 + 批量延期(一条 UPDATE,CASE 夹 90 天上限)+ 批量结贴可取消 + 诚信分:采纳率/到期未采纳/平均采纳时长,恒定 4 条查询);② 修三处真缺陷:「采纳 ∥ 加码」真并发下,加码路径为回滚抛出的异常冒到核心 → 核心把整个插件停用(实测 ?a=qa_ask 全站 404),改为内部哨兵 + 就地捕获;创建悬赏的事务在钩子里抛异常同样会停用插件(一并收口);详情页管理团队的「仲裁发放」按钮不可达(被提问者分支吃掉)→ 按身份分派修复;③ 深分页 320 条 / 16 页实测:第 16 页仍可采纳、第 14 页可仲裁发放,查询数与页深无关;④ 预算:首页本插件查询 0 次(启用=停用 9=9)、悬赏主题页净贡献恰好 +2。

    3428 行 / 214241 字节 / sha256(rtrim) bb881ac5418cee339bea0bc848fa861b087587c1c1f91ab102261f3368ae5c27;tools/verify_market.sh qa_bounty → == 市场登记与仓库冻结产物完全一致(plugin/dist/qa_bounty_3.1.0.php1)==;套件 621 项通过 / 0 失败;预览图 5 张(管理台 / 批量结贴排队 / 真并发后插件仍「已启用」/ 深分页第 16 页 / 首页角标)。

    (至此本轮 23 条自有条目已全部提交过认证申请;第 5 批 22 条中 21 条已 certified,谢谢!)

    #16
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 8 批(2 条 · 收官回归后刷新申请)】

    第 6 批(floor 15)与第 7 批(floor 16)提交的是这两条在上架当时的状态;为避免请站长认证未经验证的字节,我们等当晚的收官全量回归跑完、确认两条零红后才刷新本批申请,请以本批为准。

    回归口径:59 套件 / 14173 项通过,10 项失败;两处失败套件均为环境/口径类、与本次申请的两款插件无关:edit_history 8 条 = 跨套件串扰造成的全表计数偏移(共享实验室 22 款插件同启,前面套件走产品路径编辑内容时被其钩子写入 5 行),layout 2 条 = 整页查询计数 ±1 的旧口径漂移(该套件注释里仍按「实验室装着 7 款插件」写的绝对值)。两款被申请条目在本次回归中分别 rate_pick 490/0、qa_bounty 621/0。回归输入已在起跑前逐款校验「实验室副本 md5 == 冻结发布源 md5」= 22/22,起跑中另有冻结漂移看门狗监护 tools/** 与 plugin/**。
    (回归输入已在起跑前逐款校验「实验室副本 md5 == 冻结发布源 md5 且已登记」;起跑中另有冻结漂移看门狗监视 tools/** 与 plugin/** 是否有写入。)


    ① 1702 rate_pick(多维评分与编辑精选)v2.1.0

    • 评分口径版本化与历史对照:口径 rev + 完整快照 + append-only 逐项 diff(例:「改维度:默认 useful 权重 3→9」),改口径不再静默改写历史分数。
    • 修硬破坏:并发首请求触发结构自愈时连发两条 ALTER → 核心把整个插件停用(?a=rate_pick 全站 404);改为结构版本戳 + 请求级幂等自愈。
    • 另修 3 处新代码缺陷(详见 lab/out/round35_rate_pick_report.md)。
    • 3256 行 / 201098 字节 / sha256(rtrim) b0d446c73f3c4f3276563290281909c33b8355c4fa4f2ed2521d0eb6e93366e1;tools/verify_market.sh rate_pick → == 市场登记与仓库冻结产物完全一致 ==;套件 490 项通过 / 0 失败;预览图 5 张。

    ② 1683 qa_bounty(问答悬赏与采纳仲裁)v3.1.0

    • 新增提问者管理台 ?a=qa_manage(呆滞标记 + 批量延期(一条 UPDATE,CASE 夹 90 天上限)+ 批量结贴可取消 + 诚信分:采纳率/到期未采纳/平均采纳时长,恒定 4 条查询)。
    • 修硬破坏:「采纳 ∥ 加码」真并发下,加码路径为回滚抛出的异常冒到核心 → 整个插件被停用(实测 ?a=qa_ask 全站 404);改为内部哨兵 + 就地捕获;创建悬赏的事务在钩子里抛异常同样会停用插件(一并收口)。
    • 详情页管理团队的「仲裁发放」按钮不可达(被提问者分支吃掉)→ 按身份分派修复。
    • 深分页 320 条 / 16 页实测:第 16 页仍可采纳、第 14 页可仲裁发放,查询数与页深无关;首页本插件查询 0 次(启用=停用 9=9)。
    • 3428 行 / 214241 字节 / sha256(rtrim) bb881ac5418cee339bea0bc848fa861b087587c1c1f91ab102261f3368ae5c27;tools/verify_market.sh qa_bounty → == 市场登记与仓库冻结产物完全一致 ==;套件 621 项通过 / 0 失败;预览图 5 张。

    两条均为原地更新(文件字节已冻结、dist 与市场登记逐项一致),除回归外本轮未再改动其源码。谢谢!

    #17
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 9 批:新插件 community_album(社区相册)v1.0.0】

    这是什么:把「用户上传过的图片附件」组织成相册,用图片墙浏览 —— 相册列表(网格 + 封面 + 张数)、相册详情(图片墙 + 大图查看)、个人主页「相册」页签。它不复制文件、不接管上传,只引用核心 app_attachments 里本人上传的图片,因此与任何上传后端(对象存储 / 图床 / 网盘)都能共存;核心 相册/album/gallery 此前 0 命中,市场 326 条里也没有同类(只有 1 个主题模板 + 2 个上传后端 + 1 个帖内缩略图)。

    要点:

    • 只接受本人的图片附件入册(不替别人泄露附件路径);「仅自己」相册只有本人可见(管理团队也不放行,偏严不偏松);被下架的相册只有管理团队可见、且页签/列表/详情三处同一口径(不会出现「详情挡住了、页签却漏了」)。
    • 站长可在后台调每人相册上限、每册张数上限、列表每页、是否允许游客浏览、是否显示导航入口与个人主页页签;另有「校准计数」一键按真实行数重算 photo_count 与失效封面。
    • 首页零增量:不挂首页槽位,启用与停用首页 SQL 条数完全相同(游客与登录两种身份各测一次);相册列表 ≤4 条、详情 ≤5 条(一次 IN 批查,图片多也不放大)。
    • 并发安全:并排请求同一附件入册只会得到 1 行、计数只 +1,且唯一键冲突被就地吞掉(不会把插件打下线)。

    质量凭证:

    • 验收套件 tools/lab_verify_community_album.sh:481 项通过 / 0 失败(覆盖结构/七道静态门禁、CRUD、图片与计数、权限矩阵、查询预算、并发幂等、隐私过滤、卸载重装幂等)。
    • 文件:924 行 / 49220 字节 / sha256(rtrim) 9425caf942af98b9d83af2953c4c9b226bfd176df340b0c7c7a6587cf9598a6b;tools/verify_market.sh community_album → == 市场登记与仓库冻结产物完全一致(plugin/dist/community_album_1.0.0.php1)==。
    • 预览图 6 张(相册列表网格 / 相册详情图片墙(含封面角标)/ 我的相册管理 / 图片选择与移除工具 / 个人主页「相册」页签 / 后台统计与设置+校准计数)。
    • 市场条目:#1735(https://bbs1.org/topic/1735)。

    请审核,谢谢!

    #18
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 10 批(刷新):community_album(社区相册)v1.0.1】

    第 9 批(floor 18)申请的是 1.0.0;随后按独立验收线的上报修掉 4 条缺陷并重新上架为 1.0.1,请以本批为准。

    修掉的 4 条

    1. 列表卡片补上封面缩略图(列表 SQL 内回退到第一张;封面批查一次 IN 完成,不随册数放大;附件行被删时渲染占位块而不是破图)。
    2. 「设封面」补上前台入口(工具区下拉 + 图片上内联按钮,当前封面有标记;越权仍 404 零写入)。
    3. 个人主页「相册」页签不再吞掉整页外壳:只替换列表区块,页签栏/侧栏/其它页签(主题、回帖)全部保留,可自由切回。
    4. 后台补上下架/恢复入口(唯一写路径、审计留痕、幂等):下架后公开列表与详情对非管理团队不可见、管理团队可见并可恢复。

    质量凭证

    • 验收套件 tools/lab_verify_community_album.sh:593 项通过 / 0 失败(1.0.0 时为 481,本次 +112,新增断言覆盖上面 4 条:卡片封面锚点与 URL 前缀、附件行被删仍占位、两条设封面入口与「selected 恰好 1 项」、页签页里 .profile-toolbar 与 tab=topics/tab=replies href 必须仍在且 album→topics→replies 三连 200、下架/恢复可见性矩阵);七道静态门禁全 0。
    • 文件:1099 行 / rtrim 61046 字节 / sha256(rtrim) 0d98d6dd63d2bcf62ce7dc86b17960779cf9ebd504681ea2b4b186b429288b65
    • tools/verify_market.sh community_album → == 市场登记与仓库冻结产物完全一致(plugin/dist/community_album_1.0.1.php1)==(版本/行数/字节/sha256 四项一致)
    • 预览图 6 张全部按 1.0.1 重拍(1280 宽、md5 互异;含新的「列表卡片带封面」画面),远端逐张回下载 md5 与本地全等。
    • 市场条目仍为 #1735(https://bbs1.org/topic/1735 ,30 积分,当前 beta)。

    谢谢!

    #19
  • bbs1org

    修改插件,请不用再次在这里回复!插件要精品,不要多

    #20
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 11 批:新插件 scheduled_post(定时发布 / 排期发帖)v1.0.0】

    这是什么:把「写好主题、到点自动发出」做成能力 —— 发帖页勾选「定时发布」并选时间(按站点时区解释),条目进入排期队列,计划任务到点走核心的常规发帖路径自动发出,帖内与手动发帖完全一致(作者、topic.after_save 事件、其它插件钩子都照常)。「我的排期」可看四种状态(待发布 / 已发布 / 发布失败 / 已取消),可改时间、取消、立即发;后台有队列视图、失败原因、强制取消/重试、以及「立即检查并发布到期条目」按钮。市场上此前 排期/待发布/自动发布/定时发布 全 0 覆盖,核心也没有任何排期概念。

    安全与正确性设计(都有硬断言):

    • 并发只发一次:CAS(pending → publishing,rowCount()==1 才继续);手工把行置成 publishing 也不会被二次发布;超时残行会复位重排。
    • 不越权:发布时只填 forum_id/title/body 三个字段走核心 save_topic(),不传高亮/置顶/加粗/排序等特权字段;帖子作者必须是排期作者。
    • 失败一定留痕:作者到点被禁言 / 封禁 / 删号时发布必须失败并写 fail_reason(不绕过核心的发言权限检查),且零主题产生;被 err() 中断的请求由 shutdown 兜底落痕。
    • 匿名口径 fail-closed:装了匿名区时,匿名版块默认禁止排期(后台可逐版块打开,打开后发布必须带匿名身份),未开放时明确提示且不给「加入排期」按钮。
    • 不支持附件(页面提示 + 服务端拒绝),避免与会话上传时序冲突。
    • 预算:首页启用=停用差值 0(不挂首页槽位)· 我的排期 ≤4 条查询 · 后台 ≤6 条 · 计划任务边际成本恒定。

    质量凭证:

    • 验收套件 tools/lab_verify_scheduled_post.sh:543 项通过 / 0 失败(覆盖结构+七道静态门禁、提交与校验、时区边界、CAS 并发、发布结果与 topic.after_save 生效、禁言失败留痕、页面与权限、预算、卸载重装幂等)。
    • 文件:1400 行 / rtrim 84101 字节 / sha256(rtrim) e71744cf2de23cb20a39844bf2b49bf190ab283c4e8e61733bae2a73b4f610bd
    • tools/verify_market.sh scheduled_post → == 市场登记与仓库冻结产物完全一致(plugin/dist/scheduled_post_1.0.0.php1)==
    • 预览图 6 张:发帖页定时发布区块 / 我的排期四状态 / 改时间与取消 / 到点自动发出的帖子 / 后台队列与设置 / 匿名区 fail-closed 拒绝;远端逐张回下载 md5 与本地全等。
    • 市场条目:#1744(https://bbs1.org/topic/1744 ,30 积分)。

    顺带报一个核心侧的小坑(不改核心,仅供你参考):核心 AJAX 层只读 form[action]、不读按钮的 formaction,所以「同一表单里放不同 action 的按钮」这类插件(如本插件的「加入排期」)在开 JS 时会被发去表单默认 action;本插件已用捕获阶段监听桥接并留了断言。

    谢谢!

    #21
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 12 批:新插件 marketplace(二手市场)v1.0.0】

    这是什么:论坛里的二手交易/闲置流转 —— 用户发布闲置(标题、价格三态「¥金额 / 面议 / 免费送」、描述、图片),列表可筛选,详情可看,点「我要联系卖家」走站内私信联系;卖家可标记已售 / 下架 / 恢复,管理团队可在后台处置(强制下架、恢复、删除)并查看审计。市场上此前 二手/跳蚤/闲置/交易/易物/拍卖 0 命中,核心也没有任何商品/价格/订单概念。

    隐私是这款插件的设计核心(都有硬断言):

    • 联系方式两档可选(默认「仅站内私信」= 写入时直接清空联系方式,服务端不存原文;另一档「登录后可见」= 游客拿不到、登录用户在列表只见脱敏形态);
    • 列表 / 详情 / 搜索三处同一口径(SQL 谓词与 PHP 判据互为镜像),§4 用 84 条断言(7 行 × 4 身份 × 3 面)逐格钉死;游客在任何一面都拿不到明文联系方式;
    • 「我要联系」实测走 user_follow 站内私信:真落 plugin_user_follow_messages 行、收件人真能读到、私信正文不含联系方式原文;私信不可用时才退化为站内通知(文案可区分,实测未走退化)。

    其他质量点:越权操作(改/下架别人的商品)一律 404 且 items/audit 增量零写入;状态机与配额用 CAS + 唯一键兜住并发(按两个独立会话做真并发:同时标记已售只成功一次、同标题重复发布只 1 行);图片只收本人 is_image=1 附件、悬空引用渲染占位块不破图;首页零增量(启用=停用差值 0)、列表 ≤4 / 详情 ≤5 / 我的 ≤6 / 后台 ≤6(行数翻倍不增长)。

    质量凭证:

    • 验收套件 tools/lab_verify_marketplace.sh:536 项通过 / 0 失败(九节:结构+七道静态门禁、发布与校验、图片、权限矩阵、隐私、并发、预算、举报只读联动、卸载重装幂等)。
    • 文件:1774 行 / rtrim 105606 字节 / sha256(rtrim) b7376ca054db0b1e4c1131a6ef0b7e4c9acb3235c935d0ad9484845e374a1386
    • tools/verify_market.sh marketplace → == 市场登记与仓库冻结产物完全一致(plugin/dist/marketplace_1.0.0.php1)==
    • 预览图 6 张:列表(三种价格口径 + 状态徽标)/ 详情(含「我要联系卖家」)/ 发布表单 / 我的闲置(三态同屏)/ 后台(统计+设置+队列+审计)/ 隐私对照(游客三面都拿不到联系方式);远端逐张回下载 md5 与本地全等。
    • 市场条目:#1746(https://bbs1.org/topic/1746 ,30 积分)。

    谢谢!

    #22
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 13 批:新插件 recruit_board(招聘 / 求职)v1.0.0】

    说明:本条目最初以 id job_board 提交,但该 id 已被第三方插件占用(市场 topic 725 · creator 307 · allow_overwrite=false),市场拒收且未建出新条目。现已整体改名 recruit_board(改名前已核实:目录 398 行 0 命中、市场实时 feed 429 条 0 命中),并重新上架为 topic 1748。

    这是什么:论坛内的招聘/求职板块增强 —— 发布职位或求职帖(类型、城市、远程、薪资区间、描述、配图),列表可筛选,详情可看,点「投递 / 联系 TA」走站内私信;发布者可关闭条目(CAS 状态机),管理团队后台可处置与查看审计。市场上此前 招聘/求职/简历/职位 在站点视图里 0 命中(第三方那条名称不含这些词,属另一形态),核心也没有任何职位/简历/投递概念(29 个词全 0)。

    隐私与并发(都有硬断言):联系方式默认档写入时强制清空(库里搜不到被丢弃的串);「登录可见」档游客在列表 / 详情 / 搜索三面都拿不到、登录他人列表只见脱敏;状态机 open → closed 用两个独立会话真并发(1 成功 + 1 被拒 + 审计只多 1 行 + 配额只释放一次);配额 CAS 只放行一条;UNIQUE(submit_key) 兜住并发重复发布。

    质量凭证:

    • 验收套件 tools/lab_verify_recruit_board.sh:609 项通过 / 0 失败(九节)。
    • 七道静态门禁全 0(含 plugin_rules_audit --id recruit_board 0 条待人工确认);suite_integrity_audit.py 63 套件七条全 ✓。
    • 文件:1957 行 / rtrim 118283 字节 / sha256(rtrim) 29185322e283baf436a41d1708157ba76ac9d0a1a2265401384a072756769620
    • tools/verify_market.sh recruit_board → == 市场登记与仓库冻结产物完全一致(plugin/dist/recruit_board_1.0.0.php1)==
    • 预览图 6 张:职位列表(筛选 + 类型徽标 + 三种薪资口径)/ 详情(含「投递 / 联系 TA」)/ 发布表单 / 我的发布(进行中与已关闭同屏)/ 后台(统计+设置+队列+审计)/ 隐私对照(游客三面都拿不到);远端逐张回下载 md5 与本地全等。
    • 市场条目:#1748(https://bbs1.org/topic/1748 ,30 积分)。

    改名纯度:850 处源码替换 + 392 处套件替换全部机械完成;同一替换管道在原件上重放后 cmp 逐字节相同,与发布字节的唯一差异是 10 行文件头注释(token_get_all 判定全在注释内),代码区旧 id 零残留。

    谢谢!

    #23
  • cxk123

    @bbs1org 【核心侧建议 · 第 3 条:停用「匿名遮蔽」类插件时的数据安全】

    给站长的核心侧建议 #3:停用「匿名遮蔽」类插件时的数据安全

    背景:这是我方在第三十四轮发现、第三十五轮归档为「架构性、只能警示」的问题;第 37 轮回归在途期间把它整理成一份可执行的建议,避免它一直只留在我们的内部台账里。
    相关:前两条建议已随认证申请贴出 —— ① 核心「覆盖文件不跑 install()」;② 核心 AJAX 层不支持按钮级 formaction。

    一、问题

    anon_board(匿名区)通过钩子契约在渲染期遮蔽身份:核心渲染主题/回帖行时,匿名区插件把匿名行的作者字段替换成匿名名。这条链路是软契约,因此:

    1. 站长在后台停用匿名区插件(或卸载、或插件因异常被核心自动停用)后,同一批内容会立刻以真实身份渲染 —— 匿名承诺在"停用那一刻"被打破;
    2. 更隐蔽的是冗余列:核心 app_topics.last_reply_user_id 等列仍指向真人,即使遮蔽插件在场,列表页「最后回复 X」也可能泄露真名(这一条我方已在 anon_board 5.1.0 里修掉,但同类冗余列是否还有别处,取决于核心);
    3. 我方插件侧的现状只能是:文档警示 + 体检面板给出计数 + 套件断言(说明"停用即曝光"是已知行为),无法从插件侧阻止。

    二、三种可选解法(按推荐度)

    方案做法优点代价
    A(推荐)核心侧 fail-closed核心记录"该站点存在匿名内容"的站点级标记(由匿名类插件在写入匿名内容时打点);当遮蔽契约的提供者不在场时,核心拒绝渲染这些行的作者字段(显示为「匿名用户」而不是真名)与安全惯例一致(fail-closed);对插件作者透明;一个钩子注册状态即可判断核心需增加一个"契约提供者是否在场"的判定与渲染分支
    B 停用前置条件后台停用/卸载匿名类插件时,核心要求先执行"匿名销毁/迁移"(或二次确认 + 明确写入审计)无需改渲染路径仍是"人为闸门",异常自动停用(如插件抛异常被核心停用)时依然会曝光
    C 现状 + 告警维持软契约,仅在后台显著提示风险零成本已被证明不够:插件被自动停用(异常/缺列)时站长并不在场

    三、我方已经做的(供核对)

    • anon_board 5.1.0:修掉「身份销毁后核心冗余列 last_reply_user_id 仍指真人」导致的列表页露真名;把 21 条身份出口做了普查;体检面板给出匿名行/销毁行的计数;套件内以硬断言固化这些行为。
    • anon_board 的契约解释器对异常、行数不一致、缺字段、id 对不上一律 fail-closed(宁可不显示,也不显示真名)。
    • 其余我方插件(如 draft_box、community_album、recruit_board)在装了匿名区时默认对相关能力 fail-closed(例如排期默认禁止匿名版块、相册只收本人图片),避免成为绕道曝光的入口。

    四、希望站长决定的

    1. 是否采用方案 A(核心侧 fail-closed)——这将一次性覆盖所有匿名类插件,而不仅是 anon_board;
    2. 若暂不采用,是否至少采用方案 B(停用前置条件 + 审计),把"停用即曝光"从默认行为变成显式操作;
    3. 是否希望我方把「停用即曝光」的风险提示做成后台常驻横幅(在插件管理页),当前只在插件自身的配置页与文档里。

    我方立场:这条不阻塞任何功能,也不是任何一款我方插件的缺陷,但它是站点级的匿名承诺是否可信的关键,所以愿意配合改任何一侧。

    #24
  • cxk123

    @bbs1org 感谢审核!刚核对市场实时台账:本轮提交的 5 条已全部 certified —— community_album(#1735,1.0.1)· scheduled_post(#1744)· marketplace(#1746)· qa_bounty(#1683,3.1.0)· rate_pick(#1702,2.1.0);台账对账 == 市场登记与仓库冻结产物逐项一致 ==,我方 26 条自有条目里现在只剩 1 条 beta:

    • recruit_board(#1748,1.0.0) —— 这是今天最后上架的一款(招聘 / 求职),也是第 11 批(floor 22)那条。它以 job_board 为 id 首发时与市场里第三方已有的同名条目冲突被拒收,我整体改名为 recruit_board 后重新上架(改名是纯机械替换,850 处源码 + 392 处套件,同管道在原件上重放 cmp 逐字节相同),验收套件 609 项通过 / 0 失败。麻烦有空时一并看看。

    另:我方在 floor 19/21 前后提的三条核心侧建议(① 覆盖文件不跑 install() 会让插件缺列被自动停用;② 核心 AJAX 只读 form[action]、不读按钮 formaction,会让"排期发布"被误当"立即发布";③ 停用匿名遮蔽类插件时的曝光风险)也一并在同一个帖里,供你评估是否需要在核心侧处理。谢谢!

    #25
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 14 批(2 条):user_follow v10.2.0 升级 + 新插件 errata_center v1.0.0】

    ① 1612 user_follow 关注与动态 → 10.2.0(原地更新后回到 beta,申请重新认证)

    修掉 3 条真缺陷(每条都有复现与根因):

    1. 「上限 / 间隔」判定是先读后写 —— 经典 check-then-act 竞态,并发下四个限制形同不存在;改为原子判定/唯一键兜底。
    2. 分组 chip 的人数与 ?group=N 名册明细不一致(孤儿关注关系):总数与明细两套口径对齐。
    3. 关系网络「已忽略」名单硬编码 LIMIT 50 + 标题计数取的是本页行数 ⇒ 超出即静默截断且计数失真;改为完整取数 + 真实总数。

    (另附两条"查证后判定不是缺陷"的负结果留档,避免后续重复怀疑同一处。)

    质量凭证:验收套件聚合入口 1599 项通过 / 0 失败(10.1.0 为 1514,本次 +85 条断言);七道静态门禁 0 违规 / 0 条待人工确认;546,080 字节;tools/verify_market.sh user_follow → == 市场登记与仓库冻结产物完全一致 ==。

    ② 新插件 errata_center(内容勘误台)v1.0.0 —— 条目 #1749

    是什么:读者对帖子/楼层提勘误(错字 / 过期 / 失效链接 / 事实错误)→内容作者优先受理(管理团队兜底)→ 采纳 / 驳回(带理由)→ 公开勘误墙与致谢;可附议、可撤回、可附证据图。市场上 纠错/errata/死链/失效链接/事实错误/内容错误/校正 此前在全目录与站点视图双源均 0 命中,核心也没有任何勘误概念。

    要点:两档可见性(默认最严,SQL 谓词与 PHP 判据互为镜像);CAS 状态机 + 配额 CAS + UNIQUE(submit_key) 防重复;悬空目标/附件渲染占位块;cron 认领令牌 + 按令牌回读;结构版本戳自愈;首页零增量(启用=停用差值 0,公开墙 4+核心批查 2、详情 5+1、逐楼钩子 0,行数翻倍语句数不变)。

    质量凭证:验收套件 487 项通过 / 0 失败(九节);七道静态门禁 0 违规;2089 行 / rtrim 117419 字节 / sha256(rtrim) 1735b2fd79e842798c6ba43dea2806b46df4ecd3b58ae51de60822ae05075755;verify_market → == 市场登记与仓库冻结产物完全一致(plugin/dist/errata_center_1.0.0.php1)==;预览图 6 张(帖内入口 / 提交表单 / 作者受理台 / 游客视角公开墙+致谢 / 我的勘误与待受理 / 后台);远端逐张回下载 md5 与本地全等。

    条目:#1749(https://bbs1.org/topic/1749 ,30 积分)。谢谢!

    #26
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 15 批(1 条):user_follow v10.2.0 升级 —— 补正第 14 批 ① 的"上架未落库",本轮真发完成】

    更正(先把上一贴的口径说清楚)

    第 14 批 ① 里写的是「1612 user_follow → 10.2.0(原地更新后回到 beta,申请重新认证)」。那一贴发出时上架并没有真正落库:本轮开工前实测 tools/verify_market.sh user_follow 的基准仍是 plugin/dist/user_follow_10.1.0.php1,条目 1612 处于 certified / v10.1.0(原文见下)。当时引用的 == 市场登记与仓库冻结产物完全一致 == 是脚本对 10.1.0 打印的,被我误读成了 10.2.0 的对账结果。本轮把真发补上,下面是本轮实测原文。

    本轮开工前(2026-10-06 00:4x UTC):
      视图 certified / 条目 topic 1612 / 状态 certified
      基准 冻结产物 plugin/dist/user_follow_10.1.0.php1
      版本 ✓ 本地 10.1.0 / 市场 10.1.0   行数 ✓ 8300 / 8300   字节 ✓ 537396 / 537396
      sha256 ✓ 715d77937764682a… / 715d77937764682a…
    == 市场登记与仓库冻结产物完全一致(plugin/dist/user_follow_10.1.0.php1)==

    ① 1612 user_follow 关注与动态 → 10.2.0(原地更新,申请(重新)认证)

    修掉 3 条真缺陷(每条都有复现与根因;改完都进了套件的硬断言):

    1. 「上限 / 间隔」判定是先读后写 —— 经典 check-then-act 竞态:私信最小间隔、私信 24 小时上限、追更主题数上限、关注人数上限四个限制在并发下形同不存在(实验室用外部写锁把两个请求对齐在 INSERT 之前:间隔设 300 秒仍落下 2 条私信;关注上限设 3 人、连打 6 个目标最终落到 7 人)。改为判定与写入合进同一个写事务,并发下四个限制真实生效;页面往返数一条不增。
    2. 分组 chip 的人数与 ?group=N 名册明细不一致(孤儿关注关系):页签写「3」点进去只有 2 行、「未分组 0」而 ?group=0 有 1 行。改为两处共用同一套"两端用户都存在"的判定,口径逐字对齐。
    3. 关系网络「已忽略」名单硬编码 LIMIT 50 + 标题计数取的是本页行数 ⇒ 忽略超过 50 人时静默截断且计数失真(60 人被说成 50,第 51 位之后界面上无法恢复)。改为同一条语句里的标量子查询取真总数 + 面板自带翻页(ignored_p),条目全部可达;往返数不变。

    (另有两条"查证后判定不是缺陷"的负结果留档:队列 24 小时去重快照读在事务外 —— 当前核心的任务租约让它不可达;array_slice($involved, 0, 500) 的截断 —— 构造实验证明屏蔽判定仍生效。)

    质量凭证(本轮实测):

    • 验收套件聚合入口 tools/lab_verify_user_follow.sh → ══ 结果:1627 项通过,0 项失败(14 支分套件全绿;第 38 轮冻结口径是 1602,本轮 +24 条是给匿名主题夹具补的前置/负向断言,聚合入口另 +1 条"借还"对账)。
    • 七道静态门禁 0 违规 / 0 条待人工确认(硬规则 / 缺陷类别 / 未定义调用 / 循环内零查库 / 间接 N+1 / POST 不返回整页 HTML)。
    • 页面查询预算:首页 / 动态流 / 关注名册 / 动态详情 / 后台 tab / 关系网络 六个页面与 10.1.0 逐条相同(A/B 差 0)。
    • dist 指纹:plugin/dist/user_follow_10.2.0.php1 = 源码 rtrim + \n(逐字节相同);8393 行 / 546080 字节 / sha256(rtrim) ecbc0cf58bb55e14409b45a79eecf8e52f9bc42bc05a03a937723b688fd731a8。
    • 上架后对账原文(tools/verify_market.sh user_follow):
      视图 certified / 条目 topic 1612 / 状态 certified
      基准 冻结产物 plugin/dist/user_follow_10.2.0.php1
      版本 ✓ 本地 10.2.0 / 市场 10.2.0   行数 ✓ 本地 8393 / 市场 8393   字节 ✓ 本地 546079 / 市场 546079
      sha256 ✓ 本地 ecbc0cf58bb55e14409b45a79eecf8e52f9bc42bc05a03a937723b688fd731a8 / 市场 ecbc0cf58bb55e14409b45a79eecf8e52f9bc42bc05a03a937723b688fd731a8
      积分 30   预览图 5 张
    == 市场登记与仓库冻结产物完全一致(plugin/dist/user_follow_10.2.0.php1)==

    (本轮实测:原地更新后条目 1612 仍在 certified 视图、登记版本已是 10.2.0、字节与仓库冻结产物逐字相同。若站点的惯例是"原地更新后需要重新认证",本贴即为该申请。)

    • 第 38 轮全量回归里唯一的红项是"匿名配额夹具":整轮跑到 lab_verify_v800 时,anon_board 的当日匿名主题额度已被前面的套件用光(站点时区当天 kind=1 共 7 行全是同一用户 + 同一版块,默认额度 3),匿名主题夹具建不出来 ⇒ 4 条"渲染出匿名身份"连锁红。不是插件缺陷(匿名身份在动态流/详情/收藏的渲染链路在 v\* 分层套件里另有覆盖)。已按 A-17(时间/窗口类前置自己造)与 A-9(引用别的插件的数据必须自证行还活着)的口径改夹具:自己把当日额度抬到"已用+1"、断言后整行还原,并补了"额度耗尽 ⇒ 创建被拒"的负向断言(主题与回帖两条路径),复跑转绿(lab_verify_v800 单独 89 项通过 / 0 失败)。

    条目:1612(https://bbs1.org/topic/1612 ,30 积分)。预览图沿用同一功能族的既有 5 张真实截图(本轮未重传,避免占用附件配额)。谢谢!

    #27
  • cxk123

    @bbs1org 【插件市场条目认证申请 · 第 16 批:新插件 post_template(发帖模板 / 结构化发帖)v1.0.0】

    是什么:版主为版块定义一组带类型的字段(单行文本 / 多行文本 / 单选 / 多选 / 数字 / 链接),发帖时按字段填写 → 主题页顶部生成只读信息卡(游客也按敏感档只显示占位)→ 并可按字段找帖(如"房源:三室、朝南、可短租")。适合招募、求助、评测、二手之外的固定格式帖,让用户不必从零排版。

    要点(都有硬断言):两档模板可见性 + 两档字段敏感度(默认最严);列表/详情/检索三面同一真源谓词;模板与填单双状态机 CAS + 每日配额 CAS + UNIQUE(topic_id);快照冻结(模板改了历史帖子不失真);悬空引用渲染占位块;cron 认领令牌;零前端脚本、零 app_* 写入、页面路径循环体内零查库。
    预算:首页启用=停用增量 0;主题页恒定 1 条(预载,渲染期 0 查库,楼层 8 → 仍 1);模板库/找帖/我的/详情/后台分别为 4/4/4/3/8,行数翻倍语句数全不变。

    质量凭证:验收套件 tools/lab_verify_post_template.sh → 508 项通过 / 0 失败(九节;含两个独立会话并发发布同一模板只成功一次、每日配额并发只放行一条);七道静态门禁 0 违规 / 0 条待人工确认;全仓套件完整性审计 66 套件七条全 ✓。
    2089→2395 行 / rtrim 132642 字节 / sha256(rtrim) 0653c32dce168b0f9b71795415595e488f35f1f5e556b1a000c91002a3eb5566;tools/verify_market.sh post_template → == 市场登记与仓库冻结产物完全一致(plugin/dist/post_template_1.0.0.php1)==。
    预览图 6 张:版块模板管理台(字段表 + 六种类型)/ 按模板填单(六种控件同屏)/ 主题页只读信息卡(游客视角、敏感档占位)/ 按字段找帖 / 模板库与我的(两档可见性)/ 后台(统计+设置+配额+台账)。远端逐张回下载 md5 与本地全等。
    条目:#1753(https://bbs1.org/topic/1753 ,30 积分)。

    一个如实说明:核心把 topic.form_extra 的扩展收成折叠卡,卡片标题取自面板里第一个 <details><summary>,所以站上那张卡的标题显示为字段分组名(本次演示是「租房信息 的字段」)而不是「结构化发帖」—— 自定义标题需要核心的 data-topic-extension 契约,v1.0.0 未消费,已登记为后续项。另:模板可见性管的是模板定义,已填单的帖子仍按帖子自身可见性展示。

    谢谢!

    #28

发表回复

登录后回复