云 酷 德 建 站 流 程 法
先名(cdai_)后形(coode_)—— 自计划、补正、开工、建资源、充实、回填至验收之全程章程
本章程为建站施工之唯一依据。凡本法已有规定者,从其规定;本法未载者,须回报裁定,不得自创通道。
目 录
序 · 本法之精神
第 零 条【先名后形 · 本法之纲】
凡在 coode_ 正式层建出的资源名称,必须在 cdai_ 计划层里能反查到。 先计划,后实施;实施严格按各资源既定的操作方法执行。 库表必有资源登记,盘上应有该有的资源文件。
此即「建站第一原则」。与之并列者尚有:资源操作第一原则(动手前三问)、两大编辑器说了算(tempx / funx 如何传数据)。三者合称三大基础铁律。
【名词界定】
cdai_ 读作 C(ood)D(e)+AI,是 coode 体系中专供 AI 使用的影子计划层; coode_ 为正式层(真实表、真实磁盘资源)。 cdai_ 只是「打算建什么」,不等于已经有了;查资源是否存在,一律查 coode_ 正式表 + 磁盘。
第一章 先名(计划层 cdai_)
第 一 条【六表自顶向下】
计划层共六表,须自顶向下逐层写全,不可只写系统不写页面:
层cdai_ 计划表coode_ 正式落点一句话
①cdai_sysindexcoode_sysinformation要建什么系统
②cdai_appmylistcoode_appdefault / coode_appmylist系统下有哪些应用
③cdai_subappcoode_applay每个应用的输出节点 layid
④cdai_mytinycoode_tiny落地页微件清单
⑤cdai_subtinycoode_unittiny页面 HTML/CSS/JS 成品
⑥cdai_sysresnamecoode_sysregres页面用到哪些资源
六表皆带 aidescrib 与 vermd5,字段与正式表几乎逐字段对应。
第 二 条【命名约定】
层规则实例
sysid短英文tjx · cloudbook · qjlliq
appid用途单词home(展示)· find(检索)· arc(归档)
layidsysid + app缩写 + 两位序号tjxhm01 · tjxfd01 · qjlhm01
shortid / tinyid与 layid 同名tjxhm01
tinymark = dumark域.单元(两段)tjxhome.index · tjxarc.upload
pageurl/localxres/pagex/<域>/index.html/localxres/pagex/tjxhome/index.html
tabx(表资源名)系统英文名 + 下划线 _ 开头tjx_photo · tjx_album · cloudbook_album
dumark 必须是「域.单元」两段,domainmark 即 pagex 目录名 —— 路由终点靠它。
⛔ tabx 命名铁律:凡建表格(tabx)类型资源,其名必须以该系统英文名打头、后接下划线 _, 不得以裸名、不得冠以他系统之名、不得用中文或驼峰。 「系统英文名_业务名」——如此表名归属一眼可辨,不会与他系统撞车,亦便于按系统前缀批量检索。
实例:tjx 系统的表 → tjx_photo、tjx_album;cloudbook 系统的表 → cloudbook_album。
此项适用于命名之时(第一条列计划、补正改名皆然),建表之前先核前缀;错则回溯改名,不可将错就错。
第 三 条【前序与后继】
每条记录的 aidescrib 须写:【大莲备注】一句话定位。前序:xxx。后继:xxx。
前序/后继把六张表从「一堆记录」变成「一条有依赖的链」,后续排优先级、判断谁先建全靠它。必写。
第 四 条【资源类型只取 26 种】
restype 一律取自 coode_sysrestypedefine.restypecode,不得自造:
clsx sfunx funx tabx tempx formx dfunx mfunx pagex cdtrdrx parardrx constx configx groupx plotx dataspacex sysx appx layx csspagex iconsetx databasex afunx parax apix smallcssx
没有 tinyx!四级路由 sys → app → lay → page 对应 sysx / appx / layx / pagex。写任何 restype 前先查此表。
第二章 补正(审核台)
第 五 条【补正程序】
名称排定后,须经补正台(tempx cdaiplan.index + funx cdaiplan)逐条审核与修正:
① 左栏选系统 → ② 中上四级树 sys/app/lay/page 展开、改名、与右栏资源联动 → ③ 选中字段 → 大输入框写补正建议 → 保存。
保存即整行克隆:新批次记录除被补正字段外,其余列从原表逐列搬过来; myaudit 存人工补正建议,aiaudit(资源侧为 wkresult)留空,待 AI 看过 myaudit 后再填。
第 六 条【审核通过与留痕】
每一次补正都生成一条新记录(cdai_sysaudit / cdai_sysresblog),最新在最上,各带状态按钮: 进行中(默认)/ 已完成(置 STATUS=1)。系统与资源两套状态各自独立。
无论资源有没有补正,系统补正列表每条都必须有「进行中」,不得只给第一条。
第 七 条【资源三态:未建 / 已建 / 进度】
右栏原始资源列表的标识依 cdai_sysresname 三字段判定:
字段含义谁写
STCODE空 = 未建;有内容 = 已建(「创建时刻:…」)funx.newresname
STATUS必填字段数量funx.samekdatatotab
PRIME已填字段数量funx.samekdatatotab
已建者于标识后列出进度 已建 8/8 = PRIME/STATUS(已填/必填)。
原始页每 5 秒静默刷新右栏最新状态;切至历史页即停,切回继续。不得打断正在编辑的输入框。
第三章 开工
第 八 条【开工三件事】
补正通过后方可开工(funx.cdaiplan?optype=startsys),开工即办三事:
① cdai_sysindex.STATUS=1(系统已开工);② 名下资源 iswell=2(已提交); ③ 把 sys/app/lay/page 四级路由名补齐进 cdai_sysresname。
判重键 grpid + restype + resmark + subid,subid 存父级(layx→appid,pagex→layid;sysx/appx 留空以兼容老数据)。 「appx 里有几个名称,就要有几条 appx 资源」——数量必须一致。撤销开工走 unstartsys。
第 九 条【开工后必走 newresname】
列完计划、开工之后,建资源一律走 funx.newresname,不得手工插表、不得手写文件顶替。
开工只是「批准施工」,资源实体仍须逐条由 newresname 生成。
第四章 建资源(funx.newresname)
第 十 条【调用方法与前提】
GET /localxres/funx/newresname/?restype=<类型>&rescode=<名>&sysid=<系统>&restitle=<标题>
前提:Cookie 的 uid 必须在 coode_userlist 中 PRIME=1(超管),否则回「无权开发」而不执行。
当前 divlovecss 已为超管(PRIME=1)。
第 十 一 条【会产生什么】
执行后发生三件事:
① 登记资源(newsysres)并按其类型往对应主表插一行——映射见 coode_sysrestypedefine:
restype主表restype主表
funxcoode_funlistpagexcoode_tiny
tabxcoode_tablistdataspacexcoode_dataspace
tempxcoode_domainunitclsxcoode_phpcls
plotxcoode_plotlistformxcoode_shortdata
sysxcoode_sysinformationappxcoode_appdefault
sfunxcoode_funsetfileconstx / configxcoode_sysconstant / coode_sysconfig
② 回写 cdai_sysresname(这就是「已建」的由来):
字段写入内容用途
STCODE创建时刻:YYYY-mm-dd HH:ii:ss已建标记(空即未建)
PRIME1已建即置 1
txturlcloudpath 编辑器地址直接进编辑器改这个资源
funtxtrpath 操作说明如何创建、用哪个编辑器保存
relycore主表名真实数据在哪张表
copyrightmark资源 SNO真实数据是哪一行
③ 回填 coode_asktkey:把新行的 SNO 写进 tabsno,并生成 superediturl = /localxres/pagex/htmleditor/WrvLoe/index.html?funid=<主表>@SNO:<tabsno>.<keyname>
第 十 二 条【照 funtxt 施工】
newresname 既已执行,资源便已创建,此后不再创建,只作编辑修改。 改哪里、怎么改、用什么编辑器保存 —— 全在 funtxt(rpath)里写明 (其占位符 [rescode] [restype] [sysid] [restitle] [maintab] [mainkey] [mainval] [editurl] 已被替换成真实值)。
照它做,不另发明通道。要进编辑器,直接开 txturl;要看操作说明,读 funtxt。
第五章 充实与回填
第 十 三 条【生成结构】
GET /localxres/funx/dataneedkey/?tabnm=cdai_sysresname&tabsno=<SNO>&refresh=1
为该资源在 coode_asktkey 生成字段行:datamark=主表名,datasno=0(未建时), keyval 空,superediturl 空。此后即可在补正台点「查看结构」逐字段查看。
第 十 四 条【填值的两条路】
路 A(灌值):把值直接写进 coode_asktkey.keyval → 执行 samekdatatotab,由它灌进真实主表。
路 B(页面改):直接访问 superediturl(超级编辑页),按该页面上的方法点击提交, 即可修改那张表的那个字段。
两条路等价,任择其一;填完再跑 samekdatatotab 即完成双向同步。
第 十 五 条【回填进度:编辑充实过程中须实时执行 samekdatatotab】
GET /localxres/funx/samekdatatotab/?tabnm=cdai_sysresname&tabsno=<SNO>
(亦可 restype+rescode;按 CRTOR=Cookie uid 过滤,须登录态)
它做三件事:
① 正向:keyval 有值 → 写进真实主表 datamark 的 keyname 字段(where SNO=datasno);
② 反向:keyval 空而真实表有值 → 把真实值读回来写进 keyval;
③ 结算:逐条置 coode_asktkey.PRIME=1/0,收尾 update cdai_sysresname set STATUS=<字段总数>, PRIME=<PRIME=1的条数>。
补正台已实现:原始页每 5 秒一轮,先对已建资源(STCODE 非空)串行跑 samekdatatotab,再静默刷新右栏 —— 进度自动向前走。
第 十 六 条【删除计划资源】
GET /localxres/funx/killplanitem/?tabnm=cdai_sysresname&tabsno=<SNO>
连带清掉 coode_asktkey 里的字段结构与本条记录。带 CRTOR=Cookie uid 条件, 非本人所建者删不掉,须登录态。
第六章 验收
第 十 七 条【入口链路】
/localxres/funx/anysys/?sysid=<sysid> → /localxres/funx/anylay/?layid=<coode_sysinformation.indexurl> → /localxres/funx/anytiny/?tiny=<coode_tiny.tinymark>&layid=<layid> → /localxres/pagex/<域>/<tinyid>/<单元>.html
任何一环缺记录即跳 404 页。pagex 是两层目录(pagex/域/tinyid/名.html),不是一层。
第 十 八 条【落盘四处一致】
落盘不等于完事。下列四处必须一致,缺一处则后台不可编辑、升级同步即丢:
① 磁盘资源目录;② 目录内 <rescode>_<restype>-resdata.json; ③ 入口文件(index.php / index.html);④ 库侧登记(coode_sysregres,建表另需 coode_tablist + coode_keydetailx)。
只发 tempx 不算「有页面」—— tempx 只是模板,系统认的是 pagex 实例。 必须走 funx.makelayfolder 渲染(参数 SNO 是 coode_tiny 的 SNO),手写的 index.html 没 tinyid/unittiny 记录,后台菜单与短地址都找不到它。
第 十 九 条【建完须扶正】
官方通道把行造出来就完事,字段常是半成品,收尾必须手工补齐并查库核对:
该补在哪不补会怎样
STATUS=1coode_applay / coode_unittiny / coode_domainunit默认全 0,导出迁移会漏
appidcoode_applay四层树 sysid→appid→layid 中间断一环
sysidcoode_domainunit传了也不落库,要 UPDATE
接口的「生成成功」永远不等于「字段齐了」,一律查库核字段。
第 二 十 条【清废】
改方案会留一地鸡毛。不该有的登记别留着 —— 留着就是下次建站的假信号。 收尾须删废登记、补字段、复查数量归位。盘上文件属主是 www,删须 sudo 并逐个列路径(不用通配符)。
附则 · 铁律与坑
附 一【动手前三问】
每一个资源都是万米高楼里的一块砖瓦,动它之前先答三问,答不上来不许动手:
① 它是谁——什么 restype?② 它在哪——库里哪张表哪个键、盘上哪个目录,两边都要核; ③ 操作它干什么——建成它 / 改对它 / 登记全它 / 渲染出它?
附 二【两大编辑器说了算】
涉及 tempx / funx 怎么传参保存,第一步不是写代码,是把那个编辑器自己的前端源码拉下来看它现在怎么提交。
编辑器入口提交方式
tempx/localxres/tempx/tempeditor/index.html?unitid=域.单元POST funx/savetempdata/,7 个正文列过 mkstr()
funx/localxres/pagex/htmleditor/WrvLoe/index.html?funid=<名>POST funx/savefunc/?fn=<funid>,体 dt=mkstr(正文)
⛔ stylex 必须自带 <style>、scriptx 必须自带 <script type="text/javascript">,外壳是裸插入,引擎不补标签。
附 三【血泪坑清单】
  1. tempx 发布两部曲:savetempdata 生成 pagesurround 外壳 → gettempdata 取回回填 srdcode 二次提交,否则落盘 0 字节。外壳占位符是花括号;gettempdata 返回的外壳换行是字面 ,提交前须还原成真实换行。
  2. funx 提交禁双套壳:savefunc 的正文必须是纯业务代码,不含 include EARTH.php;否则双 include → Cannot redeclare。
  3. 复杂 JS 独立成 .js:scriptx 经 unstrs 会删光反斜杠,' 变 '' 直接语法崩。业务 JS 写进 main.js,模板里只留 <script src> + init()。
  4. 返回数组必须 cpok,不能用 makereturnjson:后者把第三参塞进 "redirect":"…" 且内部双引号不转义 → 非法 JSON → 前端 JSON.parse 崩 unexpected token。判据:值是数组用 cpok,纯文本才用 makereturnjson。
  5. SX() 不支持 select *:它按 SQL 文本解析列名,须先取列名再显式 select 列1,列2,…
  6. SQL 引号两套别混:SQL 用 dyh()(单引号),JSON 用 chr(34)(双引号)。
  7. 站间移植先对接口:把前端所有 /localxres/funx/xxx/ 与目标站 ls funx/ 对一遍(母站就没有 tdsetcell)。
  8. 别把计划当现状:cdai_ 会领先于现实,落地前先核物理表在不在。
  9. SQL 里的反引号会被 bash 当命令替换:ALTER 语句写进文件再 mysql < x.sql。
  10. 页面内链接写绝对路径:pagex 渲染后每页在独立子目录;JS 里斜杠会被转义,用 String.fromCharCode(47) 拼接绕开。
  11. 自建后端字段名回源码确认:参数名不对不报「缺参数」,而是静默落到长度校验上,极易误判成有 bug。
附录 · 云酷德运行机制与资源索引
附 四【一次请求从哪里开始 · 运行机制全景】
本体系一切动作,皆以 /localxres/ 为根目录。请求之起点有三:
起点甲 · 调方法:直接访问 /localxres/funx/<方法名>/?参数,得 JSON 回。
起点乙 · 进系统:由 anysys 逐级渲染而下,终至盘上 HTML。
起点丙 · 开静态页:直接访问 tempx / pagex 落盘之文件。
【甲 · 方法调用链】 /localxres/funx/<方法>/?optype=..&.. └ funx/<方法>/index.php ① include ../../EARTH.php ← 载入内核函数集(地基) ② eval(RESFUNSET("heartbeat")) ← 载入心跳函数集(鉴权在此) eval(RESFUNSET("permision")) ← 载入权限函数集 eval(RESFUNSET("quickvalue")) ← 载入取值函数集 ③ refreshstoken($stk) ← 凭 Cookie stoken 续期与校验身份 ④ 业务体:if ($optype=="..") 各分支办事 ← 真正干活的一段 ⑤ echo makereturnjson / cpok ← 回 JSON 【乙 · 页面渲染链】 /localxres/funx/anysys/?sysid=<sysid> → /localxres/funx/anylay/?layid=<coode_sysinformation.indexurl> → /localxres/funx/anytiny/?tiny=<coode_tiny.tinymark>&layid=<layid> → /localxres/pagex/<域>/<tinyid>/<单元>.html
甲链是「办事」,乙链是「出页」,丙链是「看成品」。建站之事,走甲链(newresname / dataneedkey / samekdatatotab 皆在其中);验收之事,走乙链(第十七条)。
附 五【两大内核文件 · EARTH.php 与 USERDEFINE.php】
文件绝对路径体量一句话
EARTH.php/www/wwwroot/io.halo123.cn/localxres/EARTH.php248,220 字节后端内核函数集 —— 全局地基
USERDEFINE.php/www/wwwroot/io.halo123.cn/localxres/USERDEFINE.php18,088 字节本站点配置 —— 连哪个库、叫什么名
EARTH.php:全名「云酷德@PHP后端 —— MYSQL5.6 数据库、文件与字符串处理核心函数集」,作者海棠山铁哥,版本 cCore20230323,2017.9—2024.9 开源之作。 凡 funx / tempx / pagex 之入口,第一行皆 include '../../EARTH.php'。 它是最源头,改它即改全局,无「走编辑器建资源」之说 —— 备份后直接改盘上文件,并同步各站。
其能力分五组:
组代表函数管什么
数据库SX() 查 · UX() 写 · UZ() · countresult() · anyvalue() · existdata()读写与取行取值
文件overfile() 落盘 · appendfile · copy_dir · deldirallfiles · getFile · get_file_list · make_zip_file_for_folder · unzip盘上生成与搬运
编转码tohex/gohex/String2Hex · unstrs/enstrs · turnlab/labturn · dyh() · tostring()hex 存取、换行还原、括号与引号
资源装配RESFUNSET() 读函数集源码 · anyfunrun()/recfunrun() 跑方法 · makepass() · refreshstoken()把 sfunx 装进来、把身份续上
返回makereturnjson() · makereturndata() · succurl/failurl回 JSON、跳转成败页
⛔ 两条硬约束:SX() 不支持 select *(须显式列名);返回数组须用 cpok,不可用 makereturnjson(后者把第三参塞进 redirect 且内部引号不转义 → 非法 JSON)。详见附三坑清单 4、5。
USERDEFINE.php:站点级配置,一站一份,换站必改。它不办事,只回答「我是谁、连哪个库、开哪些开关」。
函数返回含义
gl() / glu() / glp() / glb()localhost / io_halo123_cn / **** / io_halo123_cn本站主库:地址·用户·密码·库名
bl() / blu() / blp() / blb()localhost / coodewrd / **** / coodewrd业务副库(与主库分离的业务数据)
gln() / glt()1 / 薇操擎当前系统名 / 实例名称
gla() / glv()akivwsguevara / hellowocaoxapikey / 接口校验版本号
glm() / glr() / hostcode()motherhost / 000000 / coode母系统域名(localhost 即本地不联网)/ 站点数字码 / 站点英文码
garea() / runblog() / runprocess() / remoteway()qnywxh / 1 / 1 / 1七牛 API 编码 / 日志开关 / 流程日志开关 / 可否上传资源到母机
error_logs() / verifyscv() / anyshort() / kvexc() / addprc()—写日志 / 校验 / 短址 / 键值交换 / 加流程
附 六【盘上资源在哪 · localxres 目录即类型】
目录名就是 restype 名:一个资源一个目录,目录内 index.php / index.html 为入口, 另有 <名>_<类型>-resdata.json 随行(第十八条四处一致之其二)。
目录类型现有目录类型现有
funx/funx 方法1006sysx/sysx 系统13
sfunx/sfunx 函数集44appx/appx 应用46
tempx/tempx 模板域732layx/layx 层464
pagex/pagex 页面域530clsx/clsx PHP 类69
tabx/tabx 表资源760mfunx/mfunx 分布函数49
formx/formx 表单1078plotx/plotx 图表24
dataspacex/数据空间7apix/apix 接口5
另有 datax/(数据)、seedx/(种子)、tinyhtml/、mfun/ 等辅助目录。盘上文件属主为 www,删改须 sudo 并逐个列路径。
附 七【库表速查 · 登记在哪、实现什么功能】
正式层 621 张 coode_ 表,常用者如下(行数为该站实测):
表行实现什么功能
coode_sysinformation10系统总表:sysid / sysname / indexurl —— 入口第一站
coode_appdefault35应用定义(appid 之母本)
coode_appmylist1476应用实例(某系统装了哪些应用)
coode_applay455lay 层:sysid→appid→layid 中间一环
coode_tiny534pagex 微件清单(tinymark = 域.单元)
coode_unittiny191页面 HTML/CSS/JS 成品
coode_domainunit811tempx 模板单元(dumark),正文以 dTYPE_HEX 存
coode_sysregres5429资源总登记(restype + resmark)—— 查「有没有」查它
coode_sysresname6214资源名录(restype + rescode + 访问量),cdai_sysresname 之正式对应
coode_funlist944funx 方法表,含 usearea = 该方法必须在哪个编辑器里执行
coode_funsetfile41sfunx 函数集登记
coode_tablist678表资源登记(TABLE_NAME)—— 建表须在此有行
coode_keydetailx17438字段定义(每列一行),表单与渲染皆读它
coode_asktkey13资源字段结构与取值(keyval)—— 补正台「查看结构」即读它
coode_sysrestypedefine2626 种资源类型定义,含 maintab / cloudpath(编辑器地址)
coode_userlist30用户,PRIME=1 者方可执行 newresname
coode_usersys4用户—系统授权(「会员过期」实为卡在此表)
coode_loginstoken4388登录 stoken 与有效期
coode_dataspace4数据空间(jsondata / filetext)
计划层 cdai_ 八表(sysindex / appmylist / subapp / mytiny / subtiny / sysresname / sysaudit / sysresblog)只是影子; 查资源是否存在,一律查 coode_ 正式表 + 磁盘。
附 八【方法速查 · 谁实现什么功能】
盘上 /localxres/funx/ 共 1006 个方法,建站全程所用者:
方法实现什么功能本法出处
newresname建资源:登记 + 按类型插主表 + 回写 STCODE/txturl/funtxt第九~十二条
savetoseed把资源登记落进 seed(建完补跑,防 sysregres 漏登记)第十一条
dataneedkey为该资源生成字段结构(写进 coode_asktkey)第十三条
samekdatatotab结构 ↔ 真实主表双向同步,并回写 STATUS/PRIME 进度第十五条
killplanitem删除计划资源,连带清其字段结构第十六条
savetempdata / gettempdatatempx 保存落盘(两部曲)/ 取回给编辑器附二、坑 1
savefunc保存 funx 源码(正文须纯业务,禁双套壳)附二、坑 2
makelayfolder渲染 pagex 落地目录(SNO 传 coode_tiny 的 SNO)第十八条
anysys / anylay / anytiny三级入口渲染:系统 → 层 → 微件第十七条
commonlogin登录取 stoken(返回 JSON 的 msg 即 stoken)附四③
cdaiplan建站补正台后端(syslist/reslist/tree/rename/sysfix/startsys/askkey…)第二章
keysync跨站字段同步—
附 九【sfunx 函数集 · 内核的可插拔模块】
/localxres/sfunx/ 共 44 个函数集。funx 启动时以 eval(RESFUNSET("<集名>")) 把源码装进来, 缺哪个集,就用不了哪个函数(newresname 曾因未载 tabdataoprt 而报 undefined function)。常用者:
函数集提供什么
heartbeat心跳与访问鉴权:refreshstoken() 续期、visitresacc() 校验 usearea 与 Referer(坑:外部 curl 常被此拒)
permision权限:vfresedit() 返回该资源的编辑器地址
quickvalue快速取值
tabdataoprt建表与资源登记:newsysres() —— newresname 之根
tabbaseinfo表基础信息
keyinfo / keyinfox字段信息
dspbasecoprt数据空间基础操作
coremaking核心生成
判据:coode_funlist.usearea 形如 tempx.tempeditor.index,标明该方法必须在哪个编辑器页面内执行; 为空者方可外部直调。校验点就在 heartbeat 的 visitresacc()。
附 十【本法之施行】
本法自颁布之日起施行。凡施工者,须于开工前诵读第零条「先名后形」一遍; 凡遇本法未载之情形,停手回报,不得自创通道。
本法固化于 tempx buildlaw.index,与补正台(tempx cdaiplan.index)、API SDK 建站板块互为表里。
云酷德建站流程法 · 先名后形 · 照章施工