DEF/ABC Generator
ERP · Subject → Place → Operator → ZIP
[[ busy?(generating?'Генерация…':'Загрузка…'):(blocks.length?'Готов':'Нет данных') ]]
Загрузка и построение фильтров
[[ filterLoadingText ]]
Файл: [[ selectedFile || '—' ]] [[ filterLoadingPercent.toFixed(0) ]]%
Фильтры генерации
Областей/краёв: [[ selectedSubjects.length ]] ГО/НП/Г: [[ selectedPlaces.length ]] Операторов: [[ selectedOperators.length ]] Блоков: [[ selectedBlocksCount ]] ≈ Номеров: [[ approxContacts.toLocaleString('ru') ]]
ФО
[[ selectedFederalDistricts.length ]]
Нет ФО
Область / край
[[ selectedSubjects.length ]]/[[ filteredSubjects.length ]]
Загрузите CSV
ГО / НП / Г
[[ selectedPlaces.length ]]/[[ filteredPlaces.length ]]
[[ selectedSubjects.length ? 'Нет мест' : '← выберите субъект' ]]
Операторы
[[ selectedOperators.length ]]/[[ filteredOperators.length ]]
[[ selectedSubjects.length ? 'Нет операторов' : '← выберите субъект' ]]
Итого ёмкость: [[ selectedOperators.reduce((s,op)=>s+(operatorCapacityInSelection[op]||0),0).toLocaleString('ru') ]]
📡
Выберите CSV → нажмите «Загрузить»
Фильтры появятся здесь сразу после загрузки
Результат синхронизации
[[ r.file ]] [[ r.message ]] [[ (r.local_size/1024/1024).toFixed(1) ]] МБ обновлён
Областей/краёв: [[ selectedSubjects.length ]] ГО/НП/Г: [[ selectedPlaces.length ]] Операторов: [[ selectedOperators.length ]] Блоков: [[ selectedBlocksCount ]] ≈ Номеров: [[ approxContacts.toLocaleString('ru') ]] Исключений: [[ exclusions.length ]]
Большие пулы можно запускать и оставлять в работе. Готовые ZIP/CSV остаются в журнале, их можно скачать повторно.
Журнал пуст. После запуска генерации задача появится здесь.
[[ j.filename || j.source_file || j.job_id ]]
[[ jobStateLabel(j.state) ]]
[[ j.created_fmt || '—' ]] [[ j.finished_fmt ]] [[ (j.generated||0).toLocaleString('ru') ]] / [[ (j.total||0).toLocaleString('ru') ]] [[ formatBytes(j.file_size) ]] [[ j.output_mode || 'ZIP' ]] [[ j.source_file ]]
[[ j.error ]]
[[ j.message || j.params_summary || '—' ]]
[[ j.params_summary ]]
Готовых: [[ doneGenerationJobs.length ]] Активных: [[ activeGenerationJobs.length ]]
История пуста. Настройки сохраняются автоматически при генерации,
или вручную кнопкой 🔖 в панели управления.
[[ entry.name ]]
[[ entry.snapshot.selectedFile || '—' ]] · [[ (entry.snapshot.selectedSubjects||[]).length ]] субъектов · [[ (entry.snapshot.selectedOperators||[]).length ]] операторов · [[ entry.snapshot.perSubject > 0 ? entry.snapshot.perSubject + '/субъект' : 'макс' ]]
Добавить номера
Найдено [[ exclLookupResults.filter(r=>r.found).length ]] / [[ exclLookupResults.length ]]
[[ r.number ]]
не найден в реестре
[[ filteredExclusions.length ]] / [[ exclusions.length ]]
Номер Субъект ФО Оператор Комментарий Добавлен
[[ e.number ]] [[ e.subject||'—' ]] [[ e.federal_district||'—' ]] [[ e.operator||'—' ]] [[ e.comment||'' ]] [[ e.added_at||'' ]]
Список исключений пуст.
Введите номера слева — система определит ФО и оператора, затем добавьте в список.
Ничего не найдено по запросу «[[ exclSearch ]]»
Номера из этого списка автоматически исключаются при каждой генерации и предпросмотре. [[ exclusions.length ]] номеров исключено
[[ overlayTitle ]]
[[ overlaySub ]]
[[ overlayPercent.toFixed(1) ]]% · [[ job.generated.toLocaleString('ru') ]] / [[ job.total.toLocaleString('ru') ]]
[[ t.title ]]
[[ t.text ]]

Как использовать

  1. CSV автосинхронизируются с opendata.digital.gov.ru раз в сутки.
  2. Выбери файл, кодировку → Загрузить и разобрать.
  3. Кликни на карточку → настрой ФО / Субъекты / Места / Операторы в модальном окне.
  4. Сгенерировать ZIP → ZIP с CSV по каждому область/крайу.

Регион г. Чистополь|р-н Чистопольский|Республика Татарстан → subject/city/district.
Синхронизация — HEAD-запрос проверяет Last-Modified, скачивает только если сервер новее.
Seed — фиксирует результат для воспроизводимости.