568329890b6f2234ab4e46c8484f10d2a9be6346
上一版 f1f79df 把 xsgzFlatten 的数组下标从 fields[0] 改成 fields.0,
依据是函数注释/提交说明/「needCurlyBraces 语义」三处都写点号。
本次从 sdau 线上静态资源(无需登录)拿到真实前端源码,证明该判断错误。
证据(xsgz.sdau.edu.cn/assets/,免登录可取):
index-B6fhXjS6.js 10.7MB 主包,含 1354 个 chunk 清单
studentForm-Dx5Fpjfs.js 序列化与提交实现
LeaveApplyDrawer-BeaVSGRQ.js 请假提交调用点
前端真实链路(LeaveApplyDrawer 的 P()):
c = ee(表单值, 字段定义)
L = ae(c, 字段定义) // fields 数组
T = {projectId, requestType:"LEAVE", startTime, endTime,
fields:L, address, longitude, latitude}
f = le(T, ext) // le → Ne → v → pe,转 FormData
await te(f) // POST application_submit (multipart)
键名规则(studentForm-Dx5Fpjfs.js 原文):
function pe(e,t,a){return e? a? `${e}[${t}]` : `${e}.${t}` : t}
v(): if(Array.isArray(s)) s.forEach((l,p)=>{
const c=`${i}[${p}]`; // 数组下标永远方括号,与 a 无关
... v(l,r,c,o)
})
Ne(e, t={}, a=false) → v(..., a=false)
即:对象键用点号,数组下标硬编码方括号。实际提交形如
fields[0].fieldId / fields[0].value。原实现正确,f1f79df 改错了。
另外查明:注释里长期引用的 toFormatFormData / needCurlyBraces
在整个 bundle 中并不存在(grep 计数为 0),是早期臆造的符号,
现已在注释中改为真实函数名 v()/pe()/Ne() 并附调用链。
改动:
- xsgzFlatten 数组分支还原为 "%s[%d]",注释给出源码依据;
- XsgzSubmitApplication 注释改为真实前端链路与规则;
- TestXsgzFlatten 期望还原为 fields[0].*;
- 契约测试期望同步为 fields[0].*,并加断言:括号需配对、
不得出现 fields[0][fieldId] 这类二维下标形态。
Description
No description provided
Languages
Go
58.2%
Vue
35.3%
TypeScript
4.1%
CSS
1.5%
JavaScript
0.6%
Other
0.2%