Skip to content

产品矩阵总览 ​

沉思波的产品按「一个产品一节」组织:一句话定位 + 真实入口 + 当前状态。只列真实存在的产品——已上线的给真实链接,在建的写在建,没入口的写「待补充」,不吹不掩。

产品线一览 ​

产品线产品定位
AI 能力线千序言 AI 聚合平台、算力小店、创作空间多模型 AI 能力底座 + AI 能力的商业出口
教育线知新、百书斩、近代史纲要题库、学飞乐、鹿鸣高校与教育场景的教、学、练
文化数字化线文化传声筒、江苏藏书楼云游展厅、AI 赋能古籍展览大屏站、白泽非遗大模型图书馆 / 文化馆 / 非遗的数字化
企业服务线园联云(产业园管理系统)、马来 AI CRM、安居码、名帖(原智能名片系统)、祝融 AIGC 培训平台、青语园区运营、企业 AI、政务公示与工具
游戏线诡舍独立游戏产品

共 19 款产品 + 官网;状态与链接以真实访问为准(2026-10-03 逐款外网实测)。


状态标记:已上线 开发中 规划中 权益角标:会员可享(与顶栏「免费学 / 免费进」角标同族,只表会员权益一种语义)


千序言 AI 聚合平台 ​

知新 · AI 赋能教育风向标 ​

知新 AI 赋能教育 logo

文化传声筒 ​

  • 定位:面向图书馆 / 文化馆的多租户内容平台,以标品包形式交付。
  • 入口:https://culturevoice.qianxuyan.com
  • 状态:已上线 已按标品交付,多域名落位,已服务南京图书馆。

祝融 AIGC 培训平台 ​

  • 定位:多租户 AIGC 课程教学、创作与协作系统,面向培训学员与机构。
  • 入口:https://zhurong.qianxuyan.com
  • 状态:已上线 域名落位、部署链路已验证。

百书斩(原名百题斩,2026-10-01 品牌正名) ​

  • 定位:面向高校场景的垂类教育产品(刷题 / 答题系统)——「书籍阅读答题,知识通过奇特的方式进入脑子」;与教师备课端鹿鸣同属高校教育线。
  • 入口:https://baishuzhan.qianxuyan.com(Next.js 答题平台)· https://qm.chensibo.cn(PHP 刷题本体,9978 题 / 364 用户)· https://st.mystudyzone.cn(备用部署)
  • 状态:已上线 2026-10-01 重部署并分配域名,三域名并行在线。

园联云 · 产业园管理系统 ​

  • 定位:产业园区运营平台(园区总览 / 楼宇租控 / 财务 / 招商线索 / 企业报修),把园区业务整体数字化。
  • 入口:https://yuanquyun.qianxuyan.com(商业版)
  • 状态:已上线 商用化改造后完成三轮验收(2026-10-02),经营指标回填实测通过。

白泽非遗大模型 ​

  • 定位:面向非遗领域的 AI 检索增强问答应用,服务非遗数字化场景。
  • 入口:https://ich.qianxuyan.com
  • 状态:已上线 非遗数字化交付线的模型应用。

江苏藏书楼 · 云游展厅(南图案例线) ​

  • 定位:360° 全景漫游线上特展,南京图书馆数字化交付案例。
  • 入口:https://memory.qianxuyan.com
  • 状态:已上线 案例资产,另有古籍 / 藏书楼系列子站。

AI 赋能古籍展览大屏站 ​

  • 定位:学校图书馆电子屏用的成果展示大屏站(Kiosk 五幕轮播 + 二维码导览)。
  • 入口:http://expo.chensibo.cn
  • 状态:已上线 HTTPS 证书收口中,当前为 HTTP 访问。

诡舍 ​

  • 定位:游戏线产品(独立产品线),剧本 / 恐怖题材游戏项目。
  • 入口:https://guishe.qianxuyan.com
  • 状态:已上线 正式名称与后续规划待定。

青语 ​

  • 定位:学生内容社群,已落地案例,2000+ 用户。
  • 入口:https://mystudyzone.cn
  • 状态:存量维护 维持 / 收割 / 关停三选一决策中。

学飞乐学习平台 ​

近代史纲要题库 ​

创作空间 ​

  • 定位:面向内容创作者的 AI 漫剧 / 创作平台。
  • 入口:待补充(尚未接入对外域名)
  • 状态:规划中 后端能力就位,域名与产品化待排期。

鹿鸣(原名育见) ​

鹿鸣 logo(纯净版)
  • 定位:高校教师 AI 备课工作台(教师备课端)。
  • 入口:待补充(预研阶段,未对外)
  • 状态:预研中 对外名已定「鹿鸣」。

算力小店(原名算力超市,2026-10-04 更名) ​

  • 定位:AI 模型按量选购的商业出口——千序言的模型能力对外开卖,让「你也可以用 AI 把想法做成产品」。
  • 入口:https://suanli.qianxuyan.com
  • 状态:已上线 2026-10 上线运营。
  • 会员权益:会员可享 会员可享店内内容;免费社区(论坛 / 课程 / 开源 Skill)照常用,会员权益以用户社群公告为准,口径见会员 · 两个社区。

随堂 · 课堂互动工具(demo) ​

  • 定位:课堂互动三端 demo——扫码点名、随堂答题、AI 三模式抽奖、课堂报告导出(教师控制台 / 投影大屏 / 学生扫码页,一仓三端)。
  • 入口:https://suitang.chensibo.cn(大屏 /screen · 教师 / · 学生 /join)
  • 状态:demo 已上线 2026-10-04 起对外演示;旧域 suitang.qianxuyan.com 已 301 至新域。
  • 口径:按「默认 chensibo」域名规矩落位(31 号域名清单 §10/5);demo 工具,不计入上方「共 19 款产品」数。

安居码(吴中 · 长桥街道出租房安全公示) ​

  • 定位:出租房安全公示平台——消防专栏 C 位(最近检查结果、隐患整改、三清三关),配合治安登记核验。
  • 入口:https://anjuma.qianxuyan.com
  • 状态:已上线 2026-10-02 公网全流程实测通过(33/33 断言全绿)。

马来 AI CRM ​

名帖 · 沉思波名片定制(原「智能名片系统」) ​

  • 定位:把姓名、职务、公司与联系方式做成一张微信里点开就能看的电子名片——5 套主题任选,专属链接与二维码交付,内容与样式由我们定制。
  • 入口:https://card.qianxuyan.com
  • 状态:已上线 2026-10-04 由「注册登录 + 自助创作的工具站」改为纯名片定制落地页(定制案例、5 套主题、4 步定制流程、官网渠道联系定制);注册登录入口与账号接口已全部下线,站内已交付的公开名片可点开核对。
  • 服务与价格:源码代部署 + 代运维 ¥5/月;定制交付 ¥15/个(纯静态)· ¥50/个(带交互),按难度分档、含名片页与落地页,做完代部署——学生尝鲜价(2026-10-04 拍板),下单走官方小店与联系我们。

沉思波公司官网(含文档中心) ​

  • 定位:沉思波品牌与产品线的第一入口(本站)。
  • 入口:https://chensibo.cn · 文档中心 https://chensibo.cn/docs/(原 docs.qianxuyan.com 已于 2026-10-08 整站 301 收口到本站)
  • 状态:已上线 2026-10-02 文档站升格官网:官网页 + /docs 文档中心 + 用户社群(注册 / 评论 / 交流区)+ Vibe 学习中心。
  • 仓库口径:现役官网 = chensibo/biz/docs-site(本仓,push 即部署)。chensibo/biz/sisibo-web = 旧版 PHP 官网的 Nuxt 3 重制版,属旧站重制·留档——不部署上线、不作为 chensibo.cn 官网(如需启用须先上独立测试子域评审,禁止直接接管现役 docroot)。
  • 单域名收口(2026-10-08 当日二代):老板先问「两个域名不是同一个源码吧?」→ 实测同一份产物、两套壳(html.is-docs-center 由域名判定,字节逐项相同);当晚拍板文档站下线——docs.qianxuyan.com 整站 301 → chensibo.cn(软下线:DNS 与证书保留,秒级可回滚)。文档中心从此只在 chensibo.cn/docs/;同源双壳的壳代码保留未启用(域名 301 后不再有域名挂 is-docs-center)。规矩不变且更硬:内容只维护这一处,任何情况下不要再复制出第二套站点或第二个对外域名(复制就会分叉,分叉就会让"哪个是官网"的老问题重演)。

沉思波统一控制台(含会员体系) ​

  • 定位:一套身份管全平台——管理员进管理面(监控大盘 / 站点总览 / 平台总览 / 数据总览 / 用户 / 会员体系 / 内容 / 举报 / 工单 / 待办 / 图床 / 审计),用户进个人中心;账号与 chensibo.cn 社群通用。
  • 入口:https://chensibo.cn/console/(零构建 SPA,源码 docs/public/console/console.js + console.css,登录态与 /api 同源)。
  • 浅色 / 深色主题(2026-10-08 上线 · 独立文件交付,零侵入):老板令「管理后台 UI 要能切浅色/深色」——
    • 做法:新增 console/theme.css + console/theme.js 两个独立文件,一律不改 console.js / console.css(那两个文件另有维护线,避免并发写冲突);index.html 只加两行引用 + 一段首屏防闪内联脚本(在样式表之前定主题)。
    • 偏好口径:localStorage('csb_theme')(light | dark)优先;未设置时跟随系统 prefers-color-scheme。切换入口在顶栏(登录页无顶栏 → 右上角悬浮按钮)。
    • 浅色怎么实现:覆盖 :root[data-theme='light'] 的调色板令牌 + 少数硬编码色(徽章/胶囊文字、顶栏/条带底、hover、阴影、移动底栏)。半透明徽章底/边照旧,只把文字换成深色系保对比度;深色渲染一个字节不动(断言逐条比对原色值)。
    • ⚠️ 维护规矩(新增硬编码色必看):console.css 里凡是写死 color: #xxxxxx 或写死深色底的样式,必须在 theme.css 补一条浅色覆盖,否则就是「浅色下浅字浅底」——首批就漏了 5 处:.auth-error 1.77:1、.plat-glyph 1.17:1、窄屏 .nav-strip a.active 1.05:1、.srv-err / .srv-err.soft、移动端 .mtab-bar(浅色下变黑条)。现已补齐并有断言兜住。
    • 验收(主题):scripts/assert-console-theme.mjs(40 项:静态加载顺序与防闪 → 切换/持久化/跟随系统 → WCAG 对比度实算(computed style 逐级合成 alpha 底)+ 全页「浅底浅字」扫描,自动跳渐变底避免假阳性);本地与线上各 40/40。与 assert-console-px.mjs 分工不重复(那个管 #/lab、#/traffic 的内容渲染与两色态)。证据 证据-控制台主题-20261008/(16 张截图 + 像素直读 + 断言日志)。
  • 图床可视化增强层(2026-10-08 上线 · 独立文件交付,零侵入):老板令「图床 UI 也优化一下,要能可视化看到上传了哪些东西,才好去删除;上传要有拖入快速上传」——
    • 做法:新增 console/imgbed.css + console/imgbed.js 两个独立文件(同主题那条路子,不改 console.js / console.css),index.html 加两行引用。是增强不是重写:行首插一格缩略图、表头补「预览」列、表格上方加批量条、工具栏下加拖放区——他们的表格行数与列语义不变。
    • ① 缩略图:公开前缀(web/products/mystudyzone/culturevoice)走 CDN 直连 + COS 图片处理,零 API 调用;私有前缀(miniapp/tmp)进视口才调 GET /api/console/imgbed/preview?key=…&w=160&json=1 换短时效 URL(内存缓存 4 分钟,一页 300 张不会一进来就 300 次签名)。w= 降采样是必需的:桶里 mystudyzone 有张 31,229,121B 的 JPEG,降采样到 160 宽后 37,730B(828×)。
    • ② 灯箱:点缩略图看大图(w=1280);公开对象可「复制 CDN 链接」,私有对象不给(签出的链接会过期,不误导);「删除」= 点他们那行的删除按钮——复用其二次确认与审计,不另造一套删除。
    • ③ 快速上传:整页可拖 + 多选,逐张「签名 → XHR 直传 COS」带真实进度条(并发 3);完成后 500ms 才刷新,且结果跨他们的重渲保留(否则刷完就看不到哪张失败了——这条是断言逼出来的)。
    • ④ 批量删除:复选框 + 全选,逐条调他们的删除接口;撞到服务端 30/分 限流会停下来说清,不闷声失败。
    • ⚠️ COS 图片处理的三个边界(均实测):① 处理参数不能进签名(签进去反而 SignatureDoesNotMatch;在容器内用真密钥试了 7 种写法:签不带参的 3 种全 200);② imageMogr2 对非图片与 SVG 一律 400(.txt、目录占位对象、矢量图都不行);③ 个别源对象本身损坏(例如被改名成 .jpg 的网页文件)连原图也渲染不了 → 缩略图显「查看」、灯箱里说明原因。
    • ⚠️ 上传落点规矩:默认页签 miniapp/ 不能直传(signForClient 只签 miniapp/<自己 uid>/,admin 也只多公开前缀与 tmp/;实测 miniapp/console/x.png → 400 无权访问该路径),增强层自动改道到「自己名下的 miniapp/<uid>/console/」并在提示里说明。
    • 验收:scripts/assert-imgbed-visual.mjs(26 项:缩略图注入/降采样/SVG 与非图片边界/灯箱/删除点透/拖入上传/批量删除/零 JS 错误)本地与线上各 26/26;零破坏:既有 scripts/assert-imgbed-console.mjs 的 S1–S3d 全过;真账号真 COS 端到端(拖入上传 → 对象真进桶 → 批量删除 → 桶里已无);证据 证据-图床可视化-20261008/。
  • 图床协作四件(2026-10-08 上线 · 老板令第二批:目录可设置 / 安排人审核 / 逐条备注 / 多种看的方式): 老板原话「不是有文件夹吗,那么文件夹就可以去设置,然后我们还要可以对图床安排人审核,然后还可以对图片文件等等内容进行备注,要兼容多种看的方式」。
    • 做法:后端新增独立模块 community-api/imgbed-meta.js(schema 自建、不动 db.js,与 traffic.js/lab.js 同法), 在 server.js 的图床段追加 8 个协作口(workbench/folder/reviewers/queue/review/note/notes + 出图口放宽); 前端仍只在 console/imgbed.js|css 里做(不改 console.js / console.css)。
    • 三张表:imgbed_folders 目录设置(显示名 / 说明 / 是否需审核 / 上传落点)· imgbed_reviewers 审核人安排(一行一个职责)· imgbed_objects 逐条备注(标题/备注/标签)与审核状态同表(一条对象一行,少一处会分叉的地方)。
    • 「待审」是算出来的,不是上传时写进去的:上传走「浏览器拿一次性签名直传 COS」,服务端从不经手字节, 所以没有「新对象到达」这个事件;判定放在读侧 —— 桶里有、但(没审过 ‖ 审完之后指纹变了)→ 待审, 指纹 = size:LastModified(COS list 就能拿到)。好处:直传的、从七牛迁来的、历史存量一个口径全覆盖;代价: 对象被覆盖后自动回到待审(改过的东西要重看,这是想要的行为)。
    • 只有 need_review=true 的目录才产生待审(默认全 false):否则一开功能,mystudyzone/ 那 357 张存量瞬间全变待审; 开启后存量从那一刻起算,不回溯重审。
    • 审核人不是角色卡:imgbed_reviewers 里记一行「谁负责哪个目录」,范围限该目录及其子路径,别的目录一律 403; 他不挂 admin(不给删除权、不给改设置、不给看审计)——最小授权判定用 left(target, length(prefix)) = prefix (不用 LIKE:前缀里可能有 _/%,会造成越权匹配)。管理动作(改目录设置、安排/撤审核人)只有 admin。
    • 前端四件事:① 表格补一列「备注」(摘要 + 审核角标,点开弹层编辑:标题/备注/标签); ② 三种看的方式——表格 / 卡片 / 紧凑,localStorage('csb_imv_view') 记住,纯 CSS 换装同一份 DOM (卡片视图缩略图自动升到 w=400,不重写他们的表格渲染);③「目录设置」弹层(显示名/说明/需审核/上传落点 + 搜人加审核人、撤销); ④「审核」工作台(待审 / 已过审 / 已驳回 / 有备注 / 全部 五个筛选,通过 / 驳回必填理由、可顺手写备注)。
    • 上传落点在设置里是「真开关」:服务端只肯存 signForClient 签得出去的落点(公开前缀 / tmp/ / 自己名下 miniapp/<uid>/), 设一个签不出去的路径上传必然 400 —— 所以不让设,并说清原因;拖入上传会优先用这里设的落点。
    • 审核员的进路(他没有 admin 卡,#/imgbed 会被 console.js 判 403):本层把这块死页换成就地工作页, 并在任意页面挂一个「图床审核 · N 个目录」悬浮入口 —— console.js 一个字节没动; 真·无权限者仍看原来的 403 面板(不越权、不假装)。
    • 顺手修的既有毛病(老板 10/8 指出):工具栏那个原生 <input type=file id=imgUpFile> 从没被样式化过 (console.css / theme.css 里没有 input[type=file] 规则),::file-selector-button 是浏览器默认的 白底 rgb(239,239,239) + 2px 黑边 + 0 圆角 + Arial 13.3px,深色主题里像贴了张白纸,框高 25px 与旁边 .btn-sm(30) 也不齐; 已在 imgbed.css 里按 .btn-sm 规格整容(高 30 / 圆角 7 / 12.5px,内钮走 --brand 白字),并写了断言钉住。
    • 验收:服务端 community-api/smoke-imgbed-meta.mjs 72/72(模块 31 + HTTP 端到端 41;真本地 PG + 真 COS, 对象只落 tmp/smoke-meta/ 并收尾删除;含越权 403、驳回必填理由、内容变化回待审、审计留痕、未登录 401 优先); 前端 scripts/assert-imgbed-workbench.mjs 本地 / 线上各 37/37(管理员 / 审核员 / 无权限者三场景); 零破坏:既有 assert-imgbed-visual.mjs 26/26、assert-imgbed-console.mjs S1–S3d 7/7、assert-console-theme.mjs 40/40(本地与线上)。 证据 证据-图床协作四件-20261008/。
  • 会员体系(2026-10-08 上线 · 模式 v1 落地):把「实验室会员与活动体系」搬进后台——
    • 真源三处:规则骨架 community-api/lab.json(身份五层 L0–L4 / 五本账 / 四条红线 / 编号前缀 GL·AN / 待拍四项与建议值);个人数据 lab_members、lab_ledger、lab_salons 三张表;老板拍板结果 lab_config;
    • 接口:GET /api/console/lab + POST /api/console/lab/members|ledger|salons|decisions(admin 门禁;每个写动作写 console_audit);
    • 四条红线在服务端执行(不在前端):出资池账目必挂《合作分红协议》编号、单人 2000 / 池 1.2 万封顶、L4 无协议不发号——越线一律 400 并说清原因;
    • 规矩:会员名单与五本账只在控制台这一处维护,不要在文档或表格里另抄一份(同「两个域名一份源码」的理由:抄一份就会分叉)。
  • 验收:前端 scripts/assert-lab-page.mjs(桩数据驱动真页面,32 项);服务端在容器内直调 lab.js(建表 / 红线拒止 / 写入 / 清理,14 项);证据 证据-控制台会员体系-20261008/。
  • 访问统计 · 自研统计探针(2026-10-08 上线 · 与 51la 双跑):老板问「能不能换成自研探针统计所有子站」——
    • 为什么换:26 站挂着 51la 的码,但后台只能核验「挂没挂」,PV/UV 要走 51la 付费 OpenAPI(一直未接)——等于付了挂码的成本、只换来一张核验表。自研探针把数字拿回自己手里,并从 26 站扩到全部自有站(台账 55 个域名)。
    • 真源:采集端 community-api/traffic.js(口径红线写在这里,不在前端);明细 site_hits(保留 90 天滚动清理)+ 汇总 site_daily(长期保留)+ 当天去重 site_daily_visitors;站点清单与 51la 登记读 community-api/monitor.json(不另抄一份)。
    • 接口:GET|POST /api/track(公开采集——sendBeacon 走 POST;成败都回 204,不打扰访客;每 IP 独立预算 300/分,超限静默丢弃不 429)+ GET /api/track/px.js(探针脚本 first-party 下发)+ GET /api/console/traffic?days=14(admin:覆盖率三态 + PV/UV + 来源/热页/设备)。
    • 口径红线(服务端强制,不是文案):① 不存原始 IP——UV 用日盐哈希(IP+UA+站点),盐每天轮换(不种 cookie、不需要同意弹窗);② DNT/GPC 请求不落库;③ 机器人(bot/crawl/spider/headless/curl…)入库标 bot=true 但不计 PV/UV(可查可审计);④ 只采最小集(站点/路径/来源域名/UA/语言/屏幕档),不采 cookie、账号、表单内容、来源完整 URL;⑤ 明细 90 天滚动,长期只留按天汇总。
    • 覆盖率三态(与台账自动对账):已接入 / 静默(挂着没上报)/ 未接入 / 不适用(第三方伙伴域)——顺手把「差集检测」做掉了,不用手抄。
    • 挂码(两条腿):
      • ① 边缘注入(主力,2026-10-08 起):quan 的 1Panel openresty 上用 nginx sub_filter 一处注入,站点源码/构建产物零改动、秒级全站生效/回滚。真源 deploy/px-edge/00-px-inject.conf(http 级:map $host $px_tag + sub_filter '</head>' '$px_tag</head>'),写法与 51la 段(墨衡 2026-10-01)同款;配套 deploy/px-edge/patch-confs.py(逐站补段,幂等/带标记/可 --revert)+ deploy/px-edge/px-edge-apply.sh(pilot / all / rollback / status)。
      • ② 源码挂码(自家仓库):文档站/官网等由我们自己的源码构建的站,直接在模板里挂(docs/.vitepress/config.mts 的 head),边缘地图里把这两站置空避免同页两份;探针自带幂等守卫 __PX_LOADED__,万一重复也只会算一次。
      • 任意站点手工挂码=<head> 里加一行 <script src="https://chensibo.cn/api/track/px.js" async></script>;CSP 白名单站(script-src/connect-src 只认 'self')走同源 /_px.js(该站 nginx 把 /_px.js、/_px 反代到采集端 8399)。
      • docs/deploy.sh(文档站)与 community-api/deploy.sh(采集端:px.js 含幂等守卫 + 别名 204)都加了断言,部署这关拦住「挂了没生效」。
    • 覆盖率(2026-10-08 铺开当天):node scripts/px-edge-verify.mjs 外网核验 57 个域名 → 已接入 49 · 静默 0 · 不适用 8(退出码 0,可当断言)。「不适用」=第三方伙伴域 / 已下线站 / 域名被外部拦截页接管(crm.qianxuyan.com 被腾讯云 DNSPod 拦截页 302 走了,请求根本没到我们服务器——域名侧问题,值得单独核)。同日真浏览器端到端 6/6 通过(探针执行 + 每页恰 1 次上报)。
    • 三条坑(都踩过,写在这免得后人重踩):① 同一 location 里已写过 sub_filter 的站(51la 段所在处)会整体覆盖 http 级数组 → 需要在那个 location 单独补一条 sub_filter '</body>' ...(共 14 处:7 个 conf.d + 7 个站内 proxy/*.conf);② 上游应用自己 gzip 时 sub_filter 整段跳过(nginx 遇响应带 Content-Encoding 就不替换)→ 这类站(6 个,如 anjuma/slc/yuanquyun)要在主 location 加 proxy_set_header Accept-Encoding "";;③ 补丁锚点必须在 server/location 内——culturevoice 顶部有个 http 级的 51la map 段,插在那里会让规则泄漏到全站(表现=每个站多插一份标签),补丁已加花括号深度守卫。
    • 51la 已于 2026-10-08 摘除(老板令「反正我们自研统计我就是要替代 51la 的」):
      • 已摘:nginx 边缘段 14 个 conf(culturevoice/daolan/ich/park/qianxuyan.com/szh/voice + card/crm.chensibo.cn/cv3/guishe/guji/img/nt 的 proxy/*.conf)+服务器静态产物 8 个 docroot 首页+自家源码(docs/.vitepress/config.mts,文档中心与 chensibo.cn 同源页面,已重新发布);
      • 一条命令:./deploy/px-edge/px-edge-apply.sh drop-51la(逐文件存 .bak-51la-<时间戳>,自动核验「51la=0 且 探针=1」;restore-51la 秒级还原);
      • 还剩 7 个域名是「站点应用内」挂码(知新 root.tsx / 百书斩 / 青语 WordPress / AI 聚合 / 算力小店),归各站负责人——清单在 04-潘卫本人/60-51la全站统计挂载清单.md「自研探针替代进度」节;复查用 node scripts/px-la-scan.mjs;
      • 部署断言已改口径:deploy/deploy.sh、deploy/rollback.sh 从「51la+探针各 1 份」改为「51la=0 份、探针恰 1 份」——旧产物回流会被部署这关拦住。
    • 顺带发现(值得老板知道):daolan.qianxuyan.com 的 CSP 是 script-src 'self',51la 的码在那站被浏览器直接拦死(SDK + 内联 init 都报 CSP 违规)→ 该站 51la 数字应是长期缺失的;换同源探针后才统计得上。
  • 验收(访问统计):前端 scripts/assert-console-px.mjs(桩数据驱动真页面:深/浅两色 × 访问统计 + 会员体系回归,26 项全绿);服务端容器内直调 traffic.js(落库 / 机器人不计 / DNT 不落库 / 限流 305 次全 204 静默 / 残留清理);真浏览器端到端(sendBeacon 204 落库、跨域上报、SPA 路由补报、DNT 零上报);证据 证据-控制台访问统计-20261008/(含线上真实数据截图)。

维护约定 ​

  • 新产品立项上线后,在本页加一节:一句话定位 + 入口 + 状态。
  • 产品改名、入口变更时同步本页,避免对外口径漂移。
  • 尚未确定的信息写「待补充」,不猜、不编。
  • 会员与账目只有一处:控制台「会员体系」页(真源见上一节)——别在本页或任何表格里再抄会员名单, 同「两个域名一份源码」的理由:抄一份就会分叉。
  • 统计也只有一处:子站访问数据一律看控制台「访问统计」页(自研探针)——别另建表格抄 PV/UV。 51la 双跑期两套码并存,对账只比趋势与量级,不追数字相等(两家 UV 定义、去重窗口、机器人过滤都不同)。
  • 探针脚本只有一处改:脚本内容由 community-api/traffic.js 的 PX_JS 下发(各站只留一行引用), 要改采集逻辑改这里;口径红线(不存 IP / DNT 不落库 / bot 不计 / 90 天明细)改动必须同步本页。
  • 边缘注入只有一处改:全站挂码的真源=deploy/px-edge/00-px-inject.conf(quan:/opt/1panel/www/conf.d/00-px-inject.conf), 铺开/回滚一条命令:./deploy/px-edge/px-edge-apply.sh all|rollback;核验:node scripts/px-edge-verify.mjs。 别直接手改各站 conf 里那两行标记段(# >>> 自研统计探针)——它们是脚本生成的,改了下一次 apply 会被覆盖回去。
  • 51la 摘除/恢复也只有一处命令:./deploy/px-edge/px-edge-apply.sh drop-51la|restore-51la (逐文件 .bak-51la-<时间戳>;摘要与 7 个应用内残留站名单见 04-潘卫本人/60-51la全站统计挂载清单.md)。
  • 控制台主题只有一处:浅色/深色一律在 console/theme.css 里覆盖——console.css 新增「写死颜色」或 「写死深色底」的样式时,必须同步在 theme.css 补一条浅色覆盖,否则控制台一切浅色就出「浅字浅底」; 改完跑 node scripts/assert-console-theme.mjs(40 项,含 WCAG 对比度实算与全页扫描)。
  • 图床预览只有一处口子:私有对象出图一律走 GET /api/console/imgbed/preview(admin 门禁 + 服务端代签; w= 降采样、json=1 给前端取 URL)——别在前端另造签名路子(signForClient 红线:他人 miniapp/<uid>/ 连 admin 不签); 图床页的新交互只加在 console/imgbed.js,而 console.css 里新增写死颜色时仍须在 theme.css 补浅色覆盖。
  • 图床缩略图必须带 w=:不许直接 <img> 拉原图——桶里有 30MB 级大图,一页 300 张会打爆流量与首屏; 公开前缀走 CDN + 图片处理,私有前缀走预览口 + 图片处理(imageMogr2 对 SVG/非图片会 400,前端与出图口都已挡)。
  • 图床「待审」只有一处口径:待审 = 服务端按「桶里有 + 没审过 / 指纹变了」算出来的 (community-api/imgbed-meta.js 的 annotateObjects;指纹 = size:LastModified)—— 别在库里另存一个状态字段、也别在前端自己推,那会和桶里真实内容分叉;只有 need_review=true 的目录进队列。
  • 图床审核人只有一处安排:控制台图床页「目录设置」→ 审核人名单(表 imgbed_reviewers)—— 别在文档、群公告或表格里另记一份「谁审谁」;审核人是职责不是角色卡(不挂 admin)。
  • 图床页的样式/交互只加在 console/imgbed.css|js:连 #imgUpFile 这种浏览器原生控件也在这里整容 (浏览器默认 ::file-selector-button 是白底黑边,两色主题都格格不入)——console.css 里不该补 input[type=file] 规则(那文件另有维护线);新增写死颜色仍须在 theme.css 补浅色覆盖。

最后更新:

本页讨论

0 条评论

还没有评论,来说第一句。

Ctrl + Enter 发布