diff --git a/services/db-migrations/migrations/1734600039971-placementinstructions.js b/services/db-migrations/migrations/1734600039971-placementinstructions.js new file mode 100644 index 0000000..89ba26c --- /dev/null +++ b/services/db-migrations/migrations/1734600039971-placementinstructions.js @@ -0,0 +1,166 @@ +"use strict"; + +const placementInstructions = { + car: ` +### Инструкции по размещению на автомобиль: + +**Где размещать:** +- На боковом или заднем стекле автомобиля. + +**Как разместить:** +1. Найдите видимое место на стекле, которое будет хорошо видно прохожим, например, в углу заднего или бокового окна. +2. Очистите поверхность стекла от пыли и грязи с помощью сухой или слегка влажной ткани. +3. Если вы используете наклейку: + - Убедитесь, что материал устойчив к влаге и выцветанию. + - Аккуратно приклейте наклейку на стекло, разглаживая её от центра к краям, чтобы избежать появления пузырьков воздуха. +4. Если вы используете пластину или рамку: + - Проверьте, что крепление не повредит стекло. + - Убедитесь, что QR-код надёжно зафиксирован и не шатается. +5. Если QR-код нанесён с помощью трафарета или гравировки: + - Проверьте, что код выполнен без дефектов и легко сканируется. + - Очистите стекло от остатков краски или мусора. + +**Важно:** +- Убедитесь, что QR-код не блокирует обзор водителю. +- Проверьте, что код можно легко сканировать снаружи автомобиля в любое время суток. +- Если QR-код размещён внутри, убедитесь, что стекло чистое и не бликует. + `, + pet: ` +### Инструкции по размещению на питомца: + +**Где размещать:** +- На ошейнике питомца. + +**Как разместить:** +1. Выберите удобный ошейник с креплением для QR-кода. Лучше всего подойдут ошейники с кольцом или специальным держателем. +2. Используйте прочный и водостойкий брелок или пластиковую подложку для QR-кода. +3. Закрепите QR-код на ошейнике так, чтобы он не мешал вашему питомцу, но был легко доступен для сканирования. +4. Проверьте, чтобы QR-код был хорошо зафиксирован и не потерялся во время прогулки. + +**Важно:** +- Используйте материалы, которые не вызовут аллергии или раздражения у питомца. +- Проверьте, что QR-код можно легко сканировать в любом положении. + `, + door: ` +### Инструкции по размещению на входную дверь дома или квартиры: + +**Где размещать:** +- На входной двери или рядом с домофоном. +- На двери или рядом с дверным звонком. + +**Как разместить:** +1. Найдите место рядом с дверным звонком или на самой двери, которое будет заметно для гостей. +2. Очистите поверхность от пыли и грязи, чтобы QR-код держался крепче. +3. Приклейте QR-код на дверь с помощью двустороннего скотча или водостойкого клея. +4. Если вы не хотите приклеивать код, используйте рамку или подставку и разместите её на полке или возле двери. + +**Важно:** +- Проверьте, что QR-код не блокирует другие элементы двери. +- Убедитесь, что его легко заметить и сканировать при любом освещении. + `, + store: ` +### Инструкции по размещению в магазине: + +**Где размещать:** +- На витрине, входной двери, кассе или информационной стойке. + +**Как разместить:** +1. **Если QR-код размещается на витрине или входной двери:** + - Найдите видное место на стекле, чтобы QR-код был хорошо заметен прохожим. + - Очистите стекло от пыли и загрязнений. + - Приклейте QR-код на внутреннюю сторону стекла, чтобы защитить его от погодных условий. +2. **Если QR-код размещается на кассе:** + - Используйте подставку или рамку, чтобы QR-код был на уровне глаз клиента. + - Убедитесь, что он не мешает работе кассира. +3. **Если QR-код размещается на информационной стойке:** + - Прикрепите QR-код к стойке с помощью двустороннего скотча. + - Либо используйте рамку, чтобы код выглядел аккуратно и профессионально. + +**Важно:** +- Убедитесь, что QR-код можно легко сканировать, даже при ярком свете или бликах. +- Если QR-код находится на улице, используйте стойкие к погодным условиям материалы. +- Разместите код так, чтобы он не мешал и не мог быть случайно повреждён. + `, + restaurant_table: ` +### Инструкции по размещению на стол в кафе или ресторане: + +**Где размещать:** +- На столе, в меню или на подставке. + +**Как разместить:** +1. Если QR-код размещается на столе: + - Используйте небольшой деревянный держатель или подставку. + - Поставьте подставку в центр стола или сбоку, чтобы гости могли легко заметить код. +2. Если QR-код размещается в меню: + - Вставьте QR-код на видное место, например, на первую или последнюю страницу меню. + - Используйте плотный ламинированный материал, чтобы код не повредился при использовании меню. +3. Если QR-код размещается на подставке: + - Поставьте подставку на уровне глаз сидящих гостей. + - Проверьте, чтобы подставка была устойчива и не падала. + +**Важно:** +- Защищайте QR-код от влаги, например, от пролитых напитков. +- Проверьте, что его можно легко сканировать, сидя за столом. + `, + other: ` +### Инструкции по размещению: + +**Где размещать:** +- В зависимости от ситуации, на любом удобном и видимом месте. + +**Как разместить:** +1. Подберите место, где QR-код будет защищён от повреждений и виден окружающим. +2. Используйте подходящие материалы для крепления: двусторонний скотч, рамку, подставку или брелок. +3. Убедитесь, что QR-код хорошо заметен и его легко сканировать. + +**Важно:** +- Адаптируйте место размещения под конкретную задачу. +- Проверьте, чтобы QR-код не был скрыт другими предметами. + `, +}; + +import PouchDB from "../PouchDB.js"; + +const publicSettingsDb = new PouchDB(`${process.env.API_URL}/public_settings`, { + skip_setup: true, +}); + +export const up = async () => { + try { + await publicSettingsDb.bulkDocs( + Object.entries(placementInstructions).map(([key, value]) => ({ + _id: `public_settings:placement_instructions_${key}`, + type: "public_settings", + name: `placement_instructions_${key}`, + value: value, + created_at: new Date().toISOString(), + })), + ); + } catch (error) { + console.error("Ошибка", error); + throw error; + } +}; + +export const down = async () => { + try { + const { rows } = await publicSettingsDb.allDocs({ + keys: Object.keys(placementInstructions).map( + (key) => `public_settings:placement_instructions_${key}`, + ), + include_docs: true, + }); + + await publicSettingsDb.bulkDocs( + rows.map((row) => ({ + ...row.doc, + _id: row.id, + _rev: row.doc._rev, + _deleted: true, + })), + ); + } catch (error) { + console.error("Ошибка", error); + throw error; + } +};