外观
产品矩阵总览
沉思波的产品按「一个产品一节」组织:一句话定位 + 真实入口 + 当前状态。只列真实存在的产品——已上线的给真实链接,在建的写在建,没入口的写「待补充」,不吹不掩。
产品线一览
| 产品线 | 产品 | 定位 |
|---|---|---|
| AI 能力线 | 千序言 AI 聚合平台、算力小店、创作空间 | 多模型 AI 能力底座 + AI 能力的商业出口 |
| 教育线 | 知新、百书斩、近代史纲要题库、学飞乐、鹿鸣 | 高校与教育场景的教、学、练 |
| 文化数字化线 | 文化传声筒、江苏藏书楼云游展厅、AI 赋能古籍展览大屏站、白泽非遗大模型 | 图书馆 / 文化馆 / 非遗的数字化 |
| 企业服务线 | 园联云(产业园管理系统)、马来 AI CRM、安居码、名帖(原智能名片系统)、祝融 AIGC 培训平台、青语 | 园区运营、企业 AI、政务公示与工具 |
| 游戏线 | 诡舍 | 独立游戏产品 |
共 19 款产品 + 官网;状态与链接以真实访问为准(2026-10-03 逐款外网实测)。
状态标记:已上线 开发中 规划中 权益角标:会员可享(与顶栏「免费学 / 免费进」角标同族,只表会员权益一种语义)
千序言 AI 聚合平台
- 定位:生文 / 生图 / 生视频的大模型聚合平台,面向 AIGC 创作与培训团队,是全产品线的 AI 能力底座。
- 入口:https://ai.qianxuyan.com(AI 聚合)· https://qianxuyan.com(门户)
- 状态:已上线 已上线运营,子域矩阵最全(门户 / AI / AIGC 培训 / 管理端)。
- 文档:接入方式 · 模型与计费概念
知新 · AI 赋能教育风向标

- 定位:教育行业 AI 动态追踪站,每天早上 8 点出「教育 AI 日报」。
- 入口:https://zhixin.qianxuyan.com
- 状态:已上线 2026-09-30 上线,首刊 2026-10-01。
- 文档:知新是什么 · 日报怎么看
文化传声筒
- 定位:面向图书馆 / 文化馆的多租户内容平台,以标品包形式交付。
- 入口: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
- 状态:存量维护 维持 / 收割 / 关停三选一决策中。
学飞乐学习平台
- 定位:交互式全领域学习平台。
- 入口:https://xfl.mystudyzone.cn
- 状态:已上线
近代史纲要题库
- 定位:近代史纲要在线刷题与练习。
- 入口:https://jds.mystudyzone.cn
- 状态:已上线
创作空间
- 定位:面向内容创作者的 AI 漫剧 / 创作平台。
- 入口:待补充(尚未接入对外域名)
- 状态:规划中 后端能力就位,域名与产品化待排期。
鹿鸣(原名育见)

- 定位:高校教师 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
- 定位:企业级 AI 知识助手——把企业资料变成能问答的知识库。
- 入口:https://crm.chensibo.cn(另见 https://crm.qianxuyan.com)
- 状态:已上线 2026-10-02 域名修复指向新址后首次正常服务。
名帖 · 沉思波名片定制(原「智能名片系统」)
- 定位:把姓名、职务、公司与联系方式做成一张微信里点开就能看的电子名片——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-error1.77:1、.plat-glyph1.17:1、窄屏.nav-strip a.active1.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.mjs72/72(模块 31 + HTTP 端到端 41;真本地 PG + 真 COS, 对象只落tmp/smoke-meta/并收尾删除;含越权 403、驳回必填理由、内容变化回待审、审计留痕、未登录 401 优先); 前端scripts/assert-imgbed-workbench.mjs本地 / 线上各 37/37(管理员 / 审核员 / 无权限者三场景); 零破坏:既有assert-imgbed-visual.mjs26/26、assert-imgbed-console.mjsS1–S3d 7/7、assert-console-theme.mjs40/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 起):quan 的 1Panel openresty 上用 nginx
- 覆盖率(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 级的 51lamap段,插在那里会让规则泄漏到全站(表现=每个站多插一份标签),补丁已加花括号深度守卫。 - 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 份」——旧产物回流会被部署这关拦住。
- 已摘:nginx 边缘段 14 个 conf(culturevoice/daolan/ich/park/qianxuyan.com/szh/voice + card/crm.chensibo.cn/cv3/guishe/guji/img/nt 的
- 顺带发现(值得老板知道):
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 条评论还没有评论,来说第一句。