wjw-cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/dist/api/normalize.d.ts +14 -0
- package/dist/api/normalize.d.ts.map +1 -0
- package/dist/api/normalize.js +282 -0
- package/dist/api/normalize.js.map +1 -0
- package/dist/api/project-detail.d.ts +7 -0
- package/dist/api/project-detail.d.ts.map +1 -0
- package/dist/api/project-detail.js +200 -0
- package/dist/api/project-detail.js.map +1 -0
- package/dist/api/structure-narrow.d.ts +21 -0
- package/dist/api/structure-narrow.d.ts.map +1 -0
- package/dist/api/structure-narrow.js +259 -0
- package/dist/api/structure-narrow.js.map +1 -0
- package/dist/api/survey-api.d.ts +48 -0
- package/dist/api/survey-api.d.ts.map +1 -0
- package/dist/api/survey-api.js +551 -0
- package/dist/api/survey-api.js.map +1 -0
- package/dist/argv.d.ts +9 -0
- package/dist/argv.d.ts.map +1 -0
- package/dist/argv.js +62 -0
- package/dist/argv.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/main.d.ts +2 -0
- package/dist/commands/main.d.ts.map +1 -0
- package/dist/commands/main.js +568 -0
- package/dist/commands/main.js.map +1 -0
- package/dist/config.d.ts +23 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +37 -0
- package/dist/config.js.map +1 -0
- package/dist/credentials-store.d.ts +9 -0
- package/dist/credentials-store.d.ts.map +1 -0
- package/dist/credentials-store.js +38 -0
- package/dist/credentials-store.js.map +1 -0
- package/dist/handbook.d.ts +3 -0
- package/dist/handbook.d.ts.map +1 -0
- package/dist/handbook.js +43 -0
- package/dist/handbook.js.map +1 -0
- package/dist/http/request.d.ts +15 -0
- package/dist/http/request.d.ts.map +1 -0
- package/dist/http/request.js +65 -0
- package/dist/http/request.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/io/readInput.d.ts +7 -0
- package/dist/io/readInput.d.ts.map +1 -0
- package/dist/io/readInput.js +39 -0
- package/dist/io/readInput.js.map +1 -0
- package/dist/sign.d.ts +6 -0
- package/dist/sign.d.ts.map +1 -0
- package/dist/sign.js +46 -0
- package/dist/sign.js.map +1 -0
- package/dist/token.d.ts +4 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +65 -0
- package/dist/token.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/package.json +40 -0
- package/references/README.md +4 -0
- package/references/project_json_structure_guide.md +910 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
export function narrowOptsHasAny(o) {
|
|
2
|
+
return Boolean(o.questionpageId?.trim() || o.questionId?.trim() || o.optionId?.trim());
|
|
3
|
+
}
|
|
4
|
+
/** 兼容 HTTP/JSON 里混用 snake_case 的 opts */
|
|
5
|
+
export function coerceStructureNarrowOpts(o) {
|
|
6
|
+
if (!o)
|
|
7
|
+
return undefined;
|
|
8
|
+
const bag = o;
|
|
9
|
+
const str = (x) => typeof x === "string" && x.trim() ? x.trim() : undefined;
|
|
10
|
+
const next = {};
|
|
11
|
+
const qpid = str(o.questionpageId) ?? str(bag.questionpage_id);
|
|
12
|
+
const qid = str(o.questionId) ?? str(bag.question_id);
|
|
13
|
+
const oid = str(o.optionId) ?? str(bag.option_id);
|
|
14
|
+
if (qpid)
|
|
15
|
+
next.questionpageId = qpid;
|
|
16
|
+
if (qid)
|
|
17
|
+
next.questionId = qid;
|
|
18
|
+
if (oid)
|
|
19
|
+
next.optionId = oid;
|
|
20
|
+
return narrowOptsHasAny(next) ? next : undefined;
|
|
21
|
+
}
|
|
22
|
+
function normalizeId(raw) {
|
|
23
|
+
if (raw === null || raw === undefined)
|
|
24
|
+
return "";
|
|
25
|
+
if (typeof raw === "string")
|
|
26
|
+
return raw.trim().replace(/^\uFEFF/, "");
|
|
27
|
+
if (typeof raw === "number" && Number.isFinite(raw))
|
|
28
|
+
return String(raw);
|
|
29
|
+
if (typeof raw === "object" && raw !== null && "$oid" in raw) {
|
|
30
|
+
const oid = raw.$oid;
|
|
31
|
+
if (typeof oid === "string")
|
|
32
|
+
return oid.trim();
|
|
33
|
+
if (typeof oid === "number" && Number.isFinite(oid))
|
|
34
|
+
return String(oid);
|
|
35
|
+
}
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
function idEquals(field, target) {
|
|
39
|
+
const nt = target.trim();
|
|
40
|
+
if (!nt)
|
|
41
|
+
return false;
|
|
42
|
+
const nf = normalizeId(field);
|
|
43
|
+
return nf !== "" && nf === nt;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 上游 `edit_project` 的 data 可能在嵌套对象里才出现 `questionpage_list`,
|
|
47
|
+
* 在子树中 BFS 找到第一个带该数组的对象作为编辑结构根。
|
|
48
|
+
*/
|
|
49
|
+
export function resolveEditStructureRoot(d) {
|
|
50
|
+
if (Array.isArray(d.questionpage_list))
|
|
51
|
+
return d;
|
|
52
|
+
const queue = [d];
|
|
53
|
+
let steps = 0;
|
|
54
|
+
const maxSteps = 8000;
|
|
55
|
+
while (queue.length > 0 && steps++ < maxSteps) {
|
|
56
|
+
const cur = queue.shift();
|
|
57
|
+
if (cur === null || cur === undefined)
|
|
58
|
+
continue;
|
|
59
|
+
if (typeof cur !== "object")
|
|
60
|
+
continue;
|
|
61
|
+
if (Array.isArray(cur)) {
|
|
62
|
+
for (const el of cur)
|
|
63
|
+
queue.push(el);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
const j = cur;
|
|
67
|
+
if (Array.isArray(j.questionpage_list))
|
|
68
|
+
return j;
|
|
69
|
+
for (const v of Object.values(j))
|
|
70
|
+
queue.push(v);
|
|
71
|
+
}
|
|
72
|
+
return d;
|
|
73
|
+
}
|
|
74
|
+
function unwrapQuestionItem(item) {
|
|
75
|
+
if (!item || typeof item !== "object" || Array.isArray(item))
|
|
76
|
+
return null;
|
|
77
|
+
const o = item;
|
|
78
|
+
const inner = o.question;
|
|
79
|
+
if (inner && typeof inner === "object" && !Array.isArray(inner))
|
|
80
|
+
return inner;
|
|
81
|
+
return o;
|
|
82
|
+
}
|
|
83
|
+
function matchesQuestionpage(page, target) {
|
|
84
|
+
for (const k of ["_id", "id", "questionpage_id"]) {
|
|
85
|
+
if (idEquals(page[k], target))
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
function matchesQuestion(q, target) {
|
|
91
|
+
const keys = [
|
|
92
|
+
"_id",
|
|
93
|
+
"id",
|
|
94
|
+
"question_id",
|
|
95
|
+
"questionId",
|
|
96
|
+
"custom_q_id",
|
|
97
|
+
"q_id",
|
|
98
|
+
"cid",
|
|
99
|
+
];
|
|
100
|
+
for (const k of keys) {
|
|
101
|
+
if (idEquals(q[k], target))
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
for (const [k, v] of Object.entries(q)) {
|
|
105
|
+
if (!/_id$/i.test(k) && k !== "id" && !/question.*id$/i.test(k))
|
|
106
|
+
continue;
|
|
107
|
+
if (idEquals(v, target))
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
function matchesOption(opt, target) {
|
|
113
|
+
const keys = ["_id", "id", "option_id", "optionId", "matrixrow_id", "matrixcol_id", "cid"];
|
|
114
|
+
for (const k of keys) {
|
|
115
|
+
if (idEquals(opt[k], target))
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
for (const [k, v] of Object.entries(opt)) {
|
|
119
|
+
if (!/option.*id$/i.test(k) && !/_id$/i.test(k) && k !== "id")
|
|
120
|
+
continue;
|
|
121
|
+
if (idEquals(v, target))
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
function iterQuestions(struct, fn) {
|
|
127
|
+
const pages = struct.questionpage_list;
|
|
128
|
+
if (!Array.isArray(pages))
|
|
129
|
+
return;
|
|
130
|
+
for (const page of pages) {
|
|
131
|
+
if (!page || typeof page !== "object")
|
|
132
|
+
continue;
|
|
133
|
+
const p = page;
|
|
134
|
+
const qlist = p.question_list;
|
|
135
|
+
if (!Array.isArray(qlist))
|
|
136
|
+
continue;
|
|
137
|
+
for (const item of qlist) {
|
|
138
|
+
const q = unwrapQuestionItem(item);
|
|
139
|
+
if (q)
|
|
140
|
+
fn(p, q);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function findQuestionpage(struct, pageId) {
|
|
145
|
+
const pages = struct.questionpage_list;
|
|
146
|
+
if (!Array.isArray(pages))
|
|
147
|
+
return null;
|
|
148
|
+
for (const page of pages) {
|
|
149
|
+
if (!page || typeof page !== "object")
|
|
150
|
+
continue;
|
|
151
|
+
const p = page;
|
|
152
|
+
if (matchesQuestionpage(p, pageId))
|
|
153
|
+
return p;
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
function findQuestionWithPage(struct, questionId) {
|
|
158
|
+
let found = null;
|
|
159
|
+
iterQuestions(struct, (page, q) => {
|
|
160
|
+
if (found)
|
|
161
|
+
return;
|
|
162
|
+
if (matchesQuestion(q, questionId))
|
|
163
|
+
found = { page, question: q };
|
|
164
|
+
});
|
|
165
|
+
return found;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* 在单题 JSON 子树内查找选项(含矩阵行/列、评价题 label_data 等嵌套),
|
|
169
|
+
* 不把题目根节点自身当作「选项」命中(避免 question_id 与某字段误撞)。
|
|
170
|
+
*/
|
|
171
|
+
function findOptionDeepInQuestion(rootQuestion, optionId) {
|
|
172
|
+
function walk(node, depth, isQuestionRoot) {
|
|
173
|
+
if (depth > 16)
|
|
174
|
+
return null;
|
|
175
|
+
if (node === null || node === undefined)
|
|
176
|
+
return null;
|
|
177
|
+
if (Array.isArray(node)) {
|
|
178
|
+
for (const el of node) {
|
|
179
|
+
const h = walk(el, depth + 1, false);
|
|
180
|
+
if (h)
|
|
181
|
+
return h;
|
|
182
|
+
}
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
if (typeof node !== "object")
|
|
186
|
+
return null;
|
|
187
|
+
const o = node;
|
|
188
|
+
if (!isQuestionRoot && matchesOption(o, optionId))
|
|
189
|
+
return o;
|
|
190
|
+
for (const v of Object.values(o)) {
|
|
191
|
+
const h = walk(v, depth + 1, false);
|
|
192
|
+
if (h)
|
|
193
|
+
return h;
|
|
194
|
+
}
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
return walk(rootQuestion, 0, true);
|
|
198
|
+
}
|
|
199
|
+
function findOptionInProject(struct, optionId) {
|
|
200
|
+
let found = null;
|
|
201
|
+
iterQuestions(struct, (page, q) => {
|
|
202
|
+
if (found)
|
|
203
|
+
return;
|
|
204
|
+
const opt = findOptionDeepInQuestion(q, optionId);
|
|
205
|
+
if (opt)
|
|
206
|
+
found = { page, question: q, option: opt };
|
|
207
|
+
});
|
|
208
|
+
return found;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* 在完整 `edit_project` data 上按 ID 裁剪。
|
|
212
|
+
* 根对象即上游片段、无中文包装键:仅分页 id → 该页对象;仅题目 id → 该题对象;含 option-id → 该选项行对象(与 option_list 中单条结构一致,含 _id / cid / question_id 等)。
|
|
213
|
+
*/
|
|
214
|
+
export function narrowProjectStructureData(struct, opts) {
|
|
215
|
+
const root = resolveEditStructureRoot(struct);
|
|
216
|
+
const pageId = opts.questionpageId?.trim() ?? "";
|
|
217
|
+
const questionId = opts.questionId?.trim() ?? "";
|
|
218
|
+
const optionId = opts.optionId?.trim() ?? "";
|
|
219
|
+
if (optionId) {
|
|
220
|
+
let chain;
|
|
221
|
+
if (questionId) {
|
|
222
|
+
const hit = findQuestionWithPage(root, questionId);
|
|
223
|
+
if (!hit)
|
|
224
|
+
throw new Error(`未找到题目:question_id=${questionId}`);
|
|
225
|
+
const opt = findOptionDeepInQuestion(hit.question, optionId);
|
|
226
|
+
if (!opt) {
|
|
227
|
+
throw new Error(`题目 ${questionId} 下未找到选项:option_id=${optionId}(含矩阵/评价等嵌套选项)`);
|
|
228
|
+
}
|
|
229
|
+
chain = { page: hit.page, question: hit.question, option: opt };
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
const found = findOptionInProject(root, optionId);
|
|
233
|
+
if (!found)
|
|
234
|
+
throw new Error(`未找到选项:option_id=${optionId}`);
|
|
235
|
+
chain = found;
|
|
236
|
+
}
|
|
237
|
+
if (pageId && !matchesQuestionpage(chain.page, pageId)) {
|
|
238
|
+
throw new Error(`选项 ${optionId} 所在分页与 questionpage_id=${pageId} 不一致`);
|
|
239
|
+
}
|
|
240
|
+
return chain.option;
|
|
241
|
+
}
|
|
242
|
+
if (questionId) {
|
|
243
|
+
const hit = findQuestionWithPage(root, questionId);
|
|
244
|
+
if (!hit)
|
|
245
|
+
throw new Error(`未找到题目:question_id=${questionId}`);
|
|
246
|
+
if (pageId && !matchesQuestionpage(hit.page, pageId)) {
|
|
247
|
+
throw new Error(`题目 ${questionId} 不在分页 questionpage_id=${pageId} 上(参数与结构不一致)`);
|
|
248
|
+
}
|
|
249
|
+
return hit.question;
|
|
250
|
+
}
|
|
251
|
+
if (pageId) {
|
|
252
|
+
const page = findQuestionpage(root, pageId);
|
|
253
|
+
if (!page)
|
|
254
|
+
throw new Error(`未找到分页:questionpage_id=${pageId}`);
|
|
255
|
+
return page;
|
|
256
|
+
}
|
|
257
|
+
return root;
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=structure-narrow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structure-narrow.js","sourceRoot":"","sources":["../../src/api/structure-narrow.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,gBAAgB,CAAC,CAA6B;IAC5D,OAAO,OAAO,CACZ,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CACvE,CAAC;AACJ,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,yBAAyB,CACvC,CAA8B;IAE9B,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,MAAM,GAAG,GAAG,CAA4B,CAAC;IACzC,MAAM,GAAG,GAAG,CAAC,CAAU,EAAsB,EAAE,CAC7C,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,IAAI,GAA+B,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,IAAI;QAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IACrC,IAAI,GAAG;QAAE,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IAC/B,IAAI,GAAG;QAAE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;IAC7B,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACjD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACtE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACxE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAI,GAAyB,CAAC,IAAI,CAAC;QAC5C,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,MAAc;IAC9C,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IACtB,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,CAAa;IACpD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAAE,OAAO,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAc,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,QAAQ,GAAG,IAAI,CAAC;IACtB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChD,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,SAAS;QAEtC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,MAAM,EAAE,IAAI,GAAG;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,SAAS;QACX,CAAC;QAED,MAAM,CAAC,GAAG,GAAiB,CAAC;QAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAAE,OAAO,CAAC,CAAC;QAEjD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAa;IACvC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1E,MAAM,CAAC,GAAG,IAAkB,CAAC;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC;IACzB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAmB,CAAC;IAC5F,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAgB,EAAE,MAAc;IAC3D,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,iBAAiB,CAAU,EAAE,CAAC;QAC1D,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,CAAa,EAAE,MAAc;IACpD,MAAM,IAAI,GAAG;QACX,KAAK;QACL,IAAI;QACJ,aAAa;QACb,YAAY;QACZ,aAAa;QACb,MAAM;QACN,KAAK;KACG,CAAC;IACX,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IAC1C,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,SAAS;QAC1E,IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,GAAe,EAAE,MAAc;IACpD,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,CAAU,CAAC;IACpG,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5C,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI;YAAE,SAAS;QACxE,IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CACpB,MAAkB,EAClB,EAA6C;IAE7C,MAAM,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAS;QAChD,MAAM,CAAC,GAAG,IAAkB,CAAC;QAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC;gBAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAkB,EAAE,MAAc;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAS;QAChD,MAAM,CAAC,GAAG,IAAkB,CAAC;QAC7B,IAAI,mBAAmB,CAAC,CAAC,EAAE,MAAM,CAAC;YAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAkB,EAClB,UAAkB;IAElB,IAAI,KAAK,GAAsD,IAAI,CAAC;IACpE,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,KAAK;YAAE,OAAO;QAClB,IAAI,eAAe,CAAC,CAAC,EAAE,UAAU,CAAC;YAAE,KAAK,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,wBAAwB,CAAC,YAAwB,EAAE,QAAgB;IAC1E,SAAS,IAAI,CAAC,IAAa,EAAE,KAAa,EAAE,cAAuB;QACjE,IAAI,KAAK,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QAC5B,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACrD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;gBACtB,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;gBACrC,IAAI,CAAC;oBAAE,OAAO,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAkB,CAAC;QAC7B,IAAI,CAAC,cAAc,IAAI,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC;YAAE,OAAO,CAAC,CAAC;QAC5D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAAkB,EAClB,QAAgB;IAEhB,IAAI,KAAK,GAA0E,IAAI,CAAC;IACxF,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,KAAK;YAAE,OAAO;QAClB,MAAM,GAAG,GAAG,wBAAwB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,GAAG;YAAE,KAAK,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAkB,EAClB,IAAgC;IAEhC,MAAM,IAAI,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAE7C,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,KAAqE,CAAC;QAC1E,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACnD,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;YAC7D,MAAM,GAAG,GAAG,wBAAwB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC7D,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,MAAM,UAAU,qBAAqB,QAAQ,eAAe,CAAC,CAAC;YAChF,CAAC;YACD,KAAK,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;YAC3D,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;QACD,IAAI,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,MAAM,QAAQ,0BAA0B,MAAM,MAAM,CACrD,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;QAC7D,IAAI,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACb,MAAM,UAAU,yBAAyB,MAAM,cAAc,CAC9D,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { WjwConfig } from "../config.js";
|
|
2
|
+
import { type ProjectStructureNarrowOpts } from "./structure-narrow.js";
|
|
3
|
+
export type JsonObject = Record<string, unknown>;
|
|
4
|
+
export type ApiContext = {
|
|
5
|
+
cfg: WjwConfig;
|
|
6
|
+
userTempToken: string;
|
|
7
|
+
};
|
|
8
|
+
/** 与 `/app_api/skills/v1/projects/simple` 的 `ptype` 参数一致(360 评估场景请传 `appraise`) */
|
|
9
|
+
export type ProjectListPtype = "survey" | "form" | "assess" | "satisfaction" | "vote" | "appraise" | "pay";
|
|
10
|
+
export declare function fetchProjectList(ctx: ApiContext, keyword: string, page: number, ptype?: ProjectListPtype): Promise<JsonObject>;
|
|
11
|
+
/** 与 `structure-narrow` 一致:仅用于从完整结构中裁剪返回「分页/题目/选项」数据 */
|
|
12
|
+
export type FetchProjectStructureOptions = ProjectStructureNarrowOpts;
|
|
13
|
+
export declare function fetchProjectStructure(ctx: ApiContext, projectId: string, opts?: FetchProjectStructureOptions): Promise<JsonObject>;
|
|
14
|
+
export declare function updateProject(ctx: ApiContext, projectId: string, fields: {
|
|
15
|
+
title?: string;
|
|
16
|
+
begin_desc?: string;
|
|
17
|
+
end_desc?: string;
|
|
18
|
+
}): Promise<JsonObject>;
|
|
19
|
+
export declare function createQuestion(ctx: ApiContext, init: {
|
|
20
|
+
projectId: string;
|
|
21
|
+
questionpageId: string;
|
|
22
|
+
questionStruct: JsonObject;
|
|
23
|
+
index: number;
|
|
24
|
+
}): Promise<JsonObject>;
|
|
25
|
+
export declare function updateQuestion(ctx: ApiContext, init: {
|
|
26
|
+
projectId: string;
|
|
27
|
+
questionId: string;
|
|
28
|
+
questionpageId: string;
|
|
29
|
+
questionStruct: JsonObject;
|
|
30
|
+
}): Promise<JsonObject>;
|
|
31
|
+
export declare function deleteQuestion(ctx: ApiContext, projectId: string, questionId: string): Promise<JsonObject>;
|
|
32
|
+
export declare function publishSurvey(ctx: ApiContext, projectId: string, action: "publish" | "stop"): Promise<JsonObject>;
|
|
33
|
+
export declare function createSurvey(ctx: ApiContext, init: {
|
|
34
|
+
title: string;
|
|
35
|
+
ptype: string;
|
|
36
|
+
questionList: unknown[];
|
|
37
|
+
projectExtras?: JsonObject;
|
|
38
|
+
autoPublish: boolean;
|
|
39
|
+
maxPollTimes: number;
|
|
40
|
+
}): Promise<JsonObject>;
|
|
41
|
+
export declare function getReport(cfg: WjwConfig, projectId: string): JsonObject;
|
|
42
|
+
export declare function overviewStats(ctx: ApiContext, projectId: string): Promise<JsonObject>;
|
|
43
|
+
export declare function exportData(ctx: ApiContext, init: {
|
|
44
|
+
projectId: string;
|
|
45
|
+
timeoutSeconds: number;
|
|
46
|
+
pollIntervalSeconds: number;
|
|
47
|
+
}): Promise<JsonObject>;
|
|
48
|
+
//# sourceMappingURL=survey-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"survey-api.d.ts","sourceRoot":"","sources":["../../src/api/survey-api.ts"],"names":[],"mappings":"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"}
|