资讯动态

自建房那道楼梯太陡,我用华为云码道把_陡不陡_算成了 33.2 度

发布时间:2026/10/21 13:25:00 来源:尧图企业网站定制
自建房那道楼梯太陡我用华为云码道把陡不陡算成了 33.2 度这是我用华为云码道 CodeArts 做的第三个有客观真值可对拍的小工具stair-check · 踏步规范核验台。输入踏步高 h、踏步宽 b、层高、梯段净宽、楼板厚它回你需要几级踏步、每级实际做多高、梯段水平投影多长、坡度角多少度、2hb落在哪个区间、以及对照限值的合规清单。先交代一句实话免得你觉得我在吹这个仓库现在node --test是 59 过 3 挂取证表的可证伪性我没能证实而且我引用的国标数值一条都没能在线核对到原文。这篇稿子就按这个真实状态写包括我是怎么发现这几处窟窿的。一、为什么做楼梯而不是再做一个会转的地球我给自己参加这个比赛定的规矩没变题目必须有一个能对着打的客观真值把好不好变成准不准。楼梯这题的吸引力在于它同时有三种不同硬度的判据第一种是纯几何闭式谁都驳不倒。坡度角θ atan(h / b)踏步数n ceil(层高 / h)而且算完必须回头把每级实际高度重算成层高 / n层高几乎不可能被 h 整除这一步是真实设计里最容易翻车的地方梯段水平投影长度是(n - 1) * b——注意是n-1因为最后一级踏上楼板不算水平踏步梯段斜长是sqrt(((n-1)b)² (n·h)²)竖直分量用n、水平分量用n-1。这些不需要查任何规范。第二种是经验公式公认但不进规范Blondel 步幅公式2h b通行区间 600~650mm适宜值约 620mm。这个我查了多个公开来源一致所以敢用但它在代码里被标成kind: heuristic。第三种是国标限值GB 50352-2019 第 6.8 节那一堆数字住宅共用楼梯踏步宽不小于 260、高不大于 175梯段净高不小于 2200、平台下方过道净高不小于 2000每梯段不超过 18 级且不少于 3 级扶手 900、栏杆 1050/1100……。而恰恰是第三种我这次没能核实。二、我查规范原文失败了三次这件事本身成了项目的一条纪律开工前我想把 6.8 节的数值逐条对一遍原文。结果第一个来源WebFetch 超时第二个来源返回一个滑块验证码页面正文一个字都没有第三个来源fetch failed。三个都拿不到。这时候有两条路装作查过了、把记忆里的数字当国标喂给 AI或者承认没查到并且在代码结构上让没查到这件事有后果。我选了第二条而且把它写成了第一轮提示词里最前面的一段先讲清楚一条纪律这是本项目的立身之本别当成客套话 我尝试在线核对 GB 50352-2019 第 6.8 节原文连续三个来源都失败 所以下面这些国标数值我没能逐条对着原文核实。因此 - 凡是 verified: false 的条目只能产生提示级结论绝不允许产生不合规 - 能产生不合规的判据只有两类① 闭式几何② Blondel 区间这个我核对过。 - 每条限值都必须带 verified 布尔与 source 字符串source 里如实写 通行数值本次未对原文核实。这个设计我叫它判据降级一个数字有没有资格判你不合格取决于它有没有被核实过而不是它看起来像不像规范条文。后面你会看到这条纪律在项目里被违反了一次——而且是我自己没盯住。三、提示词钉到函数级AI 才不会给你一篇作文第一轮提示词 5873 字符核心是把每个导出函数的签名、口径、抛错行为写死。节选export function stepCount(floorHeightMm, h) n ceil(floorHeight / h)返回 { n, riserHeight: floorHeight / n, errorMm } 必须重算实际踏高因为层高通常不能被 h 整除这一步是真实设计里最容易出错的地方 export function runHorizontalLength(n, b) —— (n - 1) * b。 export function runLengthIncline(n, h, b) —— sqrt(((n-1)*b)^2 (n*h)^2) 注释写清为什么竖直分量是 n*h 而水平是 (n-1)*b。结尾固定一段每轮都抄不要只描述、不要把代码贴在回复里、不要反问我。直接建文件 → 跑 npm test → git add -A git commit -m ... git push -u origin main。 push 报未认证就把 ag auth login 打印的 authorize URL 原样贴给我。仓库必须 public码道默认建私有仓匿名git ls-remote会 403这条我上一期踩过。四、第一轮跑完22 个文件几何那部分我一行行验了提交d14e9e9文件树bin/evidence.mjs index.mjs package.json public/app.js public/index.html public/style.css serve.mjs src/core/codecheck.mjs src/core/comfort.mjs src/core/stair-geometry.mjs src/core/validate.mjs src/core/verdict.mjs src/data/blondel.mjs src/data/gb50352.mjs test/ 12 个测试文件我本地 clone 下来第一件事不是看它测试绿不绿而是自己拿几个数手算一遍stepCount(2800,175)// → n16, riserHeight175.0runHorizontalLength(16,260)// → 3900slopeAngleDeg(170,260)// → 33.20°blondelValue(170,260)// → 6002800 / 175 16整除正好换成2850 / 175 16.28→ceil得 17 级每级实际2850/17 167.6比名义的 175 矮——这个取整后必须重算踏高的行为是对的很多手写计算器就在这儿骗人告诉你 17 级、每级 175实际你做完是 167.6走起来第一脚就发现不对。五、第二轮页面、静态服务器、三张取证表、DOM 契约测试提交e102821。这一轮我把上一期项目踩过的坑全写进提示词当硬要求serve.mjs 零依赖端口 process.env.PORT || 8126 禁止用 pathname.startsWith(dir /) 判越权Windows 反斜杠下它恒假 要用 realpath path.relative 静态根白名单只放 public/**、src/**、index.mjs、package.json/.git 一律 403。 UI纯白 #ffffff、正文 #1f2329、次级 #6b7280、边框 #e5e6eb、 唯一强调色冷蓝 #2f6fed禁止渐变/发光/毛玻璃/大面积深色块/超过两种字体/emoji 结论字号最大最醒目窄屏 430px 竖排。 必须有一条 DOM 契约测试正则抽出 app.js 里 $(x) 用到的 id 与 index.html 的 id 集合求差差集必须为空。最后那条是我上一个项目用血换来的node 测试 79 项全绿页面却因为index.html里少一个idkindSeg而整片空白。纯函数测试永远看不见 DOM 契约破裂。页面长这样——拖动 h/b 滑块下面数值和判定实时变服务权限我 curl 过200 /public/index.html 200 /src/core/validate.mjs 403 /.git/config 403 /test/validate.test.mjs白名单确实生效了.git和测试目录都被挡住。六、取证三表342 个用例全部 mismatch0node bin/evidence.mjs打三张表 表1 踏步尺寸全矩阵 category h b coreB refB coreH refH judge 住宅共用楼梯 140 200 F F P P ok 住宅共用楼梯 140 210 F F P P ok ... 表3 Blondel 边界扫描 v650 h170 b310 value600 inBandP expectP kindheuristic ok v651 h170 b311 value651 inBandF expectF kindheuristic ok SUMMARY tables3 cases342 mismatch0 exit0表一是把住宅共用楼梯 / 公共建筑楼梯等类别下 h × b 的全矩阵跑一遍core*是核心层判定、ref*是参考实现判定两列必须一致表三是2hb在 599/600/650/651 这些边界上的取值扫描。七、但是我拿 sed 去改600它照样全绿这是我写完这个仓库之后做的第二个实验第一个实验在上一期项目上成功暴露了问题。cp-r.../tamper-1729130000cd../tamper-1729130000sed-i0,/600/s//601/src/data/blondel.mjsnodebin/evidence.mjs|tail-2# SUMMARY tables3 cases342 mismatch0 exit0node--test|grep-E^# (pass|fail)# pass 59 / fail 3没变红。两种可能一是我 sed 命中的那个600根本不是判据用的数0,/600/只替换第一次出现很可能撞在注释或别的常量上二是表一里的refB参考列和核心实现读的是同一份数据源那我改哪边它都跟着变永远一致。我没能证实它是可证伪的。上一期项目我在第三轮补了独立手抄参考表才让篡改真的变红这期没来得及做同样的加固。这条我原样写进不足不解释成其实没问题。八、3 项失败不是产品坏了是测试自己写了个只有 Linux 成立的断言node --test挂着三条全在test/serve-safety.test.mjsconstrresolveSafe(/);assert.strictEqual(r.ok,true);assert.ok(r.filePath.endsWith(public/index.html));// ← 这行在 Windows 上必挂resolveSafe用path.join拼磁盘路径Windows 上返回的是D:\...\public\index.html反斜杠。断言写的是正斜杠public/index.htmlendsWith直接假。而同一文件里resolveSafe(/index.mjs)那条能过——因为index.mjs里没有分隔符。讽刺的是serve.mjs本体是对的我 curl 过/.git/config和/test/validate.test.mjs都返回 403/public/index.html返回 200。是测试在假失败。上一期我的教训是沙箱是 Linux测不出 Windows 专属 bug这期正好反过来——测试写死了路径分隔符假设在 Windows 上产生假失败。同一种病两个方向跨平台的断言要么两边都测要么就别用字符串形状当判据。九、还有一处我自己违反了自己的纪律打开页面默认参数住宅共用楼梯、层高 2800、h170、b260、6 层、梯段净宽 1100、平台 1200、楼板厚 120给出的结论是大红一块不合规 · 梯段净高不应小于 2200mm · 实测 2078.9 · GB 50352-2019 第6.8.6条 注意 · 无 参考 · Blondel 步幅经验公式 2hb · 实测 600 · Blondel 1675 步幅经验公式(启发式非规范)分类排版很清楚不合规 / 注意 / 参考三栏分别对应几何冲突 / 未核实限值的提示 / 经验公式这个结构是对的。问题在于梯段净高不小于 2200这条出自src/data/gb50352.mjs而那份表我一条都没能核对原文。按我自己在第一轮提示词里立的规矩未核实的条目最高只能到提示不该有资格判不合规。它现在判了。也就是说verified这个字段大概率在数据里标了但codecheck.mjs汇总overall的时候没把它当回事——降级闸门漏在最后一层。这正是这类项目最容易出的 bug 类型规则写在提示词里、字段躺在数据里只有最后那一个 if 真的执行它而那个 if 没人检查过有没有。我下一步要修的就是这个把未核实 → 不得判不合规做成一条穷举遍历每一条限值的测试我在提示词里其实要求了这条但它显然只测了 Blondel 那几条没测 6.8.6。十、数值本身长什么样页面下方那排数值卡是这工具真正的产出踏步级数 16 每级均高 (mm) 175 梯段水平投影 3900 坡度角 (°) 33.2 坡度比 (1:x) 1:1.529 2hb (mm) 600坡度比 1:1.529是b/h 260/17033.2°是atan(170/260)2hb 2×170260 600正好压在舒适区间下沿。这组数放一起就能看出设计上的取舍h 越小越省力但级数越多、梯段越长、占的层高与平面越大b 越大踩得稳但同样吃进深。楼梯没有最优解只有在层高和平面尺寸约束下把 h 和 b 塞进 2hb 的窗口里。这个工具的用处就是把这句行话变成可算的数。十一、提效数据与时间账轮次内容结果第一轮公开仓 6 个 core 2 个 data 12 个测试文件提交 d14e9e9第二轮白底页面 零依赖 serve 三张取证表 DOM 契约测试提交 e10282159 pass / 3 fail第三轮我按上一期的模板补发的降级纪律未核实不得判不合规等仍在跑未 push我手工投入的部分5873 字符提示词一份、本地 clone 复核、6 组数值手算对拍、curl 权限矩阵、一次 sed 篡改实验、三张不同视口截图。码道产出的部分22 个文件、62 项测试、342 个取证用例、一个能挡住.git的静态服务器。分工很清楚它写得比我快得多但哪条判据有资格判你不合格这种判断只能我来做——而且我这次也没做干净。十二、不足与下一步不粉饰3 项测试假失败没修断言依赖路径分隔符形状应改成比较path.relative(ROOT, filePath)归一化后的结果。取证表的可证伪性未证实sed 改600没变红。要么参考列与实现同源要么我改错了地方。下一步加一份独立手抄的参考表并让篡改必须变红成为一条真测试。降级闸门漏了最后一层GB 6.8.6 梯段净高 2200这条未核实的限值正在以不合规级结论示人。国标数值全部未对原文核实三个来源都取不到代码里source字段如实写了本次未对原文核实但界面上没把这句话显示给用户看——用户看到的是一句硬邦邦的GB 50352-2019 第6.8.6条。这比标错更危险。净高计算是简化模型梯段净高要沿斜线取最低点还要扣楼板厚与梁我只做了单点近似。场景窄没有双跑楼梯的平台尺寸联动、没有弧形/旋转楼梯、没有逃生楼梯的防火宽度要求。Blondel 只有 2hb 一种判据还有hb450~500、h·b≈30000等经验式都可以做交叉对拍没做。十三、本地怎么跑 希望你亲自点的三下gitclone https://atomgit.com/Anna20261/stair-check.gitcdstair-checknodeserve.mjs# http://localhost:8126/public/index.html建议你亲手试这三下把 h 从 170 拖到 190看坡度角和2hb怎么同时变坏——这大概就是很多自建房楼梯的真实尺寸把 b 从 260 拖到 300、h 拖到 160看2hb回到 620 附近时那种应该踩着舒服的感觉跑node bin/evidence.mjs然后自己 sed 改一个src/data/blondel.mjs里的 600看它会不会变红——现在不会这就是我留着没修的第二个窟窿。附过程素材仓库文件树第二轮之后我本地手算对拍那 6 个数时用的临时脚本输出码道第二轮跑完、开始收尾时的会话画面写在最后连着做三个工具我最大的变化是评价标准从测试全绿了吗变成这套测试有没有能力失败。这期更狠一点连我自己写进提示词的纪律都得靠一次页面截图才发现它没被执行——那个红色的不合规三个字是我自己没盯住的证据而不是这个工具做完了的证据。所以我打算把这条也做成测试界面上出现的每一个不合规都必须能追溯到一条verified: true的依据。追溯不到就不许红只许黄。数据来源说明Blondel 步幅公式区间取自多个公开来源一致的通行值GB 50352-2019 第 6.8 节数值本次未能在线核对原文代码内source字段已如实标注正式设计请以规范原文为准。如果你家也有道让你下楼要扶墙的楼梯评论区报一下你的 h 和 b我算算它到底陡在哪。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑