★ 建站顺序另见《云酷德建站流程法》(tempx buildlaw.index,打开章程,2026-10-05 定稿):先名后形 → 计划六表 → 补正 → 开工 → newresname 建名 → 照 funtxt 施工 → samekdatatotab 回填 → 验收。
以前文档里写的是「直接调 API 接口」——那是旧约,作废。所有资源的增删改,一律按下述六步走。
GET 本站域名/localxres/funx/commonlogin/?uid=<账号>&pass=<makepass密文>&sysid=<系统id>msg 就是 stoken。随后 Cookie 必须带 三个值:uid、stoken、deadline=time()+3600*72。$leftt>0 拦掉,现象是 302 静默跳转,接口返回空。funx.newresname?restype=<类型>&rescode=<域.名>&sysid=<系统>&restitle=<标题>coode_userlist 中必须 PRIME=1。tempx 的 rescode 若含点号,点前是域、点后是单元名;不含点号则自动补 .index。coode_sysrestypedefine 按 restypecode 查 cloudpath 字段——它就是该类型资源的编辑器地址。cloudpath 值为 mysql 的,说明这类资源基本不落盘,可以直接改数据;值是一条 URL 的,说明会落盘,必须进编辑器改,直接改库会造成库盘不一致。coode_sysrestypedefine 找到该 restypecode 那一行,读它的 cloudpath 字段,那就是现成的完整编辑器地址,? 后面已经把参数位留好了;你要做的只是把占位符换成资源名或该数据的 SNO 序号。https://qianjilian.com/localxres/tempx/tempeditor/index.html?unitid=xianfa.indexhttps://qianjilian.com/localxres/pagex/htmleditor/WrvLoe/index.html?funid=savefunchttps://qianjilian.com/localxres/pagex/htmleditor/WrvLoe/index.html?funid=coode_funsetfile@SNO:12345.funfullcoode_funlist 的 usearea 字段声明:它写明该方法允许被哪个页面调用,形如 tempx.tempeditor.index。pgmark(资源类型.目录.单元),拿它和 usearea 比对,不匹配直接判无权。所以「在哪个页面里调」不是形式,是权限本身。heartbeat 的 refreshtoken 方法:校验 stoken 是否有效、刷新 coode_loginstoken 有效期、并下发 deadline。所有「为什么明明登录了还是没权限」的答案都在这里。下表「编辑器 / 落点」列即 coode_sysrestypedefine.cloudpath 的值(已补全域名前缀),可直接复制使用。
| 类型 | 主表 | 编辑器 / 落点(完整地址) |
|---|---|---|
| funx 函数 | coode_funlist | https://qianjilian.com/localxres/pagex/htmleditor/WrvLoe/index.html?funid=<函数名> |
| clsx 类 | coode_phpcls | https://qianjilian.com/localxres/pagex/htmleditor/WrvLoe/index.html?funid=<类名> |
| sfunx 函数集 | coode_funsetfile | https://qianjilian.com/localxres/pagex/htmleditor/WrvLoe/index.html?funid=coode_funsetfile@SNO:<该数据序号>.funfull |
| dfunx 数据函数 | coode_datafun | https://qianjilian.com/localxres/pagex/htmleditor/WrvLoe/index.html?funid=coode_funsetfile@SNO:<该数据序号>.funfull |
| constx 静态量 | coode_sysconstant | https://qianjilian.com/localxres/pagex/htmleditor/WrvLoe/index.html?funid=coode_funsetfile@SNO:<该数据序号>.funfull |
| configx 系统参数 | coode_sysconfig | https://qianjilian.com/localxres/pagex/htmleditor/WrvLoe/index.html?funid=coode_funsetfile@SNO:<该数据序号>.funfull |
| tempx 模板 | coode_domainunit | https://qianjilian.com/localxres/tempx/tempeditor/index.html?unitid=<域.单元> |
| pagex 页面 | coode_tiny | https://qianjilian.com/localxres/tempx/tinylayeditor/index.html?unitid=<域.单元>&tinyid=<tinymark> |
| mfunx 分布函数 | coode_multifunlist | https://qianjilian.com/localxres/tempx/tinylayeditor/index.html?unitid=resuptool.index&tinyid=o16CUI |
| tabx 表 | coode_tablist | https://qianjilian.com/localxres/funx/anyjsshort/?stid=2qPIqS-sfile:anyjsshort.php-&pnum=150:<表名>&page=1:TABLE_NAME& |
| formx 表单 | coode_shortdata | https://qianjilian.com/localxres/funx/anyjsshort/?datatype=html&stid=keydtly-&pnum=100:<shortid>&page=1:shortid& |
| dataspacex 数据空间 | coode_dataspace | https://qianjilian.com/localxres/tempx/dspcmgr/index.html |
| sysx 系统容器 | coode_sysinformation | mysql:不落盘,可直接改库 |
| appx 应用容器 | coode_appdefault | mysql:不落盘,可直接改库 |
| layx 输出容器 | coode_applay | mysql:不落盘,可直接改库 |
| cdtrdrx 条件跳转 | coode_cdtrdr | mysql:不落盘,可直接改库 |
| parardrx 参数跳转 | coode_parardr | mysql:不落盘,可直接改库 |
| groupx 一级分类 | coode_grouplist | mysql:不落盘,可直接改库 |
| plotx 节点 | coode_plotlist | mysql:不落盘,可直接改库 |
| csspagex 样式页面 | coode_facelist | mysql:不落盘,可直接改库 |
| iconsetx 图标库 | coode_iconset | mysql:不落盘,可直接改库 |
| databasex 数据库 | coode_dblist | mysql:不落盘,可直接改库 |
| afunx 事务函数 | coode_affairfunlist | mysql:不落盘,可直接改库 |
| parax 外部框架 | coode_para | mysql:不落盘,可直接改库 |
| apix 接口密钥 | coode_apipool | mysql:不落盘,可直接改库 |
| smallcssx 小CSS | coode_codedemo | mysql:不落盘,可直接改库 |
newresname 建名 → 照 funtxt 施工 → samekdatatotab 回填 → 验收。下面「建站第一原则」已同步为今日最新规定;操作单个资源,仍先答「资源操作三问」。你在 coode_ 里建出来的每一个资源名称,都必须能在 cdai_ 计划层里查得到。计划层里没有的名字,不许直接在 coode_ 里生出来——这是建站的顺序,不是建议。
| 要点 | 怎么做(今日最新规定) |
|---|---|
| 先名后形 | 先在 cdai_sysindex → cdai_appmylist → cdai_subapp → cdai_mytiny → cdai_subtiny → cdai_sysresname 六表里把名字逐层写完;coode_ 里出现的 sysid / appid / layid / tinyid / resmark,都要能在 cdai_ 里反查到。 |
| 补正后才开工 | 计划写完,进建站补正审核台(tempx cdaiplan.index)逐条补正:AI 的建议写进 myaudit,人工的决策写进 aiaudit;补正没过不许开工,不许边建边想、临时起名字。 |
| 开工即建名 | 开工后每个资源必须先走 funx.newresname?restype=<类型>&rescode=<域.名>&sysid=<系统>&restitle=<标题>,uid 在 coode_userlist 里须 PRIME=1。建完它自动写 STCODE=创建时刻、txturl、relycore、copyrightmark、superediturl。⛔ 不许手写文件顶替建名。 |
| 照 funtxt 施工 | newresname 之后资源已经存在——不许再「创建」,直接进它的编辑器编辑;这个资源具体怎么操作,由 funtxt 给出的操作方法说了算,照着做即可。superediturl 是超级编辑直达地址,新窗口打开就是该资源的编辑页。 |
| 三态自查 | STCODE 空 = 未建,非空 = 已建;STATUS = 必填字段数,PRIME = 已填数,二者由 funx.samekdatatotab 双向同步写回。列表里看到「已建 8/8」才是填满,没填满不许验收。 |
| tabx 命名铁律 | 凡建表格(tabx)资源,其名必须 系统英文名 + 下划线_ 打头:tjx_photo · tjx_album · cloudbook_album。⛔ 不许裸名、不许冠他系统的名、不许中文或驼峰——归属一眼可辨,才不会与他系统撞车。 |
| 层级只到 pagex | 26 类资源里没有 tinyx;第四层是 pagex:sysx → appx → layx → pagex。tempx 只是模板,系统认的是 pagex 实例。只发 tempx 不排容器树,首页必 404。 |
| 库表必有登记 | 建表后必须写 coode_tablist + coode_keydetailx;任何资源必须登记进 coode_sysregres。没登记 = 后台不可编辑,跨站升级同步时直接丢。 |
| 盘上要有文件 | 资源目录、目录内的 <rescode>_<restype>-resdata.json、入口文件(index.php / index.html)一个都不能少。四处一致:磁盘目录 + 库记录 + sysregres 登记 + resdata.json。 |
cdai_ 计划层查得到吗?② 走过 newresname、STCODE 有值吗?③ PRIME/STATUS 填满了(如 8/8)吗?④ 盘上文件 + 库记录 + sysregres + resdata.json 四处一致吗?四问全过,这块砖才算砌到位。anysys?sysid=qjlliq 拿不到 layid → 首页 404。补救是回头补齐四层容器树(sysx → appx → layx → pagex)再走 makelayfolder 渲染。记住:tempx 只是模板,系统认的是 pagex 实例。每一个资源都是万米高楼里的一块砖瓦。动它之前先回答这三个问题——答不上来就不许动手。
| 三问 | 问什么 · 怎么验 |
|---|---|
| ① 它是谁? | 正在操作的资源是什么类型:sysx / appx / layx / pagex / tempx / funx / tabx / formx……先定 restype,再谈操作。类型不同,通道、落点、登记方式全不一样;把 tempx 当 pagex 用,是吃过的大亏。 |
| ② 它在哪? | 库里在哪、盘上在哪,两边都要核。库:主表是哪张、主键是哪个、coode_sysregres 登记有没有、字段与 coode_keydetailx 对不对;盘:目录在不在、<rescode>_<restype>-resdata.json 在不在、入口文件(index.php / index.html)在不在。只核一边必出事。 |
| ③ 操作它干什么? | 这次操作是要把这块砖瓦本身砌结实——建成它、改对它、登记全它、还是渲染出它?目标先说清楚,再照 SDK 的那一套方法做。一块砖砌到位,万米高楼就高一寸;说不清目的就是乱搬砖。 |
只要涉及 tempx(页面模板) 和 funx(函数) 怎么传参保存, 第一步不是写代码,是把那个编辑器自己的前端源码拉下来,看它现在怎么提交的。 编辑器会升级、参数会变,SDK 和记忆里记的那串可能已经过期——以编辑器为准,别照抄旧记忆。
| 编辑器 | 在哪 · 提交什么 |
|---|---|
| tempx 编辑器 tempeditor.index |
表 coode_domainunit,入口 /localxres/tempx/tempeditor/index.html?unitid=<域>.<单元>。提交 /localxres/funx/savetempdata/,手工拼 query 串:
domain & mark & unittitle & unitclass & unitdescrib & outurl 原样,
另 7 个必须过 mkstr:stylex / scriptx / casecode / tmpcode / srdcode / jsfiles / cssfiles。⛔ stylex 自带 <style>…</style>、scriptx 自带 <script …>…</script>
(外壳里是裸插入,引擎不补标签;传裸 CSS 会当正文漏到页面上,样式全废)。 |
| funx 编辑器 htmleditor.index |
⛔ 它是 pagex 资源,在 coode_unittiny 里(dumark='htmleditor.index'),
不在 coode_domainunit —— 找错表会以为它不存在。入口 /localxres/pagex/htmleditor/WrvLoe/index.html?funid=<函数名>。保存走 /localxres/funx/savefunc/?parall=…&fn=<funid>,
POST 体就一个字段:dt=mkstr(正文);带 ?clsid= 打开时改走 saveclsc(存类)。 |
一键把编辑器源码拉下来看:
python ~/.workbuddy/skills/coode-tempx/scripts/editorsrc.py --which tempx
(或 --which funx)—— 它会把各字段解码落盘,并打印所有「保存相关」代码段:端点、参数名、是否过 mkstr。
srdcode 的占位符是花括号 ,自己写个尖括号版 → 占位符对不上 → 页面落盘 0 字节;
② 外壳里的换行是字面
,原样提交会在页面顶部印出一串乱码,提交前先还原成真实换行;
③ 取外壳要取健康的页面,取到被写坏的会 unhex 失败静默变空壳 —— 取到空壳宁可停手,别硬发。造系统的第一步:先在计划层把「要建什么」自顶向下写清楚,再逐层生成真实资源。这一层是影子表,只进库、不落盘、不登记,写完人工确认后再落到正式的 coode_ 表。下面每一种都给出表结构、操作通道和一个可直接跑的示例。
图:计划层六表的关系,以及它们最终落到哪里
通道说明:这六张表只进库、不落盘、不登记 sysregres。新增行只能走 SQL(库直连或库内执行,暂无 HTTP 插入接口);改某一列走 HTTP funx.tdsetcell(它只允许写 coode_ / cdai_ 开头的表,正好覆盖这里)。⚠ 别用 savefunc 的 SNO 通道——见首页坑 5,它回「成功」却不写字。
要建什么系统。字段与 coode_sysinformation 几乎逐字段对应,差别:faceimg 换成 headicon,多 aidescrib。
| 操作 | 接口 | 关键参数 |
|---|---|---|
| 创建 | SQL INSERT | sysname + sysid(唯一) + systype='sys' + sysdetail + aidescrib |
| 补充 | tdsetcell | GET tb=cdai_sysindex&col=<列>&key=sysid&kv=<系统码>&v=<新值> |
| 详情 | SQL | select * from cdai_sysindex where sysid=<系统码> |
| 清理 | SQL DELETE | delete from cdai_sysindex where sysid=<系统码> |
sysid 用短英文(实例:tjx 特嘉行 · cloudbook 云草书院)。落地时往 coode_sysinformation 插同名一行,并把 indexurl 填首页的 layid、loginurl 填登录页的 layid。
INSERT INTO cdai_sysindex (sysname,sysid,systype,sysdetail,aidescrib)
VALUES ('特嘉行','tjx','sys','老照片 AI 归档与检索系统',
'[大莲备注] tejiaxing.com 上从零建的第一个系统。前序:图库 19.77 万张在千机连打标。后继:资源落到 /localxres/ 下。');
# 改某一列(HTTP 通道,cdai_ 开头允许)
GET 本站域名/localxres/funx/tdsetcell/?tb=cdai_sysindex&col=sysdetail&key=sysid&kv=tjx&v=<新说明>系统下有哪些应用。是 coode_appmylist 的精简版:砍掉 market/price/org 等经营字段,加 aidescrib + sysdescrib。
| 操作 | 接口 | 关键参数 |
|---|---|---|
| 创建 | SQL INSERT | appname + appid + sysid + aidescrib |
| 补充 | tdsetcell | GET tb=cdai_appmylist&col=<列>&key=appid&kv=<应用码>&v=<新值> |
| 详情 | SQL | select * from cdai_appmylist where sysid=<系统码> |
| 清理 | SQL DELETE | delete from cdai_appmylist where appid=<应用码> |
appid 用用途单词(实例:home 展示 · find 检索 · arc 归档)。⚠ coode_applist 这张表不存在;应用族实际是 appmylist / appmarket / appsource / appsrc / appdefault / appperson / appstatelist。
INSERT INTO cdai_appmylist (appname,appid,sysid,aidescrib)
VALUES ('老照片检索','find','tjx',
'[大莲备注] 检索应用。前序:依赖 arc 打好的 deswords 才有东西可搜。后继:结果跳 home 的详情页。');每个应用下的输出节点(页面)。layid 唯一,pageurl 是页面入口,字段与 coode_applay 一致,多三层 describ。
| 操作 | 接口 | 关键参数 |
|---|---|---|
| 创建 | SQL INSERT | sysid + appid + layid + laytitle + pageurl + aidescrib |
| 补充 | tdsetcell | GET tb=cdai_subapp&col=<列>&key=layid&kv=<节点码>&v=<新值> |
| 详情 | SQL | select * from cdai_subapp where appid=<应用码> |
| 清理 | SQL DELETE | delete from cdai_subapp where layid=<节点码> |
命名:layid = <系统码><应用缩写><两位序号>。实例:tjxhm01(首页)· tjxfd01(相册)· tjxpic01(详情)· tjxfind1(检索)· tjxarc01(管理台)· tjxup001(上传)。pageurl 填 /localxres/pagex/<域>/index.html。
INSERT INTO cdai_subapp (sysid,appid,layid,laytitle,pageurl,aidescrib)
VALUES ('tjx','home','tjxhm01','官网首页 · 精选照片墙','/localxres/pagex/tjxhome/index.html',
'[大莲备注] tejiaxing.com 的门面页。前序:无。后继:点相册进 tjxfolder,点图进 tjxpic。');落地页的微件清单。shortid / tinymark = 页面码,tabname = 数据来源表,三层 describ 是生成时逐级传下去的上下文。
| 操作 | 接口 | 关键参数 |
|---|---|---|
| 创建 | SQL INSERT | sysid + appid + layid + shortid + tinymark + tinytitle + tabname |
| 补充 | tdsetcell | GET tb=cdai_mytiny&col=<列>&key=shortid&kv=<页面码>&v=<新值> |
| 详情 | SQL | select * from cdai_mytiny where layid=<节点码> |
| 清理 | SQL DELETE | delete from cdai_mytiny where shortid=<页面码> |
shortid 与 tinyid 通常与 layid 同名。tinymark 写成 <域>.<单元>(实例 tjxhome.index),它决定了 pagex 落盘的目录名。
INSERT INTO cdai_mytiny (sysid,appid,layid,shortid,tinymark,tinytitle,tabname)
VALUES ('tjx','home','tjxhm01','tjxhm01','tjxhome.index','特嘉行 · 老照片 AI 存档','tjx_picfolder');一整个落地页的成品:pagehtml + scriptx + cssfilex + templatecode + demoresult。字段与 coode_unittiny 几乎完全一致。
| 操作 | 接口 | 关键参数 |
|---|---|---|
| 创建 | SQL INSERT | sysid + appid + layid + tinyid + unitmark + domainmark + pagehtml |
| 补充 | tdsetcell | GET tb=cdai_subtiny&col=unitdescrib&key=tinyid&kv=<页面码>&v=<落地备注> |
| 详情 | SQL | select tinyid,dumark,length(pagehtml) from cdai_subtiny where sysid=<系统码> |
| 清理 | SQL DELETE | delete from cdai_subtiny where tinyid=<页面码> |
⛔ dumark 必须是 <domainmark>.<unitmark> 两段,domainmark 就是 pagex 的目录名——路由终点靠它解析。
落地后回写 unitdescrib,一眼看出哪条真生成了:[大莲备注·已真实生成] 页面 tjxhome.index | layid=tjxhm01 | pagex 落盘 /localxres/pagex/tjxhome/tjxhm01/index.html | 路由 anysys/?sysid=tjx.home
INSERT INTO cdai_subtiny (sysid,appid,layid,shortid,tinyid,unitmark,domainmark,dumark,unitdescrib)
VALUES ('tjx','home','tjxhm01','tjxhm01','tjxhm01','index','tjxhome','tjxhome.index','官网首页,精选照片墙');
# pagehtml 列单独写(内容长,走 tdsetcell 或 SQL update)页面用到哪些资源,是最后照着它逐个生成的清单。funtxt / funfull 存的是函数说明与函数源码,直接给 AI 读代码用。
| 操作 | 接口 | 关键参数 |
|---|---|---|
| 创建 | SQL INSERT | grpid=系统码 + restype + resmark + restitle + belongtype |
| 补充 | tdsetcell | GET tb=cdai_sysresname&col=<列>&key=resmark&kv=<资源名>&v=<新值> |
| 详情 | SQL | select restype,resmark,restitle from cdai_sysresname where grpid=<系统码> order by restype |
| 清理 | SQL DELETE | delete from cdai_sysresname where grpid=<系统码> and resmark=<资源名> |
三元组 key = grpid|restype|resmark,与 coode_sysregres 一致。实例(tjx 23 条):sysx 1 · appx 3 · funx 7 · tabx 2 · tempx 5 · pagex 5。
⛔ 计划领先于现实:tjx 计划里登记了 tabx tjx_piccool / tjx_picfolder,但这两张物理表并没建,实际一直在用 dbvideo_piccool / dbvideo_picfolder。动手前先核物理表在不在,别照着计划就写代码。
INSERT INTO cdai_sysresname (grpid,restype,resmark,restitle,belongtype)
VALUES ('tjx','funx','tjxaidesc','函数:★AI 识别算法','page');
# 查某系统的资源清单(落地时照这个逐个生成)
select restype,resmark,restitle from cdai_sysresname where grpid='tjx' order by restype;计划写完只是「打算建什么」。下面这张表是真正生成时要做的事,按 cdai_sysresname 的清单逐个走。
| 要生成 | 动作 | 落点与验收 |
|---|---|---|
| 开工·先建名 | funx.newresname?restype=<类型>&rescode=<域.名>&sysid=<系统>&restitle=<标题> | uid 须 PRIME=1;建完回写 STCODE / txturl / relycore / copyrightmark / superediturl,之后只编辑不再创建 |
| 系统 sysx | INSERT coode_sysinformation + 登记 sysregres | indexurl=首页 layid、loginurl=登录页 layid;改完 sysid 要重刷 vermd5 |
| 表 tabx | 建物理表 + coode_tablist + coode_keydetailx | ⛔ 不登记后台不可编辑(铁哥老规矩) |
| 函数 funx | 代码进 coode_funlist + 落盘 + 登记 | 盘 /localxres/funx/<名>/index.php;守写函数五条铁律 |
| 模板 tempx | anahtmlcode / savetoseed | restype=tempx&resmark=<域>.<单元>;记得带 cssfiles/jsfiles |
| 页面 pagex | funx.makelayfolder?SNO=<tiny 的 SNO> | 落盘 /localxres/pagex/<域>/<单元>/index.html |
/localxres/pagex/tjxhome/tjxhm01/index.html(域 / 单元 两层),不是一层。
直接手写一个 index.html 丢进去不算数——没有 tinyid / unittiny 记录,后台菜单和短地址都找不到它。
coode_sysregres 登记 + 目录内的 resdata.json。
缺任何一处,跨站升级同步就会把它丢掉。
aidescrib 固定格式:[大莲备注] 一句话定位。前序:xxx。后继:xxx。
前序与后继必须写——它把六张表从「一堆记录」变成「一条有依赖的链」,后面排优先级、判断哪个先建,全靠它。
命名约定(2026-10-05 增补):⛔ tabx(表)资源名必须 系统英文名 + 下划线_ 打头(tjx_photo / cloudbook_album)——不许裸名、不许冠他系统名、不许中文或驼峰;⛔ 没有 tinyx,第四层一律 pagex。其余沿用:sysid 短英文(tjx / cloudbook)· appid 用途单词(home / find / arc)·
layid = <系统码><应用缩写><两位序号> · shortid 与 tinyid 与 layid 同名 ·
tinymark = dumark = <域>.<单元>。
xianfa.plan《云酷德建站流程法》(tempx buildlaw.index) 为准,2026-10-05 定稿