qiksy 1.1.1 → 1.1.2
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qiksy",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "Qiksy \u2014 one local engine for every Qiksy tool (Work Finder, Travel Assistant, Client Finder). Runs on your own Claude; nothing leaves your machine.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -696,7 +696,9 @@ const server = createServer(async (req, res) => {
|
|
|
696
696
|
|
|
697
697
|
if (req.method === 'PUT' && !seg[3]) {
|
|
698
698
|
if (!['draft', 'options'].includes(t.status)) {
|
|
699
|
-
|
|
699
|
+
// A machine code, not Russian prose: the client renders it in the reader's
|
|
700
|
+
// own language (EN/UK users were shown raw Russian). Audit 2026-07-26.
|
|
701
|
+
return json(res, 400, { error: `TRIP_LOCKED:${t.status}` });
|
|
700
702
|
}
|
|
701
703
|
const b = await readBody(req);
|
|
702
704
|
for (const k of ['title', 'from', 'to', 'departDate', 'returnDate', 'meetingAt', 'budget', 'criteria']) {
|
|
@@ -728,7 +730,7 @@ const server = createServer(async (req, res) => {
|
|
|
728
730
|
const sb = await readBody(req).catch(() => ({}));
|
|
729
731
|
if (LANGS.includes(sb.lang)) t.lang = sb.lang;
|
|
730
732
|
if (!['draft', 'options'].includes(t.status)) {
|
|
731
|
-
return json(res, 400, { error:
|
|
733
|
+
return json(res, 400, { error: `SEARCH_LOCKED:${t.status}` });
|
|
732
734
|
}
|
|
733
735
|
if (!clientWorkAllowed(t)) return json(res, 402, { error: 'PLAN_REQUIRED' });
|
|
734
736
|
if (!tripTravelers(t).length) return json(res, 400, { error: 'выберите хотя бы одного путника из команды' });
|
|
@@ -749,7 +751,7 @@ const server = createServer(async (req, res) => {
|
|
|
749
751
|
if (!Number.isInteger(num)) return json(res, 400, { error: 'нужен номер варианта: { "n": 2 }' });
|
|
750
752
|
// из ready_to_pay тоже можно — так оформляется связка (второй вариант следом)
|
|
751
753
|
if (!['options', 'ready_to_pay'].includes(t.status)) {
|
|
752
|
-
return json(res, 400, { error:
|
|
754
|
+
return json(res, 400, { error: `BOOK_LOCKED:${t.status}` });
|
|
753
755
|
}
|
|
754
756
|
if (!clientWorkAllowed(t)) return json(res, 402, { error: 'PLAN_REQUIRED' });
|
|
755
757
|
if (!t.options.some(o => o.n === num)) return json(res, 400, { error: `варианта №${num} нет в подборе` });
|
|
@@ -763,7 +765,7 @@ const server = createServer(async (req, res) => {
|
|
|
763
765
|
}
|
|
764
766
|
if (req.method === 'POST' && seg[3] === 'paid') {
|
|
765
767
|
if (t.status !== 'ready_to_pay') {
|
|
766
|
-
return json(res, 400, { error:
|
|
768
|
+
return json(res, 400, { error: `PAID_LOCKED:${t.status}` });
|
|
767
769
|
}
|
|
768
770
|
t.status = 'paid';
|
|
769
771
|
addActivity(t, 'HR подтвердила оплату — генерирую письмо, смету и чеклист');
|