@jjlmoya/utils-civic 1.7.0 → 1.9.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.
Files changed (94) hide show
  1. package/.github/workflows/ci.yml +103 -0
  2. package/.gitignore +1 -0
  3. package/package.json +17 -5
  4. package/scripts/postinstall.mjs +2 -4
  5. package/src/category/index.ts +3 -1
  6. package/src/components/ProductionBreadcrumb.astro +132 -0
  7. package/src/components/ProductionWidget.astro +182 -0
  8. package/src/entries.ts +4 -0
  9. package/src/i18n/header-ui.ts +15 -0
  10. package/src/i18n/language-ui.ts +9 -0
  11. package/src/i18n/languages.ts +24 -0
  12. package/src/identity/brands.ts +5 -0
  13. package/src/index.ts +1 -0
  14. package/src/layouts/ProductionCategoryPage.astro +184 -0
  15. package/src/layouts/ProductionPage.astro +209 -0
  16. package/src/layouts/ProductionUtilityPage.astro +235 -0
  17. package/src/mfe/assets.ts +15 -0
  18. package/src/mfe/category-ui.ts +25 -0
  19. package/src/mfe/routes.ts +50 -0
  20. package/src/pages/[locale]/[utilities]/[categories]/[category]/[slug].astro +100 -0
  21. package/src/pages/[locale]/[utilities]/[categories]/[category].astro +44 -0
  22. package/src/pages/index.astro +1 -1
  23. package/src/pages/utilidades/[slug].astro +90 -0
  24. package/src/pages/utilidades/categorias/[category].astro +38 -0
  25. package/src/tests/locale_completeness.test.ts +1 -1
  26. package/src/tests/tool_validation.test.ts +1 -1
  27. package/src/tests/translation_copy.test.ts +1 -1
  28. package/src/tool/access-to-information-request-builder/access-to-information-request-builder.css +577 -0
  29. package/src/tool/access-to-information-request-builder/bibliography.astro +6 -0
  30. package/src/tool/access-to-information-request-builder/bibliography.ts +6 -0
  31. package/src/tool/access-to-information-request-builder/component.astro +106 -0
  32. package/src/tool/access-to-information-request-builder/contract.test.ts +17 -0
  33. package/src/tool/access-to-information-request-builder/controller.ts +135 -0
  34. package/src/tool/access-to-information-request-builder/dom-views.ts +59 -0
  35. package/src/tool/access-to-information-request-builder/entry.ts +27 -0
  36. package/src/tool/access-to-information-request-builder/evaluator.ts +27 -0
  37. package/src/tool/access-to-information-request-builder/i18n/de.ts +52 -0
  38. package/src/tool/access-to-information-request-builder/i18n/en.ts +76 -0
  39. package/src/tool/access-to-information-request-builder/i18n/es.ts +52 -0
  40. package/src/tool/access-to-information-request-builder/i18n/fr.ts +50 -0
  41. package/src/tool/access-to-information-request-builder/i18n/id.ts +50 -0
  42. package/src/tool/access-to-information-request-builder/i18n/it.ts +50 -0
  43. package/src/tool/access-to-information-request-builder/i18n/ja.ts +50 -0
  44. package/src/tool/access-to-information-request-builder/i18n/ko.ts +50 -0
  45. package/src/tool/access-to-information-request-builder/i18n/nl.ts +49 -0
  46. package/src/tool/access-to-information-request-builder/i18n/pl.ts +49 -0
  47. package/src/tool/access-to-information-request-builder/i18n/pt.ts +49 -0
  48. package/src/tool/access-to-information-request-builder/i18n/ru.ts +49 -0
  49. package/src/tool/access-to-information-request-builder/i18n/sv.ts +49 -0
  50. package/src/tool/access-to-information-request-builder/i18n/tr.ts +49 -0
  51. package/src/tool/access-to-information-request-builder/i18n/zh.ts +49 -0
  52. package/src/tool/access-to-information-request-builder/index.ts +11 -0
  53. package/src/tool/access-to-information-request-builder/logic.test.ts +68 -0
  54. package/src/tool/access-to-information-request-builder/logic.ts +138 -0
  55. package/src/tool/access-to-information-request-builder/seo.astro +15 -0
  56. package/src/tool/access-to-information-request-builder/storage.ts +27 -0
  57. package/src/tool/access-to-information-request-builder/ui.ts +154 -0
  58. package/src/tool/access-to-information-request-builder/validation.ts +7 -0
  59. package/src/tool/parliamentary-voting-analyzer/bibliography.astro +14 -0
  60. package/src/tool/parliamentary-voting-analyzer/bibliography.ts +6 -0
  61. package/src/tool/parliamentary-voting-analyzer/component.astro +63 -0
  62. package/src/tool/parliamentary-voting-analyzer/contract.test.ts +16 -0
  63. package/src/tool/parliamentary-voting-analyzer/controller.ts +65 -0
  64. package/src/tool/parliamentary-voting-analyzer/dom-views.ts +63 -0
  65. package/src/tool/parliamentary-voting-analyzer/entry.ts +27 -0
  66. package/src/tool/parliamentary-voting-analyzer/evaluator.ts +12 -0
  67. package/src/tool/parliamentary-voting-analyzer/i18n/de.ts +45 -0
  68. package/src/tool/parliamentary-voting-analyzer/i18n/en.ts +79 -0
  69. package/src/tool/parliamentary-voting-analyzer/i18n/es.ts +49 -0
  70. package/src/tool/parliamentary-voting-analyzer/i18n/fr.ts +43 -0
  71. package/src/tool/parliamentary-voting-analyzer/i18n/id.ts +45 -0
  72. package/src/tool/parliamentary-voting-analyzer/i18n/it.ts +45 -0
  73. package/src/tool/parliamentary-voting-analyzer/i18n/ja.ts +45 -0
  74. package/src/tool/parliamentary-voting-analyzer/i18n/ko.ts +45 -0
  75. package/src/tool/parliamentary-voting-analyzer/i18n/nl.ts +45 -0
  76. package/src/tool/parliamentary-voting-analyzer/i18n/pl.ts +45 -0
  77. package/src/tool/parliamentary-voting-analyzer/i18n/pt.ts +45 -0
  78. package/src/tool/parliamentary-voting-analyzer/i18n/ru.ts +45 -0
  79. package/src/tool/parliamentary-voting-analyzer/i18n/sv.ts +45 -0
  80. package/src/tool/parliamentary-voting-analyzer/i18n/tr.ts +45 -0
  81. package/src/tool/parliamentary-voting-analyzer/i18n/zh.ts +45 -0
  82. package/src/tool/parliamentary-voting-analyzer/index.ts +11 -0
  83. package/src/tool/parliamentary-voting-analyzer/logic.test.ts +52 -0
  84. package/src/tool/parliamentary-voting-analyzer/logic.ts +279 -0
  85. package/src/tool/parliamentary-voting-analyzer/parliamentary-voting-analyzer.css +491 -0
  86. package/src/tool/parliamentary-voting-analyzer/seo.astro +14 -0
  87. package/src/tool/parliamentary-voting-analyzer/storage.ts +25 -0
  88. package/src/tool/parliamentary-voting-analyzer/ui.ts +98 -0
  89. package/src/tools.ts +4 -0
  90. package/src/types.ts +2 -4
  91. package/src/worker.ts +9 -0
  92. package/tsconfig.json +14 -5
  93. package/src/pages/[locale]/[slug].astro +0 -166
  94. package/src/pages/[locale].astro +0 -253
@@ -0,0 +1,50 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { AccessRequestLocaleContent } from '../entry';
4
+ import type { AccessRequestUI } from '../ui';
5
+
6
+ const ui: AccessRequestUI = {
7
+ eyebrow: 'CIVIC PAPER TRAIL', introHeading: 'Bentuk pertanyaan sebelum dikirim.', introText: 'Mulai dari tujuan, tulis satu kumpulan informasi yang dapat diminta per baris, lalu tambahkan batas yang membuat dokumen mudah ditemukan.', targetHeading: 'Tentukan tujuan', targetPrompt: 'Siapa yang dapat menjawab?', questionPrompt: 'Satu kumpulan setiap kali', boundaryHeading: 'Tentukan batas', boundaryPrompt: 'Apa yang membuatnya mudah ditemukan?', reviewWarningsHeading: 'Periksa sebelum mengirim',
8
+ recipientLabel: 'Otoritas atau penerima', recipientPlaceholder: 'Dinas, lembaga, arsip, atau organisasi', subjectLabel: 'Subjek', subjectPlaceholder: 'Catatan atau informasi yang ingin ditemukan', itemsLabel: 'Informasi yang diminta', itemPlaceholder: 'Minta satu kumpulan, catatan, atau bidang yang dapat dikenali', addItem: 'Tambah baris permintaan', removeItem: 'Hapus baris ini', periodLabel: 'Periode waktu', periodFrom: 'Dari', periodTo: 'Sampai', geographyLabel: 'Cakupan geografis', geographyPlaceholder: 'Kota, distrik, lokasi, wilayah program, atau nasional', formatLabel: 'Format pilihan', formatPlaceholder: 'Pilih format pengiriman', formatEmail: 'Salinan elektronik melalui email', formatCsv: 'Tabel yang dapat dibaca mesin seperti CSV', formatPdf: 'PDF atau dokumen yang dapat dicari', formatOriginal: 'Format asli yang disimpan otoritas', deliveryLabel: 'Rincian pengiriman', deliveryPlaceholder: 'Alamat email, alamat pos, atau cara aman untuk membalas', contactLabel: 'Kontak opsional', contactPlaceholder: 'Telepon, nomor referensi, atau kanal balasan pilihan', attachmentsLabel: 'Lampiran atau pengenal', attachmentsPlaceholder: 'Nama berkas, nomor catatan, tautan, atau konteks yang membantu pencarian', noAttachments: 'Tidak diperlukan lampiran atau pengenal', savedCopy: 'Saya sudah menyimpan salinan teks akhir', presetLabel: 'Mulai dari contoh terarah', presetRecords: 'Catatan rapat', presetSpending: 'Catatan pengeluaran', presetMeetings: 'Keluhan layanan', generateAction: 'Buat draf permintaan', resetAction: 'Hapus draf', resultHeading: 'Draf permintaan', resultIntro: 'Periksa setiap fakta dan edit teks akhir sebelum menyalinnya. Panduan dan peringatan tetap berada di luar teks yang dikirim.', copyAction: 'Salin Markdown', printAction: 'Cetak atau simpan sebagai PDF', copied: 'Disalin ke papan klip', noResult: 'Tambahkan penerima, subjek, dan sedikitnya satu baris permintaan untuk melihat jejaknya.', checklistHeading: 'Keterlacakan sebelum dikirim', completeLabel: 'Siap', reviewLabel: 'Periksa', checklistRecipient: 'Penerima sudah disebutkan', checklistScope: 'Setiap baris menyebut satu kumpulan yang dapat diminta', checklistPeriod: 'Periode sudah dibatasi', checklistFormat: 'Format pilihan sudah disebutkan', checklistAttachments: 'Lampiran dan pengenal sudah diperhitungkan', checklistCopy: 'Salinan disimpan untuk arsip', methodHeading: 'Metode yang diterapkan', methodText: 'Pembuat ini mengubah topik luas menjadi permintaan yang dapat dilacak: satu kumpulan informasi per baris, penerima yang jelas, rentang tanggal, batas geografis, format pilihan, dan jalur balasan yang dapat digunakan. Alat ini hanya menyusun rincian yang Anda berikan dan tidak menambahkan dasar hukum, tenggat, otoritas, atau klaim fakta.', limitsHeading: 'Yang tidak dilakukan alat ini', limitsText: 'Alat ini tidak menemukan otoritas yang berwenang, menentukan tenggat hukum, menjamin keterbukaan, mengajukan permintaan, menggolongkan catatan menurut hukum setempat, atau memberi nasihat hukum. Periksa petunjuk terbaru dari penerima sebelum mengirim.', edgeCasesHeading: 'Kasus khusus dan peringatan data', edgeCasesText: 'Frasa luas seperti "semua dokumen" dapat sulit dicari. Hindari istilah yang tidak jelas, arti tanggal yang bercampur, data pribadi yang tidak perlu, dan permintaan analisis baru jika yang diperlukan adalah catatan yang sudah ada. Format tertentu mungkin tidak tersedia.', statusReady: 'Draf memiliki jejak minimum yang lengkap.', statusReview: 'Draf dapat menjadi awal yang baik tetapi perlu diperiksa.', missingRecipient: 'Sebutkan otoritas atau penerima sebelum mengirim.', missingItems: 'Tambahkan sedikitnya satu kumpulan informasi yang spesifik.', missingPeriod: 'Tambahkan tanggal awal dan akhir atau jelaskan batas yang belum ada.', broadItem: 'Baris ini mungkin terlalu luas. Sebutkan jenis catatan, bidang, peristiwa, atau kumpulan yang terukur.', missingFormat: 'Pilih cara informasi dikirimkan.', missingGeography: 'Tambahkan tempat atau jelaskan mengapa permintaan berlaku nasional.', missingDelivery: 'Tambahkan jalur yang dapat digunakan penerima untuk membalas.', noCopyWarning: 'Simpan teks akhir dan rincian pengiriman sebelum mengirim.', itemNumber: 'Baris permintaan',
9
+ };
10
+ const softwareApplication: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Pembuat Permintaan Akses Informasi', applicationCategory: 'UtilitiesApplication', operatingSystem: 'Any', description: 'Susun permintaan informasi yang jelas dan dapat dilacak dengan cakupan, tanggal, format, dan jalur balasan.', url: 'https://gamebob.dev/id/pembuat-permintaan-akses-informasi', offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' } };
11
+ const faqPage: FAQPage = { '@type': 'FAQPage', mainEntity: [
12
+ { '@type': 'Question', name: 'Apa yang sebaiknya saya minta?', acceptedAnswer: { '@type': 'Answer', text: 'Mintalah kumpulan informasi, catatan, bidang, atau jumlah terukur yang dapat dikenali. Pisahkan kumpulan yang tidak berkaitan menjadi baris berbeda.' } },
13
+ { '@type': 'Question', name: 'Apakah alat ini tahu otoritas yang harus dihubungi?', acceptedAnswer: { '@type': 'Answer', text: 'Tidak. Anda harus menemukan penerima yang mungkin dan memeriksa petunjuk terbarunya. Pembuat ini tidak menentukan yurisdiksi, tenggat, atau pengecualian.' } },
14
+ { '@type': 'Question', name: 'Mengapa periode dan cakupan geografis penting?', acceptedAnswer: { '@type': 'Answer', text: 'Keduanya mempersempit pencarian dan mengurangi kerancuan. Gunakan arti tanggal yang sama dan sebutkan tempat atau program yang dicakup.' } },
15
+ { '@type': 'Question', name: 'Bolehkah saya meminta data pribadi atau sensitif?', acceptedAnswer: { '@type': 'Answer', text: 'Masukkan hanya rincian yang perlu dan sesuai. Aturan akses dan privasi berbeda menurut wilayah, jadi periksa panduan penerima.' } },
16
+ ] };
17
+ const howTo: HowTo = { '@type': 'HowTo', name: 'Menyusun permintaan informasi yang tepat', step: [
18
+ { '@type': 'HowToStep', name: 'Sebutkan penerima', text: 'Masukkan otoritas, dinas, arsip, atau organisasi yang kemungkinan memegang informasi dan periksa kanal permintaan terbarunya.' },
19
+ { '@type': 'HowToStep', name: 'Pisahkan informasi', text: 'Tulis satu kumpulan yang dapat diminta per baris. Sebutkan jenis catatan, bidang, peristiwa, atau jumlah.' },
20
+ { '@type': 'HowToStep', name: 'Batasi pencarian', text: 'Tambahkan tanggal awal, tanggal akhir, cakupan geografis, dan pengenal yang membantu menemukan bahan.' },
21
+ { '@type': 'HowToStep', name: 'Pilih rincian pengiriman', text: 'Nyatakan format pilihan dan jalur balasan yang dapat diandalkan tanpa menganggap format baru harus dibuat.' },
22
+ { '@type': 'HowToStep', name: 'Periksa dan simpan salinan', text: 'Baca Markdown, selesaikan tanda pemeriksaan, simpan teks dan rincian pengiriman, lalu gunakan kanal yang sudah diverifikasi.' },
23
+ ] };
24
+ export const content: AccessRequestLocaleContent = { slug: 'pembuat-permintaan-akses-informasi', title: 'Pembuat Permintaan Akses Informasi', description: 'Susun permintaan informasi yang tepat dengan penerima, baris permintaan khusus, tanggal, cakupan geografis, format, dan daftar pemeriksaan.', ui, seo: [
25
+ { type: 'title', text: 'Tulis permintaan informasi yang mudah ditemukan', level: 2 },
26
+ { type: 'paragraph', html: 'Permintaan dapat tetap sopan tetapi sulit dijawab jika subjeknya terlalu luas, tanggalnya tidak ada, atau beberapa pertanyaan dicampur. Pembuat ini mengubah rincian yang sudah Anda ketahui menjadi jejak yang dapat diperiksa: penerima, catatan yang dicari, periode, tempat, dan cara balasan.' },
27
+ { type: 'title', text: 'Berikan batas pada pencarian', level: 2 },
28
+ { type: 'paragraph', html: 'Gunakan arti tanggal yang sama di kedua ujung periode, misalnya tanggal terbit, rapat, atau pembayaran. Tambahkan tempat, program, lokasi, atau organisasi. Jika batas benar-benar belum diketahui, tampilkan dalam daftar pemeriksaan dan jangan menebak.' },
29
+ { type: 'table', headers: ['Rincian', 'Contoh kata', 'Keputusan yang dibantu'], rows: [['Kumpulan informasi', 'Agenda final dan notulen yang disetujui', 'Catatan mana yang dicari?'], ['Periode', 'Dari 2025-01-01 sampai 2025-12-31', 'Catatan mana yang termasuk?'], ['Cakupan geografis', 'Wilayah layanan distrik utara', 'Tempat atau program mana?'], ['Format', 'Tabel yang dapat dibaca mesin seperti CSV', 'Bagaimana hasil dapat diperiksa?']] },
30
+ { type: 'title', text: 'Periksa draf sebelum mengirim', level: 2 },
31
+ { type: 'paragraph', html: 'Teks yang dibuat menjaga fakta Anda tetap bersama dan menaruh panduan di bagian pemeriksaan terpisah. Tanda lengkap berarti rincian minimum tersedia; peringatan mengajak Anda menyebutkan catatan, bidang, peristiwa, atau kumpulan terukur dengan lebih tepat.' },
32
+ { type: 'list', items: ['Pastikan penerima saat ini menerima jenis permintaan tersebut.', 'Pastikan setiap baris meminta satu kumpulan yang dapat dikenali, bukan seluruh topik.', 'Gunakan periode tertutup dan batas geografis yang sesuai.', 'Nyatakan format pilihan tanpa menganggap penerima harus membuat berkas baru.', 'Catat lampiran, pengenal, teks akhir, dan kanal pengiriman.'] },
33
+ { type: 'tip', title: 'Spesifik bukan berarti lengkap', html: 'Permintaan singkat dengan jenis catatan, periode, dan pengenal yang jelas sering lebih mudah dicari daripada cerita panjang. Pertahankan konteks yang membantu lokasi catatan.' },
34
+ { type: 'title', text: 'Pahami batas pembuat ini', level: 2 },
35
+ { type: 'paragraph', html: 'Ini adalah bantuan penulisan yang tidak bergantung pada negara. Alat ini tidak menemukan otoritas, menghitung tenggat, menjamin keterbukaan, mengajukan permintaan, atau memberi nasihat hukum. Gunakan aturan terbaru dari penerima sebagai rujukan.' },
36
+ { type: 'tip', title: 'Simpan jejak bukti', html: 'Simpan teks tepat yang dikirim, tanggal, tujuan, lampiran, dan tanda terima. Catatan ini membantu membandingkan balasan dengan pertanyaan yang benar-benar diajukan.' },
37
+ { type: 'title', text: 'Menyiapkan jawaban yang dapat digunakan', level: 2 },
38
+ { type: 'paragraph', html: 'Sebutkan bidang atau jenis catatan yang penting bagi tujuan Anda, lalu simpan permintaan dan balasan yang diterima bersama-sama.' },
39
+ ], faq: [
40
+ { question: 'Apa yang sebaiknya saya minta?', answer: 'Mintalah catatan, bidang, kumpulan informasi, atau jumlah yang dapat dikenali dan pisahkan kumpulan yang tidak berkaitan.' },
41
+ { question: 'Apakah alat ini tahu otoritasnya?', answer: 'Tidak. Periksa penerima, wilayah kewenangan, tenggat, pengecualian, dan kanal dengan petunjuk setempat yang terbaru.' },
42
+ { question: 'Mengapa tanggal dan tempat penting?', answer: 'Keduanya membatasi pencarian. Gunakan arti tanggal yang sama dan sebutkan tempat atau program.' },
43
+ { question: 'Bolehkah meminta data sensitif?', answer: 'Masukkan hanya rincian yang perlu dan periksa panduan akses serta privasi terbaru.' },
44
+ ], bibliography, howTo: [
45
+ { name: 'Sebutkan penerima', text: 'Masukkan otoritas yang mungkin dan periksa kanal terbarunya.' },
46
+ { name: 'Pisahkan informasi', text: 'Tulis satu catatan, bidang, atau kumpulan yang dapat dikenali per baris.' },
47
+ { name: 'Batasi pencarian', text: 'Tambahkan tanggal yang konsisten, cakupan, dan pengenal.' },
48
+ { name: 'Pilih rincian pengiriman', text: 'Nyatakan format dan jalur balasan tanpa menganggap berkas baru tersedia.' },
49
+ { name: 'Periksa dan simpan salinan', text: 'Selesaikan peringatan dan simpan teks bersama rincian pengiriman.' },
50
+ ], schemas: [softwareApplication, faqPage, howTo] as unknown as Record<string, unknown>[] };
@@ -0,0 +1,50 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { AccessRequestLocaleContent } from '../entry';
4
+ import type { AccessRequestUI } from '../ui';
5
+
6
+ const ui: AccessRequestUI = {
7
+ eyebrow: 'CIVIC PAPER TRAIL', introHeading: 'Dai forma alla domanda prima di inviarla.', introText: 'Inizia dal destinatario, indica un insieme di informazioni richiedibile per riga e aggiungi i confini che rendono il documento rintracciabile.', targetHeading: 'Imposta il destinatario', targetPrompt: 'Chi può rispondere?', questionPrompt: 'Un insieme alla volta', boundaryHeading: 'Traccia i confini', boundaryPrompt: 'Cosa lo rende rintracciabile?', reviewWarningsHeading: 'Controlla prima dell invio',
8
+ recipientLabel: 'Autorità o destinatario', recipientPlaceholder: 'Ufficio, ente, archivio o organizzazione', subjectLabel: 'Oggetto', subjectPlaceholder: 'I documenti o le informazioni da trovare', itemsLabel: 'Informazioni richieste', itemPlaceholder: 'Chiedi un insieme, documento o campo identificabile', addItem: 'Aggiungi un altra riga', removeItem: 'Rimuovi questa riga', periodLabel: 'Periodo', periodFrom: 'Dal', periodTo: 'Al', geographyLabel: 'Ambito geografico', geographyPlaceholder: 'Città, distretto, sede, area del programma o nazionale', formatLabel: 'Formato preferito', formatPlaceholder: 'Scegli un formato di consegna', formatEmail: 'Copia elettronica via email', formatCsv: 'Tabella leggibile dalla macchina come CSV', formatPdf: 'PDF o documento ricercabile', formatOriginal: 'Formato originale conservato dall autorità', deliveryLabel: 'Dettagli di consegna', deliveryPlaceholder: 'Email, indirizzo postale o modo sicuro per rispondere', contactLabel: 'Contatto facoltativo', contactPlaceholder: 'Telefono, riferimento o canale di risposta preferito', attachmentsLabel: 'Allegati o identificativi', attachmentsPlaceholder: 'Nomi file, numeri, link o contesto utile a trovare i documenti', noAttachments: 'Non servono allegati o identificativi', savedCopy: 'Ho salvato una copia del testo finale', presetLabel: 'Parti da un esempio mirato', presetRecords: 'Documenti delle riunioni', presetSpending: 'Documenti di spesa', presetMeetings: 'Reclami sui servizi', generateAction: 'Crea bozza della richiesta', resetAction: 'Cancella bozza', resultHeading: 'Bozza della richiesta', resultIntro: 'Controlla ogni fatto e modifica il testo finale prima di copiarlo. Guide e avvisi restano fuori dal testo che invierai.', copyAction: 'Copia Markdown', printAction: 'Stampa o salva come PDF', copied: 'Copiato negli appunti', noResult: 'Aggiungi destinatario, oggetto e almeno una riga per vedere la traccia.', checklistHeading: 'Tracciabilità prima dell invio', completeLabel: 'Pronto', reviewLabel: 'Da controllare', checklistRecipient: 'Destinatario indicato', checklistScope: 'Ogni riga identifica un insieme richiedibile', checklistPeriod: 'Periodo delimitato', checklistFormat: 'Formato preferito indicato', checklistAttachments: 'Allegati e identificativi considerati', checklistCopy: 'Una copia è stata salvata', methodHeading: 'Metodo applicato', methodText: 'Il generatore trasforma un tema ampio in una richiesta tracciabile: un insieme per riga, un destinatario indicato, un intervallo di date, un confine geografico, un formato preferito e un canale di risposta utilizzabile. Riordina solo i dettagli forniti e non aggiunge mai base giuridica, scadenza, autorità o fatto.', limitsHeading: 'Cosa non decide questo strumento', limitsText: 'Non identifica l autorità competente, non determina una scadenza prevista dalla legge, non garantisce la divulgazione, non invia la richiesta, non classifica i documenti secondo il diritto locale e non offre consulenza legale. Controlla le istruzioni aggiornate del destinatario.', edgeCasesHeading: 'Casi limite e avvisi sui dati', edgeCasesText: 'Frasi ampie come "tutti i documenti" possono essere difficili da cercare. Evita termini indefiniti, significati diversi per le date, dati personali inutili e richieste di una nuova analisi quando ti serve un documento esistente. Alcuni formati potrebbero non essere disponibili.', statusReady: 'La bozza contiene la traccia minima completa.', statusReview: 'La bozza è un buon punto di partenza ma va controllata.', missingRecipient: 'Indica autorità o destinatario prima dell invio.', missingItems: 'Aggiungi almeno un insieme di informazioni specifico.', missingPeriod: 'Aggiungi data iniziale e finale o spiega il limite mancante.', broadItem: 'Questa riga potrebbe essere troppo ampia. Indica tipo di documento, campo, evento o insieme misurabile.', missingFormat: 'Scegli come ricevere le informazioni.', missingGeography: 'Aggiungi un luogo o spiega perché la richiesta è nazionale.', missingDelivery: 'Aggiungi un canale a cui il destinatario possa rispondere.', noCopyWarning: 'Salva testo finale e dettagli di invio prima di trasmettere.', itemNumber: 'Riga della richiesta',
9
+ };
10
+ const softwareApplication: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Generatore di richieste di accesso alle informazioni', applicationCategory: 'UtilitiesApplication', operatingSystem: 'Any', description: 'Scrivi una richiesta precisa e tracciabile con ambito, date, formato e canale di risposta.', url: 'https://gamebob.dev/it/generatore-richiesta-accesso-informazioni', offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' } };
11
+ const faqPage: FAQPage = { '@type': 'FAQPage', mainEntity: [
12
+ { '@type': 'Question', name: 'Che cosa dovrei chiedere?', acceptedAnswer: { '@type': 'Answer', text: 'Chiedi un insieme di informazioni, documento, campo o conteggio misurabile identificabile. Separa gli insiemi indipendenti in righe diverse.' } },
13
+ { '@type': 'Question', name: 'Questo strumento conosce l autorità da contattare?', acceptedAnswer: { '@type': 'Answer', text: 'No. Devi individuare il destinatario probabile e controllare le sue istruzioni attuali. Il generatore non stabilisce competenza, scadenze o eccezioni.' } },
14
+ { '@type': 'Question', name: 'Perché contano date e ambito geografico?', acceptedAnswer: { '@type': 'Answer', text: 'Restringono la ricerca e riducono l ambiguità. Usa lo stesso significato per le date e indica luogo o programma.' } },
15
+ { '@type': 'Question', name: 'Posso chiedere dati personali o sensibili?', acceptedAnswer: { '@type': 'Answer', text: 'Includi solo dettagli necessari e appropriati. Le regole di accesso e privacy variano, quindi controlla le indicazioni del destinatario.' } },
16
+ ] };
17
+ const howTo: HowTo = { '@type': 'HowTo', name: 'Scrivere una richiesta di informazioni precisa', step: [
18
+ { '@type': 'HowToStep', name: 'Indica il destinatario', text: 'Inserisci l autorità, l ufficio, l archivio o l organizzazione che probabilmente conserva l informazione e verifica il canale attuale.' },
19
+ { '@type': 'HowToStep', name: 'Dividi le informazioni', text: 'Scrivi un insieme richiedibile per riga. Indica tipo di documento, campi, evento o conteggio invece di un intero argomento.' },
20
+ { '@type': 'HowToStep', name: 'Delimita la ricerca', text: 'Aggiungi date iniziale e finale, ambito geografico e identificativi utili a trovare il materiale.' },
21
+ { '@type': 'HowToStep', name: 'Scegli la consegna', text: 'Indica un formato preferito e un canale affidabile di risposta senza presumere che si possa creare un nuovo formato.' },
22
+ { '@type': 'HowToStep', name: 'Controlla e conserva una copia', text: 'Leggi il Markdown, risolvi gli avvisi, salva testo e dettagli di invio e usa il canale verificato.' },
23
+ ] };
24
+ export const content: AccessRequestLocaleContent = { slug: 'generatore-richiesta-accesso-informazioni', title: 'Generatore di richieste di accesso alle informazioni', description: 'Scrivi una richiesta precisa con destinatario, righe specifiche, date, ambito geografico, formato e controllo prima dell invio.', ui, seo: [
25
+ { type: 'title', text: 'Scrivere una richiesta di informazioni rintracciabile', level: 2 },
26
+ { type: 'paragraph', html: 'Una richiesta può essere cortese ma difficile da gestire se l oggetto è troppo ampio, mancano le date o riunisce domande diverse. Questo generatore trasforma i dettagli che conosci in una traccia verificabile: destinatario, documenti cercati, periodo, luogo e modo di ricevere risposta.' },
27
+ { type: 'title', text: 'Dare un confine alla ricerca', level: 2 },
28
+ { type: 'paragraph', html: 'Usa lo stesso significato per le due date, come pubblicazione, riunione o pagamento. Aggiungi luogo, programma, sede o organizzazione. Se un confine è davvero ignoto, rendilo visibile nel controllo e non inventarlo.' },
29
+ { type: 'table', headers: ['Dettaglio', 'Formula utile', 'Decisione supportata'], rows: [['Insieme di informazioni', 'Ordini del giorno finali e verbali approvati', 'Quali documenti cercare?'], ['Periodo', 'Dal 01/01/2025 al 31/12/2025', 'Quali documenti includere?'], ['Ambito geografico', 'Area servizi del distretto nord', 'Quale luogo o programma?'], ['Formato', 'Tabella leggibile dalla macchina come CSV', 'Come verificare il risultato?']] },
30
+ { type: 'title', text: 'Controllare la bozza prima dell invio', level: 2 },
31
+ { type: 'paragraph', html: 'Il testo generato tiene insieme i fatti e separa le indicazioni nella fascia di controllo. Un elemento completo segnala che il dettaglio minimo è presente; un avviso invita a precisare documento, campo, evento o insieme misurabile.' },
32
+ { type: 'list', items: ['Conferma che il destinatario accetti ora questo tipo di richiesta.', 'Controlla che ogni riga chieda un insieme identificabile e non un intero argomento.', 'Usa un periodo chiuso e un ambito geografico coerente.', 'Indica un formato preferito senza supporre che debba essere creato un file nuovo.', 'Conserva allegati, identificativi, testo finale e canale usato.'] },
33
+ { type: 'tip', title: 'Preciso non significa esaustivo', html: 'Una richiesta breve con tipo di documento, periodo e identificativi utili è spesso più facile da cercare di un lungo racconto. Mantieni il contesto che aiuta a localizzare i documenti.' },
34
+ { type: 'title', text: 'Conoscere i limiti del generatore', level: 2 },
35
+ { type: 'paragraph', html: 'È un aiuto di scrittura indipendente dal paese. Non identifica l autorità, calcola scadenze, garantisce la divulgazione, invia la richiesta o fornisce consulenza legale. Per questi aspetti valgono le regole aggiornate del destinatario.' },
36
+ { type: 'tip', title: 'Conserva la traccia', html: 'Salva il testo esatto, la data, il destinatario, gli allegati e ogni ricevuta. Potrai confrontare la risposta con la domanda realmente inviata.' },
37
+ { type: 'title', text: 'Preparare una risposta utilizzabile', level: 2 },
38
+ { type: 'paragraph', html: 'Indica i campi o il tipo di documento utile al tuo obiettivo e conserva insieme la richiesta e ogni risposta ricevuta.' },
39
+ ], faq: [
40
+ { question: 'Che cosa dovrei chiedere?', answer: 'Chiedi un documento, campo, insieme o conteggio identificabile e separa gli insiemi indipendenti.' },
41
+ { question: 'Lo strumento conosce l autorità?', answer: 'No. Verifica destinatario, competenza, scadenza, eccezioni e canale con le istruzioni locali aggiornate.' },
42
+ { question: 'Perché contano date e luogo?', answer: 'Delimitano la ricerca. Usa lo stesso significato per le date e indica luogo o programma.' },
43
+ { question: 'Posso chiedere dati sensibili?', answer: 'Includi solo i dettagli necessari e controlla le regole aggiornate su accesso e privacy.' },
44
+ ], bibliography, howTo: [
45
+ { name: 'Indica il destinatario', text: 'Inserisci l autorità probabile e verifica il suo canale attuale.' },
46
+ { name: 'Dividi le informazioni', text: 'Scrivi un documento, campo o insieme identificabile per riga.' },
47
+ { name: 'Delimita la ricerca', text: 'Aggiungi date coerenti, ambito e identificativi.' },
48
+ { name: 'Scegli la consegna', text: 'Indica formato e canale di risposta senza presumere un file nuovo.' },
49
+ { name: 'Controlla e conserva una copia', text: 'Risolvi gli avvisi e salva testo e dettagli di invio.' },
50
+ ], schemas: [softwareApplication, faqPage, howTo] as unknown as Record<string, unknown>[] };
@@ -0,0 +1,50 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { AccessRequestLocaleContent } from '../entry';
4
+ import type { AccessRequestUI } from '../ui';
5
+
6
+ const ui: AccessRequestUI = {
7
+ eyebrow: 'CIVIC PAPER TRAIL', introHeading: '送る前に質問の形を整えます。', introText: '宛先から始め、1行に1つの請求可能な情報集合を書き、記録を見つけやすくする範囲を加えます。', targetHeading: '宛先を決める', targetPrompt: '誰が答えられますか?', questionPrompt: '一度に1つの集合', boundaryHeading: '範囲を定める', boundaryPrompt: '何が見つけやすさを作りますか?', reviewWarningsHeading: '送信前に確認',
8
+ recipientLabel: '機関または宛先', recipientPlaceholder: '部署、機関、アーカイブ、組織', subjectLabel: '件名', subjectPlaceholder: '探したい記録や情報', itemsLabel: '請求する情報', itemPlaceholder: '特定できる情報集合、記録、項目を1つ求めます', addItem: '請求行を追加', removeItem: 'この行を削除', periodLabel: '期間', periodFrom: '開始', periodTo: '終了', geographyLabel: '地理的範囲', geographyPlaceholder: '市区町村、地区、場所、事業地域、全国', formatLabel: '希望形式', formatPlaceholder: '提供形式を選択', formatEmail: 'メールによる電子コピー', formatCsv: 'CSVなどの機械可読表', formatPdf: '検索可能なPDFまたは文書', formatOriginal: '機関が保有する原形式', deliveryLabel: '受け取り方法', deliveryPlaceholder: 'メール、郵送先、安全な返信方法', contactLabel: '任意の連絡先', contactPlaceholder: '電話、参照番号、希望する返信経路', attachmentsLabel: '添付または識別情報', attachmentsPlaceholder: 'ファイル名、記録番号、リンク、検索に役立つ背景', noAttachments: '添付や識別情報は不要', savedCopy: '完成した文章のコピーを保存しました', presetLabel: '具体例から始める', presetRecords: '会議記録', presetSpending: '支出記録', presetMeetings: 'サービスへの苦情', generateAction: '請求文を作成', resetAction: '下書きを消去', resultHeading: '請求文の下書き', resultIntro: 'すべての事実を確認し、コピーする前に最終文を編集します。案内と警告は送信文の外に残ります。', copyAction: 'Markdownをコピー', printAction: '印刷またはPDF保存', copied: 'クリップボードにコピーしました', noResult: '宛先、件名、少なくとも1行の請求を追加すると記録が表示されます。', checklistHeading: '送信前の追跡性', completeLabel: '準備完了', reviewLabel: '確認', checklistRecipient: '宛先を記載', checklistScope: '各行が1つの請求可能な集合を示す', checklistPeriod: '期間を限定', checklistFormat: '希望形式を記載', checklistAttachments: '添付と識別情報を確認', checklistCopy: '記録用コピーを保存', methodHeading: '適用した方法', methodText: 'この作成ツールは、広いテーマを追跡可能な請求に変えます。1行に1つの情報集合、明確な宛先、日付範囲、地理的境界、希望形式、返信経路を置きます。入力した内容だけを並べ替え、法的根拠、期限、機関、事実を追加しません。', limitsHeading: 'このツールが決めないこと', limitsText: '管轄機関、法定期限、開示の保証、提出手続、現地法上の分類、法律相談は行いません。送信前に受け取り先の最新の案内を確認してください。', edgeCasesHeading: '例外的な場合とデータの注意', edgeCasesText: '「すべての文書」のような広い表現は検索が難しくなります。曖昧な用語、異なる意味の日付、不要な個人情報、既存記録ではなく新しい分析を求める表現を避けます。希望形式が利用できないこともあります。', statusReady: '下書きに最低限必要な追跡情報があります。', statusReview: '下書きは出発点として使えますが確認が必要です。', missingRecipient: '送信前に機関または宛先を記載してください。', missingItems: '具体的な情報集合を1つ以上追加してください。', missingPeriod: '開始日と終了日を追加するか、不明な範囲を説明してください。', broadItem: 'この行は広すぎる可能性があります。記録種別、項目、出来事、測定可能な集合を指定してください。', missingFormat: '情報の提供方法を選んでください。', missingGeography: '場所を追加するか、全国対象である理由を説明してください。', missingDelivery: '宛先が返信できる経路を追加してください。', noCopyWarning: '送信前に最終文と提出情報を保存してください。', itemNumber: '請求行',
9
+ };
10
+ const softwareApplication: SoftwareApplication = { '@type': 'SoftwareApplication', name: '情報公開請求文作成ツール', applicationCategory: 'UtilitiesApplication', operatingSystem: 'Any', description: '範囲、日付、形式、返信方法を含む明確で追跡可能な情報請求を作成します。', url: 'https://gamebob.dev/ja/access-to-information-request-builder', offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' } };
11
+ const faqPage: FAQPage = { '@type': 'FAQPage', mainEntity: [
12
+ { '@type': 'Question', name: '何を請求すればよいですか?', acceptedAnswer: { '@type': 'Answer', text: '特定できる情報集合、記録、項目、測定可能な件数を求めます。関係のない集合は別の請求行に分けてください。' } },
13
+ { '@type': 'Question', name: '連絡先の機関をこのツールは知っていますか?', acceptedAnswer: { '@type': 'Answer', text: 'いいえ。情報を持つと思われる宛先を自分で確認し、最新の案内を調べます。管轄、期限、例外、提出方法は判断しません。' } },
14
+ { '@type': 'Question', name: '日付と地理的範囲はなぜ重要ですか?', acceptedAnswer: { '@type': 'Answer', text: '検索範囲を狭め、曖昧さを減らすためです。両端の日付を同じ意味で使い、場所や事業地域を記載します。' } },
15
+ { '@type': 'Question', name: '個人情報や機微情報を請求できますか?', acceptedAnswer: { '@type': 'Answer', text: '必要で適切な情報だけを含めてください。アクセスとプライバシーの規則は地域により異なるため、宛先の案内を確認します。' } },
16
+ ] };
17
+ const howTo: HowTo = { '@type': 'HowTo', name: '正確な情報請求を作成する', step: [
18
+ { '@type': 'HowToStep', name: '宛先を記載', text: '情報を持つと思われる機関、部署、アーカイブ、組織を入力し、現在の請求経路を確認します。' },
19
+ { '@type': 'HowToStep', name: '情報を分ける', text: '1行に1つの請求可能な集合を書き、記録種別、項目、出来事、件数を指定します。' },
20
+ { '@type': 'HowToStep', name: '検索を限定', text: '開始日、終了日、地理的範囲、記録を見つける識別情報を追加します。' },
21
+ { '@type': 'HowToStep', name: '提供方法を選択', text: '希望形式と確実な返信経路を記載しますが、新しい形式の作成を前提にしません。' },
22
+ { '@type': 'HowToStep', name: '確認してコピーを保存', text: 'Markdownを読み、確認項目を解決し、文章と提出情報を保存してから確認済みの経路で送信します。' },
23
+ ] };
24
+ export const content: AccessRequestLocaleContent = { slug: 'access-to-information-request-builder', title: '情報公開請求文作成ツール', description: '宛先、具体的な請求行、日付、地理的範囲、形式、送信前の確認項目を含む情報請求を作成します。', ui, seo: [
25
+ { type: 'title', text: '見つけやすい情報請求を書く', level: 2 },
26
+ { type: 'paragraph', html: 'テーマが広い、日付がない、関係のない質問が混ざると、丁寧な請求でも回答が難しくなります。このツールは、宛先、求める記録、期間、場所、返信方法という既知の情報を確認可能な記録に整理します。' },
27
+ { type: 'title', text: '検索に境界を置く', level: 2 },
28
+ { type: 'paragraph', html: '両端の日付には公開日、会議日、支払日など同じ意味を使います。場所、事業、拠点、組織も加えます。境界が本当に不明なら確認項目に残し、推測で埋めません。' },
29
+ { type: 'table', headers: ['詳細', '使える表現', '支える判断'], rows: [['情報集合', '最終議題と承認済み議事録', 'どの記録を検索するか'], ['期間', '2025年1月1日から12月31日まで', 'どの記録を含めるか'], ['地理的範囲', '北地区のサービス区域', 'どの場所や事業か'], ['形式', 'CSVなどの機械可読表', '結果をどう再利用、確認するか']] },
30
+ { type: 'title', text: '送信前に下書きを確認する', level: 2 },
31
+ { type: 'paragraph', html: '生成された文は事実をまとめ、案内を別の確認欄に置きます。完了項目は最低限の詳細があることを示し、警告は記録、項目、出来事、測定可能な集合をより具体化するよう促します。' },
32
+ { type: 'list', items: ['宛先が現在この種類の請求を受け付けているか確認します。', '各行がテーマ全体ではなく1つの特定可能な情報集合を求めているか確認します。', '閉じた日付範囲と質問に合う地理的境界を使います。', '機関が新しいファイルを作ることを前提にせず希望形式を示します。', '添付、識別情報、最終文、提出経路を記録します。'] },
33
+ { type: 'tip', title: '具体的でも網羅的とは限らない', html: '記録種別、期間、識別情報を含む短い請求は、長い説明より検索しやすいことがあります。記録の場所を示す背景だけを残します。' },
34
+ { type: 'title', text: 'ツールの判断範囲を知る', level: 2 },
35
+ { type: 'paragraph', html: 'これは国に依存しない文章作成補助です。管轄機関、法定期限、開示、形式、提出、法律相談を決めません。これらは受け取り先の最新の規則で確認してください。' },
36
+ { type: 'tip', title: '証拠の記録を残す', html: '送信した文章、日付、宛先、添付、受領確認を保存します。実際の質問と回答を比較できます。' },
37
+ { type: 'title', text: '使える回答に備える', level: 2 },
38
+ { type: 'paragraph', html: '目的に必要な項目や記録種別を示し、請求文と受け取った回答を一緒に保存します。' },
39
+ ], faq: [
40
+ { question: '何を請求すればよいですか?', answer: '特定できる記録、項目、情報集合、件数を求め、関係のない集合は分けます。' },
41
+ { question: 'ツールは宛先の機関を知っていますか?', answer: 'いいえ。最新の地域案内で宛先、管轄、期限、例外、提出経路を確認します。' },
42
+ { question: '日付と場所はなぜ重要ですか?', answer: '検索を限定します。日付の意味をそろえ、場所や事業を記載します。' },
43
+ { question: '機微情報を請求できますか?', answer: '必要な情報だけを含め、アクセスとプライバシーの最新案内を確認します。' },
44
+ ], bibliography, howTo: [
45
+ { name: '宛先を記載', text: '可能性のある機関を入力し、現在の経路を確認します。' },
46
+ { name: '情報を分ける', text: '1行に1つの記録、項目、情報集合を書きます。' },
47
+ { name: '検索を限定', text: '日付、範囲、識別情報を追加します。' },
48
+ { name: '提供方法を選択', text: '形式と返信経路を示し、新しいファイルを前提にしません。' },
49
+ { name: '確認してコピーを保存', text: '警告を解決し、文章と提出情報を保存します。' },
50
+ ], schemas: [softwareApplication, faqPage, howTo] as unknown as Record<string, unknown>[] };
@@ -0,0 +1,50 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { AccessRequestLocaleContent } from '../entry';
4
+ import type { AccessRequestUI } from '../ui';
5
+
6
+ const ui: AccessRequestUI = {
7
+ eyebrow: 'CIVIC PAPER TRAIL', introHeading: '보내기 전에 질문의 형태를 다듬으세요.', introText: '수신처에서 시작해 한 줄에 요청 가능한 정보 묶음 하나를 쓰고, 기록을 찾기 쉽게 하는 범위를 추가하세요.', targetHeading: '수신처 정하기', targetPrompt: '누가 답할 수 있나요?', questionPrompt: '한 번에 한 묶음', boundaryHeading: '범위 정하기', boundaryPrompt: '무엇이 찾기 쉽게 만드나요?', reviewWarningsHeading: '보내기 전 검토',
8
+ recipientLabel: '기관 또는 수신자', recipientPlaceholder: '부서, 기관, 기록 보관소 또는 조직', subjectLabel: '제목', subjectPlaceholder: '찾고 싶은 기록이나 정보', itemsLabel: '요청 정보', itemPlaceholder: '식별 가능한 정보 묶음, 기록 또는 항목 하나를 요청하세요', addItem: '요청 줄 추가', removeItem: '이 줄 삭제', periodLabel: '기간', periodFrom: '시작', periodTo: '종료', geographyLabel: '지리적 범위', geographyPlaceholder: '도시, 구역, 장소, 사업 지역 또는 전국', formatLabel: '선호 형식', formatPlaceholder: '제공 형식 선택', formatEmail: '이메일 전자 사본', formatCsv: 'CSV와 같은 기계 판독 표', formatPdf: '검색 가능한 PDF 또는 문서', formatOriginal: '기관이 보유한 원래 형식', deliveryLabel: '회신 정보', deliveryPlaceholder: '이메일, 우편 주소 또는 안전한 회신 방법', contactLabel: '선택 연락처', contactPlaceholder: '전화, 참조 번호 또는 선호 회신 경로', attachmentsLabel: '첨부 파일 또는 식별자', attachmentsPlaceholder: '파일 이름, 기록 번호, 링크 또는 검색에 도움이 되는 맥락', noAttachments: '첨부 파일이나 식별자가 필요하지 않음', savedCopy: '최종 문서 사본을 저장했습니다', presetLabel: '구체적인 예시로 시작', presetRecords: '회의 기록', presetSpending: '지출 기록', presetMeetings: '서비스 민원', generateAction: '요청 초안 만들기', resetAction: '초안 지우기', resultHeading: '요청 초안', resultIntro: '모든 사실을 확인하고 복사하기 전에 최종 문서를 편집하세요. 안내와 경고는 보낼 문서 밖에 남습니다.', copyAction: 'Markdown 복사', printAction: '인쇄 또는 PDF 저장', copied: '클립보드에 복사됨', noResult: '수신자, 제목, 요청 줄을 하나 이상 추가하면 기록이 표시됩니다.', checklistHeading: '전송 전 추적성', completeLabel: '준비됨', reviewLabel: '검토', checklistRecipient: '수신자가 지정됨', checklistScope: '각 줄이 요청 가능한 정보 묶음 하나를 지정함', checklistPeriod: '기간이 제한됨', checklistFormat: '선호 형식이 지정됨', checklistAttachments: '첨부 파일과 식별자를 확인함', checklistCopy: '기록용 사본을 저장함', methodHeading: '적용한 방법', methodText: '이 도구는 넓은 주제를 추적 가능한 요청으로 바꿉니다. 한 줄에 한 정보 묶음, 지정된 수신자, 명확한 날짜 범위, 지리적 경계, 선호 형식, 회신 경로를 둡니다. 입력한 세부 정보만 정리하며 법적 근거, 기한, 기관, 사실을 추가하지 않습니다.', limitsHeading: '이 도구가 결정하지 않는 것', limitsText: '관할 기관, 법정 기한, 공개 보장, 제출 절차, 현지법상 기록 분류 또는 법률 자문을 제공하지 않습니다. 보내기 전에 수신 기관의 최신 안내를 확인하세요.', edgeCasesHeading: '예외 상황과 데이터 주의', edgeCasesText: '"모든 문서"처럼 넓은 표현은 검색하기 어렵습니다. 정의되지 않은 용어, 서로 다른 날짜 의미, 불필요한 개인정보, 기존 기록이 아닌 새 분석을 요구하는 표현을 피하세요. 원하는 형식을 이용할 수 없을 수도 있습니다.', statusReady: '초안에 필요한 최소 추적 정보가 모두 있습니다.', statusReview: '초안은 출발점으로 쓸 수 있지만 검토가 필요합니다.', missingRecipient: '보내기 전에 기관 또는 수신자를 지정하세요.', missingItems: '구체적인 정보 묶음을 하나 이상 추가하세요.', missingPeriod: '시작일과 종료일을 추가하거나 빠진 범위를 설명하세요.', broadItem: '이 줄은 너무 넓을 수 있습니다. 기록 유형, 항목, 사건 또는 측정 가능한 묶음을 지정하세요.', missingFormat: '정보를 받을 방법을 선택하세요.', missingGeography: '장소를 추가하거나 전국 요청인 이유를 설명하세요.', missingDelivery: '수신자가 답할 수 있는 경로를 추가하세요.', noCopyWarning: '보내기 전에 최종 문서와 제출 정보를 저장하세요.', itemNumber: '요청 줄',
9
+ };
10
+ const softwareApplication: SoftwareApplication = { '@type': 'SoftwareApplication', name: '정보공개 요청서 작성기', applicationCategory: 'UtilitiesApplication', operatingSystem: 'Any', description: '범위, 날짜, 형식, 회신 경로가 명확한 추적 가능한 정보 요청을 작성합니다.', url: 'https://gamebob.dev/ko/access-to-information-request-builder', offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' } };
11
+ const faqPage: FAQPage = { '@type': 'FAQPage', mainEntity: [
12
+ { '@type': 'Question', name: '무엇을 요청해야 하나요?', acceptedAnswer: { '@type': 'Answer', text: '식별 가능한 정보 묶음, 기록, 항목 또는 측정 가능한 수치를 요청하세요. 관련 없는 묶음은 별도 줄로 나누세요.' } },
13
+ { '@type': 'Question', name: '연락할 기관을 도구가 알고 있나요?', acceptedAnswer: { '@type': 'Answer', text: '아니요. 가능성 있는 수신자를 직접 찾고 최신 안내를 확인해야 합니다. 관할, 기한, 예외, 제출 경로는 판단하지 않습니다.' } },
14
+ { '@type': 'Question', name: '날짜와 지리적 범위가 왜 중요한가요?', acceptedAnswer: { '@type': 'Answer', text: '검색 범위를 좁히고 모호함을 줄입니다. 같은 날짜 의미를 사용하고 장소나 사업 지역을 적으세요.' } },
15
+ { '@type': 'Question', name: '개인정보나 민감한 정보를 요청해도 되나요?', acceptedAnswer: { '@type': 'Answer', text: '필요하고 적절한 정보만 포함하세요. 접근 및 개인정보 규칙은 지역마다 다르므로 수신자의 안내를 확인하세요.' } },
16
+ ] };
17
+ const howTo: HowTo = { '@type': 'HowTo', name: '정확한 정보 요청서 작성하기', step: [
18
+ { '@type': 'HowToStep', name: '수신자 지정', text: '정보를 보유했을 가능성이 있는 기관, 부서, 기록 보관소 또는 조직을 입력하고 현재 요청 경로를 확인합니다.' },
19
+ { '@type': 'HowToStep', name: '정보 나누기', text: '한 줄에 요청 가능한 묶음 하나를 쓰고 기록 유형, 항목, 사건 또는 수치를 지정합니다.' },
20
+ { '@type': 'HowToStep', name: '검색 범위 제한', text: '시작일, 종료일, 지리적 범위와 자료를 찾는 데 필요한 식별자를 추가합니다.' },
21
+ { '@type': 'HowToStep', name: '제공 방법 선택', text: '선호 형식과 신뢰할 수 있는 회신 경로를 적되 새 형식 제작을 전제로 하지 않습니다.' },
22
+ { '@type': 'HowToStep', name: '검토하고 사본 보관', text: 'Markdown을 읽고 검토 항목을 해결한 뒤 문서와 제출 정보를 저장하고 확인된 경로로 보냅니다.' },
23
+ ] };
24
+ export const content: AccessRequestLocaleContent = { slug: 'access-to-information-request-builder', title: '정보공개 요청서 작성기', description: '수신자, 구체적인 요청 줄, 날짜, 지리적 범위, 형식, 전송 전 확인 목록을 포함한 정보 요청서를 작성합니다.', ui, seo: [
25
+ { type: 'title', text: '찾기 쉬운 정보 요청서 쓰기', level: 2 },
26
+ { type: 'paragraph', html: '주제가 넓거나 날짜가 빠졌거나 여러 질문을 섞으면 정중한 요청도 답하기 어렵습니다. 이 도구는 알고 있는 수신자, 기록, 기간, 장소, 회신 방법을 검토 가능한 기록으로 정리합니다.' },
27
+ { type: 'title', text: '검색에 경계 만들기', level: 2 },
28
+ { type: 'paragraph', html: '기간 양끝에 게시일, 회의일, 지급일처럼 같은 의미의 날짜를 사용하세요. 장소, 사업, 지점, 조직도 추가합니다. 경계를 모르면 확인 목록에 남기고 추측하지 않습니다.' },
29
+ { type: 'table', headers: ['요청 정보', '유용한 표현', '돕는 판단'], rows: [['정보 묶음', '최종 안건과 승인된 회의록', '어떤 기록을 검색할까?'], ['기간', '2025년 1월 1일부터 12월 31일까지', '어떤 기록을 포함할까?'], ['지리 범위', '북부 구역 서비스 지역', '어느 장소나 사업일까?'], ['형식', 'CSV와 같은 기계 판독 표', '결과를 어떻게 확인할까?']] },
30
+ { type: 'title', text: '보내기 전에 초안 확인하기', level: 2 },
31
+ { type: 'paragraph', html: '생성된 문서는 사실을 함께 두고 안내를 별도 검토 영역에 둡니다. 완료 표시는 최소 세부 정보가 있음을 뜻하고, 경고는 기록 유형, 항목, 사건 또는 측정 가능한 묶음을 더 구체적으로 쓰라고 알려 줍니다.' },
32
+ { type: 'list', items: ['수신 기관이 현재 이런 요청을 받는지 확인합니다.', '각 줄이 주제 전체가 아니라 하나의 식별 가능한 묶음을 요청하는지 확인합니다.', '닫힌 날짜 범위와 질문에 맞는 지리적 경계를 사용합니다.', '기관이 새 파일을 만들어야 한다고 가정하지 않고 선호 형식을 적습니다.', '첨부, 식별자, 최종 문서, 제출 경로를 기록합니다.'] },
33
+ { type: 'tip', title: '구체적이라고 모두 포함할 필요는 없습니다', html: '기록 유형, 기간, 식별자가 있는 짧은 요청은 긴 설명보다 검색하기 쉬울 수 있습니다. 기록을 찾는 데 필요한 맥락만 남기세요.' },
34
+ { type: 'title', text: '도구가 판단하지 않는 범위', level: 2 },
35
+ { type: 'paragraph', html: '이 도구는 국가별 법률을 판단하지 않는 작성 보조입니다. 관할 기관, 법정 기한, 공개 여부, 형식, 제출 또는 법률 자문을 결정하지 않습니다. 해당 내용은 수신 기관의 최신 규칙을 확인하세요.' },
36
+ { type: 'tip', title: '증거의 흔적을 보관하세요', html: '보낸 문서, 날짜, 수신처, 첨부와 접수 확인을 저장하면 실제 질문과 답변을 비교할 수 있습니다.' },
37
+ { type: 'title', text: '활용할 수 있는 답변 준비하기', level: 2 },
38
+ { type: 'paragraph', html: '목적에 필요한 항목이나 기록 유형을 적고 요청서와 받은 답변을 함께 보관하세요.' },
39
+ ], faq: [
40
+ { question: '무엇을 요청해야 하나요?', answer: '식별 가능한 기록, 항목, 정보 묶음 또는 수치를 요청하고 관련 없는 묶음은 나누세요.' },
41
+ { question: '도구가 기관을 알고 있나요?', answer: '아니요. 최신 지역 안내로 수신자, 관할, 기한, 예외, 제출 경로를 확인하세요.' },
42
+ { question: '날짜와 장소는 왜 중요한가요?', answer: '검색을 제한합니다. 날짜 의미를 맞추고 장소나 사업을 적으세요.' },
43
+ { question: '민감한 정보를 요청할 수 있나요?', answer: '필요한 정보만 넣고 최신 접근 및 개인정보 안내를 확인하세요.' },
44
+ ], bibliography, howTo: [
45
+ { name: '수신자 지정', text: '가능성 있는 기관을 입력하고 현재 경로를 확인합니다.' },
46
+ { name: '정보 나누기', text: '한 줄에 식별 가능한 기록, 항목 또는 묶음 하나를 씁니다.' },
47
+ { name: '검색 범위 제한', text: '일관된 날짜, 범위, 식별자를 추가합니다.' },
48
+ { name: '제공 방법 선택', text: '새 파일을 가정하지 않고 형식과 회신 경로를 적습니다.' },
49
+ { name: '검토하고 사본 보관', text: '경고를 해결하고 문서와 제출 정보를 저장합니다.' },
50
+ ], schemas: [softwareApplication, faqPage, howTo] as unknown as Record<string, unknown>[] };
@@ -0,0 +1,49 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { AccessRequestLocaleContent } from '../entry';
4
+ import type { AccessRequestUI } from '../ui';
5
+
6
+ const ui: AccessRequestUI = {
7
+ eyebrow: 'CIVIC PAPER TRAIL', introHeading: 'Maak de vraag helder voordat je haar verstuurt.', introText: 'Begin met de ontvanger, noem per regel een opvraagbare informatieset en voeg de grenzen toe die het document vindbaar maken.', targetHeading: 'Bestemming instellen', targetPrompt: 'Wie kan antwoorden?', questionPrompt: 'Eén set per keer', boundaryHeading: 'Grenzen trekken', boundaryPrompt: 'Wat maakt het vindbaar?', reviewWarningsHeading: 'Controleren voor verzending', recipientLabel: 'Overheid of ontvanger', recipientPlaceholder: 'Afdeling, instantie, archief of organisatie', subjectLabel: 'Onderwerp', subjectPlaceholder: 'De documenten of informatie die je wilt vinden', itemsLabel: 'Gevraagde informatie', itemPlaceholder: 'Vraag om één herkenbare informatieset, registratie of veld', addItem: 'Nog een verzoekregel toevoegen', removeItem: 'Deze regel verwijderen', periodLabel: 'Periode', periodFrom: 'Van', periodTo: 'Tot', geographyLabel: 'Geografische reikwijdte', geographyPlaceholder: 'Stad, district, locatie, programmagebied of landelijk', formatLabel: 'Voorkeursformaat', formatPlaceholder: 'Kies een leveringsformaat', formatEmail: 'Elektronische kopie per e-mail', formatCsv: 'Machineleesbare tabel zoals CSV', formatPdf: 'Doorzoekbare pdf of document', formatOriginal: 'Oorspronkelijk formaat dat de instantie bezit', deliveryLabel: 'Gegevens voor levering', deliveryPlaceholder: 'E-mailadres, postgegevens of veilige antwoordmogelijkheid', contactLabel: 'Optionele contactgegevens', contactPlaceholder: 'Telefoon, referentienummer of voorkeurskanaal', attachmentsLabel: 'Bijlagen of herkenningsgegevens', attachmentsPlaceholder: 'Bestandsnamen, dossiernummers, links of nuttige context', noAttachments: 'Geen bijlagen of herkenningsgegevens nodig', savedCopy: 'Ik heb een kopie van de definitieve tekst opgeslagen', presetLabel: 'Begin met een gericht voorbeeld', presetRecords: 'Vergaderverslagen', presetSpending: 'Uitgavendossiers', presetMeetings: 'Klachten over diensten', generateAction: 'Verzoekconcept maken', resetAction: 'Concept wissen', resultHeading: 'Verzoekconcept', resultIntro: 'Controleer elk feit en bewerk de eindtekst voordat je kopieert. Uitleg en waarschuwingen blijven buiten de tekst die je verstuurt.', copyAction: 'Markdown kopiëren', printAction: 'Afdrukken of als pdf opslaan', copied: 'Gekopieerd naar klembord', noResult: 'Voeg een ontvanger, onderwerp en minstens één verzoekregel toe om de traceerbaarheid te zien.', checklistHeading: 'Traceerbaarheid voor verzending', completeLabel: 'Klaar', reviewLabel: 'Controleren', checklistRecipient: 'Ontvanger genoemd', checklistScope: 'Elke regel noemt één opvraagbare set', checklistPeriod: 'Periode begrensd', checklistFormat: 'Voorkeursformaat vermeld', checklistAttachments: 'Bijlagen en herkenningsgegevens bekeken', checklistCopy: 'Kopie voor eigen administratie opgeslagen', methodHeading: 'Toegepaste methode', methodText: 'De bouwer maakt van een breed onderwerp een traceerbaar verzoek: één informatieset per regel, een genoemde ontvanger, een duidelijk datumbereik, een geografische grens, een voorkeursformaat en een bruikbare antwoordroute. Hij ordent alleen wat je invult en voegt geen rechtsgrond, termijn, instantie of feit toe.', limitsHeading: 'Wat deze tool niet beslist', limitsText: 'De tool bepaalt niet welke instantie bevoegd is, berekent geen wettelijke termijn, garandeert geen openbaarmaking, dient het verzoek niet in, classificeert dossiers niet volgens lokaal recht en geeft geen juridisch advies. Controleer de actuele instructies van de ontvanger.', edgeCasesHeading: 'Uitzonderingen en waarschuwingen over gegevens', edgeCasesText: 'Brede formuleringen zoals "alle documenten" zijn moeilijk te doorzoeken. Vermijd onduidelijke termen, verschillende betekenissen van datums, onnodige persoonsgegevens en een verzoek om nieuwe analyse als je een bestaand document nodig hebt. Niet elk formaat is beschikbaar.', statusReady: 'Het concept bevat de volledige minimale traceerbaarheid.', statusReview: 'Het concept is bruikbaar als startpunt maar moet worden nagekeken.', missingRecipient: 'Noem de overheid of ontvanger voordat je verstuurt.', missingItems: 'Voeg minstens één specifieke informatieset toe.', missingPeriod: 'Voeg begin- en einddatum toe of leg de ontbrekende grens uit.', broadItem: 'Deze regel is mogelijk te breed. Noem een type registratie, veld, gebeurtenis of meetbare set.', missingFormat: 'Kies hoe de informatie geleverd moet worden.', missingGeography: 'Voeg een plaats toe of leg uit waarom het verzoek landelijk is.', missingDelivery: 'Voeg een route toe waarlangs de ontvanger kan antwoorden.', noCopyWarning: 'Sla eindtekst en verzendgegevens op voordat je verstuurt.', itemNumber: 'Verzoekregel',
8
+ };
9
+ const softwareApplication: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Bouwer voor verzoeken om toegang tot informatie', applicationCategory: 'UtilitiesApplication', operatingSystem: 'Any', description: 'Maak een precies en traceerbaar informatieverzoek met bereik, datums, formaat en antwoordroute.', url: 'https://gamebob.dev/nl/bouwer-verzoek-openbare-informatie', offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' } };
10
+ const faqPage: FAQPage = { '@type': 'FAQPage', mainEntity: [
11
+ { '@type': 'Question', name: 'Waar moet ik om vragen?', acceptedAnswer: { '@type': 'Answer', text: 'Vraag om een herkenbare informatieset, registratie, veld of meetbare telling. Splits losse sets op in verschillende regels.' } },
12
+ { '@type': 'Question', name: 'Weet deze tool welke instantie ik moet benaderen?', acceptedAnswer: { '@type': 'Answer', text: 'Nee. Zoek de vermoedelijke ontvanger zelf op en controleer de actuele instructies. De bouwer bepaalt geen bevoegdheid, termijnen of uitzonderingen.' } },
13
+ { '@type': 'Question', name: 'Waarom zijn datums en geografisch bereik belangrijk?', acceptedAnswer: { '@type': 'Answer', text: 'Ze beperken de zoekopdracht en verminderen dubbelzinnigheid. Gebruik dezelfde betekenis voor beide datums en noem plaats of programma.' } },
14
+ { '@type': 'Question', name: 'Kan ik persoonsgegevens of gevoelige informatie opvragen?', acceptedAnswer: { '@type': 'Answer', text: 'Neem alleen noodzakelijke en passende gegevens op. Regels voor toegang en privacy verschillen, dus controleer de aanwijzingen van de ontvanger.' } },
15
+ ] };
16
+ const howTo: HowTo = { '@type': 'HowTo', name: 'Een precies informatieverzoek opstellen', step: [
17
+ { '@type': 'HowToStep', name: 'Ontvanger noemen', text: 'Vul de instantie, afdeling, het archief of de organisatie in die de informatie vermoedelijk bezit en controleer het huidige kanaal.' },
18
+ { '@type': 'HowToStep', name: 'Informatie splitsen', text: 'Schrijf één opvraagbare set per regel. Noem registratietype, velden, gebeurtenis of telling.' },
19
+ { '@type': 'HowToStep', name: 'Zoekopdracht begrenzen', text: 'Voeg begin- en einddatum, geografisch bereik en herkenningsgegevens toe.' },
20
+ { '@type': 'HowToStep', name: 'Levering kiezen', text: 'Vermeld een voorkeursformaat en betrouwbare antwoordroute zonder aan te nemen dat een nieuw bestand wordt gemaakt.' },
21
+ { '@type': 'HowToStep', name: 'Controleren en kopie bewaren', text: 'Lees de Markdown, los controlepunten op, bewaar tekst en verzendgegevens en gebruik het gecontroleerde kanaal.' },
22
+ ] };
23
+ export const content: AccessRequestLocaleContent = { slug: 'bouwer-verzoek-openbare-informatie', title: 'Bouwer voor verzoeken om toegang tot informatie', description: 'Stel een precies informatieverzoek op met ontvanger, specifieke regels, datums, geografisch bereik, formaat en controlelijst.', ui, seo: [
24
+ { type: 'title', text: 'Schrijf een vindbaar informatieverzoek', level: 2 },
25
+ { type: 'paragraph', html: 'Een verzoek kan beleefd maar moeilijk te beantwoorden zijn als het onderwerp breed is, datums ontbreken of verschillende vragen worden samengevoegd. Deze bouwer zet bekende details om in een controleerbaar spoor: ontvanger, gezochte documenten, periode, plaats en antwoordwijze.' },
26
+ { type: 'title', text: 'Geef de zoekopdracht een grens', level: 2 },
27
+ { type: 'paragraph', html: 'Gebruik aan beide kanten van de periode dezelfde datum betekenis, zoals publicatie, vergadering of betaling. Voeg plaats, programma, locatie of organisatie toe. Als een grens echt onbekend is, laat dat zien in de controlelijst en gok niet.' },
28
+ { type: 'table', headers: ['Detail', 'Nuttige formulering', 'Ondersteunde beslissing'], rows: [['Informatieset', 'Definitieve agenda s en goedgekeurde notulen', 'Welke documenten zoeken?'], ['Periode', 'Van 01-01-2025 tot 31-12-2025', 'Welke documenten vallen eronder?'], ['Geografisch bereik', 'Dienstgebied noordelijk district', 'Welke plaats of welk programma?'], ['Formaat', 'Machineleesbare tabel zoals CSV', 'Hoe kan het resultaat worden gecontroleerd?']] },
29
+ { type: 'title', text: 'Controleer het concept voor verzending', level: 2 },
30
+ { type: 'paragraph', html: 'De gegenereerde tekst houdt je feiten bij elkaar en plaatst uitleg in een aparte controlebalk. Een compleet onderdeel betekent dat het minimum aanwezig is; een waarschuwing vraagt om een document, veld, gebeurtenis of meetbare set preciezer te benoemen.' },
31
+ { type: 'list', items: ['Bevestig dat de ontvanger dit type verzoek nu accepteert.', 'Controleer dat elke regel één herkenbare set vraagt en niet een heel onderwerp.', 'Gebruik een gesloten periode en passend geografisch bereik.', 'Noem een voorkeursformaat zonder te eisen dat een nieuw bestand wordt gemaakt.', 'Bewaar bijlagen, herkenningsgegevens, eindtekst en verzendkanaal.'] },
32
+ { type: 'tip', title: 'Specifiek is niet hetzelfde als volledig', html: 'Een kort verzoek met registratietype, periode en herkenningsgegevens is vaak makkelijker te zoeken dan een lang verhaal. Bewaar alleen context die helpt bij het vinden.' },
33
+ { type: 'title', text: 'Ken de grenzen van de bouwer', level: 2 },
34
+ { type: 'paragraph', html: 'Dit is een landonafhankelijke schrijfhulp. De tool bepaalt geen bevoegde instantie, wettelijke termijn, openbaarmaking, formaat of indiening en geeft geen juridisch advies. De actuele regels van de ontvangende instantie zijn leidend.' },
35
+ { type: 'tip', title: 'Bewaar het bewijsspoor', html: 'Sla de exacte tekst, datum, ontvanger, bijlagen en ontvangstbevestiging op. Zo kun je het antwoord vergelijken met de echte vraag.' },
36
+ { type: 'title', text: 'Een bruikbaar antwoord voorbereiden', level: 2 },
37
+ { type: 'paragraph', html: 'Noem de velden of het registratietype dat je nodig hebt en bewaar het verzoek samen met elk ontvangen antwoord.' },
38
+ ], faq: [
39
+ { question: 'Waar moet ik om vragen?', answer: 'Vraag om een herkenbare registratie, veld, informatieset of telling en splits losse sets.' },
40
+ { question: 'Weet de tool welke instantie bevoegd is?', answer: 'Nee. Controleer ontvanger, bevoegdheid, termijn, uitzonderingen en kanaal met actuele lokale instructies.' },
41
+ { question: 'Waarom zijn datums en plaats belangrijk?', answer: 'Ze begrenzen de zoekopdracht. Gebruik dezelfde datum betekenis en noem plaats of programma.' },
42
+ { question: 'Kan ik gevoelige gegevens opvragen?', answer: 'Neem alleen noodzakelijke gegevens op en controleer actuele regels voor toegang en privacy.' },
43
+ ], bibliography, howTo: [
44
+ { name: 'Ontvanger noemen', text: 'Vul de vermoedelijke instantie in en controleer het huidige kanaal.' },
45
+ { name: 'Informatie splitsen', text: 'Schrijf één herkenbare registratie, set of telling per regel.' },
46
+ { name: 'Zoekopdracht begrenzen', text: 'Voeg passende datums, bereik en herkenningsgegevens toe.' },
47
+ { name: 'Levering kiezen', text: 'Noem formaat en antwoordroute zonder een nieuw bestand te veronderstellen.' },
48
+ { name: 'Controleren en kopie bewaren', text: 'Los waarschuwingen op en bewaar tekst en verzendgegevens.' },
49
+ ], schemas: [softwareApplication, faqPage, howTo] as unknown as Record<string, unknown>[] };
@@ -0,0 +1,49 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { AccessRequestLocaleContent } from '../entry';
4
+ import type { AccessRequestUI } from '../ui';
5
+
6
+ const ui: AccessRequestUI = {
7
+ eyebrow: 'CIVIC PAPER TRAIL', introHeading: 'Nadaj pytaniu kształt, zanim je wyślesz.', introText: 'Zacznij od adresata, wpisz jeden możliwy do wyodrębnienia zestaw informacji w każdym wierszu, a następnie dodaj granice ułatwiające znalezienie dokumentu.', targetHeading: 'Ustal adresata', targetPrompt: 'Kto może odpowiedzieć?', questionPrompt: 'Jeden zestaw naraz', boundaryHeading: 'Wyznacz granice', boundaryPrompt: 'Co ułatwia znalezienie?', reviewWarningsHeading: 'Sprawdź przed wysłaniem', recipientLabel: 'Organ lub adresat', recipientPlaceholder: 'Wydział, urząd, archiwum lub organizacja', subjectLabel: 'Temat', subjectPlaceholder: 'Dokumenty lub informacje, które chcesz znaleźć', itemsLabel: 'Żądane informacje', itemPlaceholder: 'Poproś o jeden rozpoznawalny zestaw, dokument lub pole', addItem: 'Dodaj kolejny wiersz żądania', removeItem: 'Usuń ten wiersz', periodLabel: 'Okres', periodFrom: 'Od', periodTo: 'Do', geographyLabel: 'Zakres geograficzny', geographyPlaceholder: 'Miasto, dzielnica, obiekt, obszar programu lub cały kraj', formatLabel: 'Preferowany format', formatPlaceholder: 'Wybierz format przekazania', formatEmail: 'Kopia elektroniczna e-mailem', formatCsv: 'Tabela czytelna maszynowo, na przykład CSV', formatPdf: 'Przeszukiwalny PDF lub dokument', formatOriginal: 'Oryginalny format posiadany przez organ', deliveryLabel: 'Szczegóły odpowiedzi', deliveryPlaceholder: 'Adres e-mail, pocztowy lub bezpieczny sposób odpowiedzi', contactLabel: 'Opcjonalne dane kontaktowe', contactPlaceholder: 'Telefon, numer sprawy lub preferowany kanał odpowiedzi', attachmentsLabel: 'Załączniki lub identyfikatory', attachmentsPlaceholder: 'Nazwy plików, numery, linki lub kontekst pomocny w wyszukaniu', noAttachments: 'Załączniki ani identyfikatory nie są potrzebne', savedCopy: 'Zapisałem kopię końcowego tekstu', presetLabel: 'Zacznij od konkretnego przykładu', presetRecords: 'Protokoły posiedzeń', presetSpending: 'Dokumenty wydatków', presetMeetings: 'Skargi na usługi', generateAction: 'Utwórz projekt żądania', resetAction: 'Wyczyść projekt', resultHeading: 'Projekt żądania', resultIntro: 'Sprawdź każdy fakt i edytuj tekst końcowy przed skopiowaniem. Wskazówki i ostrzeżenia pozostają poza wysyłanym tekstem.', copyAction: 'Kopiuj Markdown', printAction: 'Drukuj lub zapisz jako PDF', copied: 'Skopiowano do schowka', noResult: 'Dodaj adresata, temat i co najmniej jeden wiersz, aby zobaczyć ślad sprawy.', checklistHeading: 'Identyfikowalność przed wysłaniem', completeLabel: 'Gotowe', reviewLabel: 'Sprawdź', checklistRecipient: 'Adresat jest wskazany', checklistScope: 'Każdy wiersz wskazuje jeden możliwy do żądania zestaw', checklistPeriod: 'Okres jest ograniczony', checklistFormat: 'Podano preferowany format', checklistAttachments: 'Uwzględniono załączniki i identyfikatory', checklistCopy: 'Zapisano kopię do własnych akt', methodHeading: 'Zastosowana metoda', methodText: 'Kreator zamienia szeroki temat w identyfikowalne żądanie: jeden zestaw informacji w wierszu, wskazany adresat, jasny zakres dat, granica geograficzna, preferowany format i użyteczna droga odpowiedzi. Porządkuje wyłącznie podane szczegóły i nie dodaje podstawy prawnej, terminu, organu ani faktów.', limitsHeading: 'Czego to narzędzie nie rozstrzyga', limitsText: 'Nie wskazuje właściwego organu, nie ustala terminu ustawowego, nie gwarantuje udostępnienia, nie składa żądania, nie klasyfikuje dokumentu według prawa lokalnego i nie udziela porady prawnej. Przed wysłaniem sprawdź aktualne instrukcje adresata.', edgeCasesHeading: 'Sytuacje szczególne i ostrzeżenia dotyczące danych', edgeCasesText: 'Szerokie zwroty, takie jak "wszystkie dokumenty", mogą być trudne do wyszukania. Unikaj nieokreślonych pojęć, różnych znaczeń dat, zbędnych danych osobowych i prośby o nową analizę, gdy potrzebujesz istniejącego dokumentu. Nie każdy format musi być dostępny.', statusReady: 'Projekt zawiera pełny minimalny ślad sprawy.', statusReview: 'Projekt jest dobrym początkiem, ale wymaga sprawdzenia.', missingRecipient: 'Przed wysłaniem wskaż organ lub adresata.', missingItems: 'Dodaj co najmniej jeden konkretny zestaw informacji.', missingPeriod: 'Dodaj datę początkową i końcową albo wyjaśnij brakującą granicę.', broadItem: 'Ten wiersz może być zbyt szeroki. Wskaż typ dokumentu, pole, zdarzenie lub mierzalny zestaw.', missingFormat: 'Wybierz sposób przekazania informacji.', missingGeography: 'Dodaj miejsce albo wyjaśnij, dlaczego żądanie jest ogólnokrajowe.', missingDelivery: 'Dodaj drogę, którą adresat może odpowiedzieć.', noCopyWarning: 'Przed wysłaniem zapisz tekst końcowy i szczegóły złożenia.', itemNumber: 'Wiersz żądania',
8
+ };
9
+ const softwareApplication: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Kreator wniosku o dostęp do informacji', applicationCategory: 'UtilitiesApplication', operatingSystem: 'Any', description: 'Przygotuj precyzyjny i identyfikowalny wniosek z zakresem, datami, formatem i drogą odpowiedzi.', url: 'https://gamebob.dev/pl/kreator-wniosku-o-informacje-publiczne', offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' } };
10
+ const faqPage: FAQPage = { '@type': 'FAQPage', mainEntity: [
11
+ { '@type': 'Question', name: 'O co powinienem poprosić?', acceptedAnswer: { '@type': 'Answer', text: 'Poproś o rozpoznawalny zestaw informacji, dokument, pole lub mierzalną liczbę. Niezależne zestawy rozdziel na osobne wiersze.' } },
12
+ { '@type': 'Question', name: 'Czy narzędzie zna właściwy organ?', acceptedAnswer: { '@type': 'Answer', text: 'Nie. Samodzielnie ustal prawdopodobnego adresata i sprawdź jego aktualne zasady. Kreator nie określa właściwości, terminów ani wyjątków.' } },
13
+ { '@type': 'Question', name: 'Dlaczego ważne są daty i zakres geograficzny?', acceptedAnswer: { '@type': 'Answer', text: 'Ograniczają wyszukiwanie i zmniejszają niejasność. Użyj tego samego znaczenia obu dat i wskaż miejsce lub program.' } },
14
+ { '@type': 'Question', name: 'Czy mogę żądać danych osobowych lub wrażliwych?', acceptedAnswer: { '@type': 'Answer', text: 'Dodaj tylko dane niezbędne i odpowiednie. Zasady dostępu i prywatności są różne, więc sprawdź wskazówki adresata.' } },
15
+ ] };
16
+ const howTo: HowTo = { '@type': 'HowTo', name: 'Przygotować precyzyjny wniosek o informację', step: [
17
+ { '@type': 'HowToStep', name: 'Wskaż adresata', text: 'Wpisz organ, wydział, archiwum lub organizację, która prawdopodobnie posiada informację, i sprawdź aktualny kanał.' },
18
+ { '@type': 'HowToStep', name: 'Podziel informację', text: 'Napisz jeden możliwy do żądania zestaw w każdym wierszu. Wskaż typ dokumentu, pola, zdarzenie lub liczbę.' },
19
+ { '@type': 'HowToStep', name: 'Ogranicz wyszukiwanie', text: 'Dodaj daty, zakres geograficzny i identyfikatory ułatwiające znalezienie materiału.' },
20
+ { '@type': 'HowToStep', name: 'Wybierz przekazanie', text: 'Podaj preferowany format i wiarygodną drogę odpowiedzi, bez zakładania, że powstanie nowy plik.' },
21
+ { '@type': 'HowToStep', name: 'Sprawdź i zachowaj kopię', text: 'Przeczytaj Markdown, usuń ostrzeżenia, zapisz tekst i dane złożenia, a następnie użyj zweryfikowanego kanału.' },
22
+ ] };
23
+ export const content: AccessRequestLocaleContent = { slug: 'kreator-wniosku-o-informacje-publiczne', title: 'Kreator wniosku o dostęp do informacji', description: 'Przygotuj precyzyjny wniosek z adresatem, konkretnymi wierszami, datami, zakresem, formatem i listą kontroli.', ui, seo: [
24
+ { type: 'title', text: 'Napisz wniosek o informację, który można znaleźć', level: 2 },
25
+ { type: 'paragraph', html: 'Wniosek może być uprzejmy, a mimo to trudny do obsłużenia, gdy temat jest szeroki, brakuje dat albo połączono niezależne pytania. Ten kreator porządkuje znane szczegóły w sprawdzalny ślad: adresata, szukane dokumenty, okres, miejsce i sposób odpowiedzi.' },
26
+ { type: 'title', text: 'Wyznacz granicę wyszukiwania', level: 2 },
27
+ { type: 'paragraph', html: 'Na obu końcach okresu użyj tego samego znaczenia daty, na przykład publikacji, posiedzenia lub płatności. Dodaj miejsce, program, obiekt albo organizację. Jeśli granica jest naprawdę nieznana, pokaż to na liście i nie zgaduj.' },
28
+ { type: 'table', headers: ['Szczegół', 'Przydatne sformułowanie', 'Wspierana decyzja'], rows: [['Zestaw informacji', 'Ostateczne porządki obrad i zatwierdzone protokoły', 'Których dokumentów szukać?'], ['Okres', 'Od 01.01.2025 do 31.12.2025', 'Które dokumenty wchodzą w zakres?'], ['Zakres geograficzny', 'Obszar usług północnej dzielnicy', 'Jakie miejsce lub program?'], ['Format', 'Tabela czytelna maszynowo, na przykład CSV', 'Jak sprawdzić wynik?']] },
29
+ { type: 'title', text: 'Sprawdź projekt przed wysłaniem', level: 2 },
30
+ { type: 'paragraph', html: 'Wygenerowany tekst trzyma fakty razem, a wskazówki umieszcza w osobnym pasie kontroli. Kompletna pozycja oznacza obecność minimum; ostrzeżenie zachęca do dokładniejszego wskazania dokumentu, pola, zdarzenia lub mierzalnego zestawu.' },
31
+ { type: 'list', items: ['Potwierdź, że adresat obecnie przyjmuje taki rodzaj wniosku.', 'Sprawdź, czy każdy wiersz dotyczy jednego zestawu, a nie całego tematu.', 'Użyj zamkniętego okresu i pasującej granicy geograficznej.', 'Podaj format bez zakładania, że organ stworzy nowy plik.', 'Zapisz załączniki, identyfikatory, tekst końcowy i kanał wysłania.'] },
32
+ { type: 'tip', title: 'Konkretny nie znaczy wyczerpujący', html: 'Krótki wniosek z typem dokumentu, okresem i identyfikatorami często łatwiej wyszukać niż długą opowieść. Zostaw kontekst pomagający znaleźć dokumenty.' },
33
+ { type: 'title', text: 'Poznaj granice kreatora', level: 2 },
34
+ { type: 'paragraph', html: 'To niezależna od kraju pomoc w pisaniu. Nie wskazuje organu, nie oblicza terminu, nie gwarantuje udostępnienia, nie składa wniosku i nie udziela porady prawnej. W tych sprawach decydują aktualne zasady adresata.' },
35
+ { type: 'tip', title: 'Zachowaj ślad dowodowy', html: 'Zapisz dokładny tekst, datę, adresata, załączniki i potwierdzenie. Ułatwi to porównanie odpowiedzi z faktycznie zadanym pytaniem.' },
36
+ { type: 'title', text: 'Przygotować użyteczną odpowiedź', level: 2 },
37
+ { type: 'paragraph', html: 'Wskaż pola lub typ dokumentu potrzebny do celu i przechowuj wniosek razem z otrzymaną odpowiedzią.' },
38
+ ], faq: [
39
+ { question: 'O co powinienem poprosić?', answer: 'Poproś o rozpoznawalny dokument, zestaw, pole lub liczbę i rozdziel niezależne zestawy.' },
40
+ { question: 'Czy narzędzie zna właściwy organ?', answer: 'Nie. Sprawdź adresata, właściwość, termin, wyjątki i kanał w aktualnych lokalnych wskazówkach.' },
41
+ { question: 'Dlaczego ważne są daty i miejsce?', answer: 'Ograniczają wyszukiwanie. Użyj tego samego znaczenia dat i wskaż miejsce lub program.' },
42
+ { question: 'Czy mogę żądać danych wrażliwych?', answer: 'Dodaj tylko niezbędne dane i sprawdź aktualne zasady dostępu oraz prywatności.' },
43
+ ], bibliography, howTo: [
44
+ { name: 'Wskaż adresata', text: 'Wpisz prawdopodobny organ i sprawdź jego aktualny kanał.' },
45
+ { name: 'Podziel informację', text: 'Napisz jeden rozpoznawalny dokument, zestaw lub liczby w każdym wierszu.' },
46
+ { name: 'Ogranicz wyszukiwanie', text: 'Dodaj zgodne daty, zakres i identyfikatory.' },
47
+ { name: 'Wybierz przekazanie', text: 'Podaj format i drogę odpowiedzi bez zakładania nowego pliku.' },
48
+ { name: 'Sprawdź i zachowaj kopię', text: 'Usuń ostrzeżenia i zachowaj tekst z danymi złożenia.' },
49
+ ], schemas: [softwareApplication, faqPage, howTo] as unknown as Record<string, unknown>[] };
@@ -0,0 +1,49 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { AccessRequestLocaleContent } from '../entry';
4
+ import type { AccessRequestUI } from '../ui';
5
+
6
+ const ui: AccessRequestUI = {
7
+ eyebrow: 'CIVIC PAPER TRAIL', introHeading: 'Dê forma à pergunta antes de enviá-la.', introText: 'Comece pelo destinatário, indique um conjunto de informação solicitável por linha e acrescente os limites que tornam o registro localizável.', targetHeading: 'Defina o destinatário', targetPrompt: 'Quem pode responder?', questionPrompt: 'Um conjunto de cada vez', boundaryHeading: 'Trace os limites', boundaryPrompt: 'O que o torna localizável?', reviewWarningsHeading: 'Revise antes de enviar', recipientLabel: 'Autoridade ou destinatário', recipientPlaceholder: 'Departamento, órgão, arquivo ou organização', subjectLabel: 'Assunto', subjectPlaceholder: 'Os registros ou informações que deseja localizar', itemsLabel: 'Informações solicitadas', itemPlaceholder: 'Peça um conjunto, registro ou campo identificável', addItem: 'Adicionar outra linha', removeItem: 'Remover esta linha', periodLabel: 'Período', periodFrom: 'De', periodTo: 'Até', geographyLabel: 'Abrangência geográfica', geographyPlaceholder: 'Cidade, distrito, local, área do programa ou nacional', formatLabel: 'Formato preferido', formatPlaceholder: 'Escolha um formato de entrega', formatEmail: 'Cópia eletrônica por e-mail', formatCsv: 'Tabela legível por máquina, como CSV', formatPdf: 'PDF ou documento pesquisável', formatOriginal: 'Formato original mantido pela autoridade', deliveryLabel: 'Detalhes de entrega', deliveryPlaceholder: 'E-mail, endereço postal ou forma segura de resposta', contactLabel: 'Contato opcional', contactPlaceholder: 'Telefone, referência ou canal de resposta preferido', attachmentsLabel: 'Anexos ou identificadores', attachmentsPlaceholder: 'Nomes de arquivos, números, links ou contexto útil para localizar', noAttachments: 'Não são necessários anexos ou identificadores', savedCopy: 'Salvei uma cópia do texto final', presetLabel: 'Comece por um exemplo específico', presetRecords: 'Registros de reuniões', presetSpending: 'Registros de despesas', presetMeetings: 'Reclamações sobre serviços', generateAction: 'Criar rascunho do pedido', resetAction: 'Limpar rascunho', resultHeading: 'Rascunho do pedido', resultIntro: 'Revise cada fato e edite o texto final antes de copiá-lo. Orientações e alertas ficam fora do texto enviado.', copyAction: 'Copiar Markdown', printAction: 'Imprimir ou salvar como PDF', copied: 'Copiado para a área de transferência', noResult: 'Adicione destinatário, assunto e pelo menos uma linha para ver a trilha.', checklistHeading: 'Rastreabilidade antes do envio', completeLabel: 'Pronto', reviewLabel: 'Revisar', checklistRecipient: 'Destinatário identificado', checklistScope: 'Cada linha identifica um conjunto solicitável', checklistPeriod: 'Período delimitado', checklistFormat: 'Formato preferido indicado', checklistAttachments: 'Anexos e identificadores considerados', checklistCopy: 'Uma cópia foi salva', methodHeading: 'Método aplicado', methodText: 'O criador transforma um tema amplo em um pedido rastreável: um conjunto de informação por linha, um destinatário nomeado, um intervalo de datas claro, um limite geográfico, um formato preferido e uma rota de resposta utilizável. Ele apenas reorganiza o que você informa e nunca acrescenta base legal, prazo, autoridade ou fato.', limitsHeading: 'O que esta ferramenta não decide', limitsText: 'Ela não identifica a autoridade competente, determina prazo legal, garante divulgação, protocola o pedido, classifica registros segundo a lei local nem oferece aconselhamento jurídico. Confira as instruções atuais do destinatário antes de enviar.', edgeCasesHeading: 'Casos especiais e alertas de dados', edgeCasesText: 'Frases amplas como "todos os documentos" podem ser difíceis de pesquisar. Evite termos indefinidos, significados mistos para datas, dados pessoais desnecessários e pedidos de uma nova análise quando precisa de um registro existente. Alguns formatos podem não estar disponíveis.', statusReady: 'O rascunho contém a trilha mínima completa.', statusReview: 'O rascunho é um ponto de partida, mas precisa de revisão.', missingRecipient: 'Nomeie a autoridade ou o destinatário antes de enviar.', missingItems: 'Adicione pelo menos um conjunto de informação específico.', missingPeriod: 'Adicione data inicial e final ou explique o limite ausente.', broadItem: 'Esta linha pode ser ampla demais. Indique tipo de registro, campo, evento ou conjunto mensurável.', missingFormat: 'Escolha como a informação deve ser entregue.', missingGeography: 'Adicione um local ou explique por que o pedido é nacional.', missingDelivery: 'Adicione uma rota para o destinatário responder.', noCopyWarning: 'Salve o texto final e os dados do envio antes de enviar.', itemNumber: 'Linha do pedido',
8
+ };
9
+ const softwareApplication: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Criador de pedidos de acesso à informação', applicationCategory: 'UtilitiesApplication', operatingSystem: 'Any', description: 'Redija um pedido preciso e rastreável com escopo, datas, formato e rota de resposta.', url: 'https://gamebob.dev/pt/criador-pedido-acesso-informacao', offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' } };
10
+ const faqPage: FAQPage = { '@type': 'FAQPage', mainEntity: [
11
+ { '@type': 'Question', name: 'O que devo pedir?', acceptedAnswer: { '@type': 'Answer', text: 'Peça um conjunto de informação, registro, campo ou contagem mensurável identificável. Separe conjuntos independentes em linhas diferentes.' } },
12
+ { '@type': 'Question', name: 'A ferramenta sabe qual autoridade devo contatar?', acceptedAnswer: { '@type': 'Answer', text: 'Não. Você deve identificar o destinatário provável e conferir suas instruções atuais. O criador não determina jurisdição, prazos ou exceções.' } },
13
+ { '@type': 'Question', name: 'Por que datas e abrangência geográfica são importantes?', acceptedAnswer: { '@type': 'Answer', text: 'Elas reduzem a busca e a ambiguidade. Use o mesmo sentido para as datas e indique o local ou programa abrangido.' } },
14
+ { '@type': 'Question', name: 'Posso pedir dados pessoais ou sensíveis?', acceptedAnswer: { '@type': 'Answer', text: 'Inclua somente detalhes necessários e adequados. As regras de acesso e privacidade variam, portanto verifique as orientações do destinatário.' } },
15
+ ] };
16
+ const howTo: HowTo = { '@type': 'HowTo', name: 'Redigir um pedido de informação preciso', step: [
17
+ { '@type': 'HowToStep', name: 'Nomear o destinatário', text: 'Digite o órgão, departamento, arquivo ou organização que provavelmente possui a informação e confirme o canal atual.' },
18
+ { '@type': 'HowToStep', name: 'Separar a informação', text: 'Escreva um conjunto solicitável por linha. Indique o tipo de registro, campos, evento ou contagem.' },
19
+ { '@type': 'HowToStep', name: 'Delimitar a busca', text: 'Acrescente datas, abrangência geográfica e identificadores que ajudem a localizar o material.' },
20
+ { '@type': 'HowToStep', name: 'Escolher a entrega', text: 'Indique formato preferido e rota confiável de resposta sem supor que um novo arquivo será criado.' },
21
+ { '@type': 'HowToStep', name: 'Revisar e guardar uma cópia', text: 'Leia o Markdown, resolva os alertas, salve o texto e os dados do envio e use o canal verificado.' },
22
+ ] };
23
+ export const content: AccessRequestLocaleContent = { slug: 'criador-pedido-acesso-informacao', title: 'Criador de pedidos de acesso à informação', description: 'Redija um pedido preciso com destinatário, linhas específicas, datas, abrangência geográfica, formato e checklist antes do envio.', ui, seo: [
24
+ { type: 'title', text: 'Escreva um pedido de informação localizável', level: 2 },
25
+ { type: 'paragraph', html: 'Um pedido pode ser educado e ainda assim difícil de responder quando o assunto é amplo, faltam datas ou perguntas independentes são misturadas. Este criador organiza os detalhes conhecidos em uma trilha verificável: destinatário, registros buscados, período, local e forma de resposta.' },
26
+ { type: 'title', text: 'Dê um limite à busca', level: 2 },
27
+ { type: 'paragraph', html: 'Use o mesmo significado nas duas datas, como publicação, reunião ou pagamento. Acrescente local, programa, unidade ou organização. Se um limite for realmente desconhecido, deixe-o visível no checklist e não invente.' },
28
+ { type: 'table', headers: ['Detalhe', 'Formulação útil', 'Decisão apoiada'], rows: [['Conjunto de informação', 'Pautas finais e atas aprovadas', 'Quais registros pesquisar?'], ['Período', 'De 01/01/2025 a 31/12/2025', 'Quais registros entram?'], ['Abrangência', 'Área de atendimento do distrito norte', 'Qual local ou programa?'], ['Formato', 'Tabela legível por máquina, como CSV', 'Como conferir o resultado?']] },
29
+ { type: 'title', text: 'Revise o rascunho antes de enviar', level: 2 },
30
+ { type: 'paragraph', html: 'O texto gerado mantém seus fatos juntos e deixa as orientações em uma faixa separada. Um item completo indica que o detalhe mínimo existe; um alerta pede que você especifique melhor registro, campo, evento ou conjunto mensurável.' },
31
+ { type: 'list', items: ['Confirme que o destinatário aceita atualmente esse tipo de pedido.', 'Verifique se cada linha pede um conjunto identificável, não um assunto inteiro.', 'Use um período fechado e uma abrangência geográfica coerente.', 'Indique um formato preferido sem presumir que o órgão criará um arquivo novo.', 'Registre anexos, identificadores, texto final e canal de envio.'] },
32
+ { type: 'tip', title: 'Específico não significa exaustivo', html: 'Um pedido curto com tipo de registro, período e bons identificadores costuma ser mais fácil de pesquisar que uma narrativa longa. Mantenha o contexto que ajuda a localizar os documentos.' },
33
+ { type: 'title', text: 'Conheça os limites do criador', level: 2 },
34
+ { type: 'paragraph', html: 'Esta é uma ferramenta de redação independente do país. Ela não identifica autoridade, calcula prazos, garante divulgação, protocola pedidos nem oferece aconselhamento jurídico. As regras atuais do destinatário são a referência para essas questões.' },
35
+ { type: 'tip', title: 'Guarde a trilha de evidências', html: 'Salve o texto exato, a data, o destinatário, os anexos e qualquer confirmação. Assim você pode comparar a resposta com a pergunta realmente enviada.' },
36
+ { type: 'title', text: 'Preparar uma resposta útil', level: 2 },
37
+ { type: 'paragraph', html: 'Indique os campos ou o tipo de registro necessário para seu objetivo e guarde o pedido junto com qualquer resposta recebida.' },
38
+ ], faq: [
39
+ { question: 'O que devo pedir?', answer: 'Peça um registro, campo, conjunto ou contagem identificável e separe conjuntos independentes.' },
40
+ { question: 'A ferramenta conhece a autoridade?', answer: 'Não. Confira destinatário, jurisdição, prazo, exceções e canal nas orientações locais atuais.' },
41
+ { question: 'Por que datas e local importam?', answer: 'Eles delimitam a busca. Use o mesmo sentido para as datas e indique local ou programa.' },
42
+ { question: 'Posso pedir dados sensíveis?', answer: 'Inclua apenas detalhes necessários e confira as regras atuais de acesso e privacidade.' },
43
+ ], bibliography, howTo: [
44
+ { name: 'Nomear o destinatário', text: 'Digite a autoridade provável e confirme seu canal atual.' },
45
+ { name: 'Separar a informação', text: 'Escreva um registro, campo ou conjunto identificável por linha.' },
46
+ { name: 'Delimitar a busca', text: 'Acrescente datas coerentes, abrangência e identificadores.' },
47
+ { name: 'Escolher a entrega', text: 'Indique formato e rota de resposta sem supor um novo arquivo.' },
48
+ { name: 'Revisar e guardar uma cópia', text: 'Resolva alertas e salve o texto com os dados do envio.' },
49
+ ], schemas: [softwareApplication, faqPage, howTo] as unknown as Record<string, unknown>[] };
@@ -0,0 +1,49 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { AccessRequestLocaleContent } from '../entry';
4
+ import type { AccessRequestUI } from '../ui';
5
+
6
+ const ui: AccessRequestUI = {
7
+ eyebrow: 'CIVIC PAPER TRAIL', introHeading: 'Сформулируйте вопрос до отправки.', introText: 'Начните с адресата, укажите одну запрашиваемую совокупность сведений в каждой строке и добавьте границы, по которым запись можно найти.', targetHeading: 'Укажите адресата', targetPrompt: 'Кто может ответить?', questionPrompt: 'Одна совокупность за раз', boundaryHeading: 'Задайте границы', boundaryPrompt: 'Что делает ее доступной для поиска?', reviewWarningsHeading: 'Проверьте перед отправкой', recipientLabel: 'Орган или адресат', recipientPlaceholder: 'Отдел, ведомство, архив или организация', subjectLabel: 'Тема', subjectPlaceholder: 'Документы или сведения, которые нужно найти', itemsLabel: 'Запрашиваемые сведения', itemPlaceholder: 'Запросите одну понятную совокупность сведений, запись или поле', addItem: 'Добавить строку запроса', removeItem: 'Удалить эту строку', periodLabel: 'Период', periodFrom: 'С', periodTo: 'По', geographyLabel: 'Географический охват', geographyPlaceholder: 'Город, район, объект, территория программы или вся страна', formatLabel: 'Предпочтительный формат', formatPlaceholder: 'Выберите формат передачи', formatEmail: 'Электронная копия по электронной почте', formatCsv: 'Машиночитаемая таблица, например CSV', formatPdf: 'PDF или документ с поиском', formatOriginal: 'Исходный формат, который есть у органа', deliveryLabel: 'Данные для ответа', deliveryPlaceholder: 'Электронная почта, почтовый адрес или безопасный способ ответа', contactLabel: 'Необязательные контакты', contactPlaceholder: 'Телефон, номер обращения или удобный канал ответа', attachmentsLabel: 'Вложения или идентификаторы', attachmentsPlaceholder: 'Имена файлов, номера записей, ссылки или полезный контекст', noAttachments: 'Вложения и идентификаторы не нужны', savedCopy: 'Я сохранил копию итогового текста', presetLabel: 'Начать с конкретного примера', presetRecords: 'Протоколы заседаний', presetSpending: 'Документы о расходах', presetMeetings: 'Жалобы на услуги', generateAction: 'Создать черновик запроса', resetAction: 'Очистить черновик', resultHeading: 'Черновик запроса', resultIntro: 'Проверьте каждый факт и отредактируйте итоговый текст перед копированием. Подсказки и предупреждения не входят в отправляемый текст.', copyAction: 'Копировать Markdown', printAction: 'Печать или сохранение в PDF', copied: 'Скопировано в буфер обмена', noResult: 'Добавьте адресата, тему и хотя бы одну строку, чтобы увидеть след запроса.', checklistHeading: 'Проверка перед отправкой', completeLabel: 'Готово', reviewLabel: 'Проверить', checklistRecipient: 'Адресат указан', checklistScope: 'Каждая строка обозначает одну запрашиваемую совокупность', checklistPeriod: 'Период ограничен', checklistFormat: 'Формат указан', checklistAttachments: 'Вложения и идентификаторы учтены', checklistCopy: 'Копия сохранена для ваших записей', methodHeading: 'Примененный метод', methodText: 'Конструктор превращает широкую тему в прослеживаемый запрос: одна совокупность сведений в строке, названный адресат, четкий диапазон дат, географическая граница, предпочтительный формат и рабочий способ ответа. Он только упорядочивает ваши данные и не добавляет правовое основание, срок, орган или факт.', limitsHeading: 'Чего этот инструмент не делает', limitsText: 'Он не определяет компетентный орган, установленный законом срок, гарантирует раскрытие, не подает запрос, не классифицирует запись по местному праву и не дает юридических советов. Перед отправкой проверьте действующие инструкции адресата.', edgeCasesHeading: 'Особые случаи и предупреждения о данных', edgeCasesText: 'Широкие фразы вроде "все документы" трудно искать. Избегайте неопределенных терминов, смешения смыслов дат, лишних персональных данных и просьб создать новый анализ, если нужен уже существующий документ. Нужный формат может быть недоступен.', statusReady: 'В черновике есть полный минимальный след запроса.', statusReview: 'Черновик можно использовать как начало, но его нужно проверить.', missingRecipient: 'Укажите орган или адресата перед отправкой.', missingItems: 'Добавьте хотя бы одну конкретную совокупность сведений.', missingPeriod: 'Добавьте начальную и конечную дату или объясните отсутствующую границу.', broadItem: 'Эта строка может быть слишком широкой. Укажите тип записи, поле, событие или измеримую совокупность.', missingFormat: 'Выберите способ передачи сведений.', missingGeography: 'Добавьте место или объясните, почему запрос относится ко всей стране.', missingDelivery: 'Добавьте способ, которым адресат сможет ответить.', noCopyWarning: 'Сохраните итоговый текст и сведения об отправке перед передачей.', itemNumber: 'Строка запроса',
8
+ };
9
+ const softwareApplication: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Конструктор запроса доступа к информации', applicationCategory: 'UtilitiesApplication', operatingSystem: 'Any', description: 'Составьте точный и прослеживаемый запрос с охватом, датами, форматом и способом ответа.', url: 'https://gamebob.dev/ru/konstruktor-zaprosa-na-dostup-k-informacii', offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' } };
10
+ const faqPage: FAQPage = { '@type': 'FAQPage', mainEntity: [
11
+ { '@type': 'Question', name: 'Что следует запросить?', acceptedAnswer: { '@type': 'Answer', text: 'Запросите понятную совокупность сведений, запись, поле или измеримое количество. Независимые совокупности разделите на разные строки.' } },
12
+ { '@type': 'Question', name: 'Знает ли инструмент, в какой орган обращаться?', acceptedAnswer: { '@type': 'Answer', text: 'Нет. Определите вероятного адресата самостоятельно и проверьте его действующие правила. Конструктор не устанавливает компетенцию, сроки или исключения.' } },
13
+ { '@type': 'Question', name: 'Почему важны даты и географический охват?', acceptedAnswer: { '@type': 'Answer', text: 'Они сужают поиск и уменьшают неоднозначность. Используйте одинаковый смысл дат и укажите место или программу.' } },
14
+ { '@type': 'Question', name: 'Можно ли запросить персональные или чувствительные данные?', acceptedAnswer: { '@type': 'Answer', text: 'Включайте только необходимые и уместные сведения. Правила доступа и конфиденциальности различаются, поэтому проверьте инструкции адресата.' } },
15
+ ] };
16
+ const howTo: HowTo = { '@type': 'HowTo', name: 'Составить точный запрос информации', step: [
17
+ { '@type': 'HowToStep', name: 'Назвать адресата', text: 'Введите орган, отдел, архив или организацию, где предположительно хранится информация, и проверьте действующий канал.' },
18
+ { '@type': 'HowToStep', name: 'Разделить сведения', text: 'Пишите одну запрашиваемую совокупность в строке. Укажите тип записи, поля, событие или количество.' },
19
+ { '@type': 'HowToStep', name: 'Ограничить поиск', text: 'Добавьте начальную и конечную даты, географический охват и идентификаторы, помогающие найти материал.' },
20
+ { '@type': 'HowToStep', name: 'Выбрать способ передачи', text: 'Укажите желательный формат и надежный способ ответа, не предполагая создание нового файла.' },
21
+ { '@type': 'HowToStep', name: 'Проверить и сохранить копию', text: 'Прочитайте Markdown, устраните замечания, сохраните текст и данные отправки и используйте проверенный канал.' },
22
+ ] };
23
+ export const content: AccessRequestLocaleContent = { slug: 'konstruktor-zaprosa-na-dostup-k-informacii', title: 'Конструктор запроса доступа к информации', description: 'Составьте точный запрос с адресатом, отдельными строками, датами, географическим охватом, форматом и проверкой перед отправкой.', ui, seo: [
24
+ { type: 'title', text: 'Напишите запрос информации, который можно найти', level: 2 },
25
+ { type: 'paragraph', html: 'Даже вежливый запрос бывает трудно обработать, если тема слишком широкая, даты не указаны или смешаны разные вопросы. Конструктор превращает известные вам детали в проверяемый след: адресат, нужные записи, период, место и способ ответа.' },
26
+ { type: 'title', text: 'Задайте границу поиска', level: 2 },
27
+ { type: 'paragraph', html: 'Используйте одинаковый смысл обеих дат: публикация, заседание, платеж или другое объяснимое событие. Добавьте место, программу, объект или организацию. Если граница неизвестна, оставьте это видимым в проверке и не угадывайте.' },
28
+ { type: 'table', headers: ['Деталь', 'Полезная формулировка', 'Какое решение поддерживает'], rows: [['Совокупность сведений', 'Итоговые повестки и утвержденные протоколы', 'Какие записи искать?'], ['Период', 'С 01.01.2025 по 31.12.2025', 'Какие записи входят?'], ['Географический охват', 'Зона обслуживания северного района', 'Какое место или программа?'], ['Формат', 'Машиночитаемая таблица, например CSV', 'Как проверить результат?']] },
29
+ { type: 'title', text: 'Проверьте черновик перед отправкой', level: 2 },
30
+ { type: 'paragraph', html: 'Созданный текст объединяет ваши факты, а подсказки помещает в отдельную область проверки. Завершенный пункт означает, что минимум указан; предупреждение предлагает точнее назвать запись, поле, событие или измеримую совокупность.' },
31
+ { type: 'list', items: ['Убедитесь, что адресат сейчас принимает такой тип запроса.', 'Проверьте, что каждая строка просит одну понятную совокупность, а не всю тему.', 'Используйте закрытый период и соответствующую географическую границу.', 'Укажите формат, не предполагая, что орган создаст новый файл.', 'Запишите вложения, идентификаторы, итоговый текст и канал отправки.'] },
32
+ { type: 'tip', title: 'Точность не означает полноту', html: 'Короткий запрос с типом записи, периодом и идентификаторами часто легче искать, чем длинное повествование. Оставьте только контекст, помогающий найти документы.' },
33
+ { type: 'title', text: 'Понимайте границы конструктора', level: 2 },
34
+ { type: 'paragraph', html: 'Это справочный инструмент для написания, не зависящий от страны. Он не определяет орган, срок, обязательность раскрытия, формат или порядок подачи и не заменяет юридическую консультацию. Для этих вопросов смотрите действующие правила адресата.' },
35
+ { type: 'tip', title: 'Сохраняйте доказательную цепочку', html: 'Сохраните отправленный текст, дату, адресата, вложения и подтверждение. Это позволит сопоставить ответ с реальным вопросом.' },
36
+ { type: 'title', text: 'Подготовить полезный ответ', level: 2 },
37
+ { type: 'paragraph', html: 'Укажите нужные для цели поля или тип записи и храните запрос вместе с полученным ответом.' },
38
+ ], faq: [
39
+ { question: 'Что следует запросить?', answer: 'Запросите понятную запись, поле, совокупность или количество и разделите независимые совокупности.' },
40
+ { question: 'Знает ли инструмент нужный орган?', answer: 'Нет. Проверьте адресата, компетенцию, срок, исключения и канал по актуальным местным правилам.' },
41
+ { question: 'Почему важны даты и место?', answer: 'Они ограничивают поиск. Используйте одинаковый смысл дат и назовите место или программу.' },
42
+ { question: 'Можно ли запросить чувствительные данные?', answer: 'Включайте только необходимые сведения и проверьте актуальные правила доступа и конфиденциальности.' },
43
+ ], bibliography, howTo: [
44
+ { name: 'Назвать адресата', text: 'Введите вероятный орган и проверьте его действующий канал.' },
45
+ { name: 'Разделить сведения', text: 'Пишите одну понятную запись, совокупность или цифру в каждой строке.' },
46
+ { name: 'Ограничить поиск', text: 'Добавьте согласованные даты, охват и идентификаторы.' },
47
+ { name: 'Выбрать способ передачи', text: 'Укажите формат и путь ответа без предположения о новом файле.' },
48
+ { name: 'Проверить и сохранить копию', text: 'Устраните предупреждения и сохраните текст с данными отправки.' },
49
+ ], schemas: [softwareApplication, faqPage, howTo] as unknown as Record<string, unknown>[] };