Разработка AI-системы автоматизации обработки обращений граждан
Обращения граждан в органы власти — высоконагруженный и жёстко регламентированный процесс. Федеральный закон № 59-ФЗ устанавливает сроки: письменные обращения — 30 дней, отдельные категории — 10–15 дней. Нарушение сроков влечёт административную ответственность. AI-система позволяет автоматизировать приём, классификацию, маршрутизацию и подготовку ответов при соблюдении всех регуляторных требований.
Архитектура системы
Система состоит из нескольких независимых модулей, каждый из которых может внедряться отдельно:
Модуль приёма — интеграция с каналами поступления обращений: портал Госуслуги (ЕСИА), официальный сайт ведомства, электронная почта, МФЦ (СМЭВ), приёмные. Нормализация входящих данных в единый формат.
Модуль классификации — определение тематики обращения по рубрикатору ведомства, профильного органа, срочности. Выявление повторных обращений и жалоб на нарушение сроков.
Модуль маршрутизации — автоматическое определение ответственного подразделения и исполнителя на основе тематики, территориальной принадлежности и загрузки.
Модуль подготовки ответов — генерация проекта ответа на типовые обращения, поиск по базе нормативных актов и предыдущих ответов.
Модуль контроля сроков — SLA-трекинг с учётом праздничных дней, эскалации при приближении дедлайна.
Классификация и извлечение данных
from pydantic import BaseModel
from enum import Enum
class RequestCategory(str, Enum):
HOUSING = "жилищные вопросы"
UTILITIES = "ЖКХ"
LAND = "земельные отношения"
SOCIAL = "социальная защита"
TRANSPORT = "транспорт и дороги"
ECOLOGY = "экология"
PERMISSIONS = "разрешения и лицензии"
COMPLAINT = "жалоба на действия должностных лиц"
OTHER = "прочее"
class CitizenRequest(BaseModel):
applicant_name: str
applicant_contact: str
request_text: str
attachments: list[str]
class ProcessedRequest(BaseModel):
category: RequestCategory
subcategory: str
subject_summary: str # краткое изложение в 1-2 предложениях
responsible_department: str
priority: str # routine / urgent / special_control
deadline_days: int # расчётный срок ответа по 59-ФЗ
requires_interdepartmental: bool # нужен ли межведомственный запрос
extracted_addresses: list[str] # адреса из текста обращения
extracted_organizations: list[str]
is_repeat: bool # повторное обращение
related_request_ids: list[str]
def process_citizen_request(request: CitizenRequest, db) -> ProcessedRequest:
# Поиск похожих предыдущих обращений
similar = db.semantic_search(request.request_text, top_k=5)
context = build_context(similar)
return llm.parse(
build_classification_prompt(request, context),
response_format=ProcessedRequest
)
Определение сроков по 59-ФЗ
Расчёт срока не тривиален: базовый срок 30 дней, но есть исключения — обращения в сфере ЖКХ могут требовать ответа в 10 дней по региональным актам, срочные обращения — 15 дней. Межведомственный запрос продлевает срок на 30 дней с уведомлением заявителя.
def calculate_deadline(
request: ProcessedRequest,
received_date: date,
holiday_calendar: HolidayCalendar
) -> DeadlineInfo:
base_days = 30 # базовый срок по 59-ФЗ ст. 12
if request.priority == "urgent":
base_days = 15
elif request.category == RequestCategory.UTILITIES:
base_days = 10 # региональные требования
if request.requires_interdepartmental:
base_days += 30 # ст. 10 ч. 2 59-ФЗ
# Рабочие дни с учётом производственного календаря
deadline = holiday_calendar.add_working_days(received_date, base_days)
return DeadlineInfo(
deadline=deadline,
warning_date=holiday_calendar.add_working_days(received_date, base_days - 5),
escalation_date=holiday_calendar.add_working_days(received_date, base_days - 2)
)
Подготовка проектов ответов
Для типовых обращений (80–90% входящего потока) система генерирует проект ответа автоматически. Ответ должен содержать ссылки на НПА и конкретные разъяснения, а не общие фразы.
def generate_draft_response(
request: ProcessedRequest,
original_text: str,
knowledge_base: KnowledgeBase
) -> DraftResponse:
# Поиск релевантных НПА, постановлений, регламентов
relevant_docs = knowledge_base.search(
query=original_text,
doc_types=["law", "regulation", "instruction", "precedent"],
top_k=10
)
# Генерация ответа со ссылками
prompt = f"""Подготовь официальный ответ на обращение гражданина.
Обращение: {original_text}
Тематика: {request.category}
Релевантные НПА:
{format_documents(relevant_docs)}
Требования:
- Официальный деловой стиль
- Конкретные ссылки на статьи нормативных актов
- Описание порядка действий для заявителя
- Без общих фраз и отписок"""
draft = llm.generate(prompt, max_tokens=800)
return DraftResponse(
text=draft,
referenced_documents=[d.id for d in relevant_docs[:5]],
confidence=estimate_confidence(request, relevant_docs),
requires_human_review=request.priority == "urgent" or request.category == RequestCategory.COMPLAINT
)
Работа с ЕСИА и СМЭВ
Интеграция с федеральной инфраструктурой:
ЕСИА (Единая система идентификации и аутентификации): аутентификация заявителя, получение верифицированных персональных данных — ФИО, СНИЛС, адрес. Позволяет не запрашивать документы повторно.
СМЭВ (Система межведомственного электронного взаимодействия): межведомственные запросы в автоматическом режиме. Например, для ответа на обращение о земельном участке система автоматически запрашивает сведения из Росреестра.
ГИС ЖКХ API: для обращений по коммунальным услугам — проверка начислений, аварийных заявок, состояния дома.
ЕПГУ (Госуслуги): получение обращений через API Госуслуг, публикация статусов рассмотрения.
Выявление системных проблем
Агрегированный анализ обращений выявляет повторяющиеся проблемы:
def detect_systemic_issues(
requests: list[ProcessedRequest],
period_days: int = 30
) -> list[SystemicIssue]:
# Кластеризация по тематике и адресам
clusterer = HDBSCANClusterer(min_cluster_size=10)
clusters = clusterer.fit(requests)
issues = []
for cluster in clusters:
if cluster.growth_rate > 2.0: # рост числа обращений в 2+ раза
issues.append(SystemicIssue(
category=cluster.dominant_category,
location=cluster.most_common_address,
request_count=len(cluster.requests),
sample_texts=cluster.get_samples(n=3),
trend="growing",
recommended_action=generate_action_recommendation(cluster)
))
return sorted(issues, key=lambda x: x.request_count, reverse=True)
Антифрод и защита от злоупотреблений
Система выявляет: координированные кампании обращений по одному шаблону, обращения с признаками манипуляции, бессодержательные обращения. Не блокирует — маркирует для отдельного рассмотрения. Каждое обращение обязано быть рассмотрено согласно 59-ФЗ.
Сроки внедрения
Месяц 1–2: Модуль приёма (email, веб-форма), базовая классификация по рубрикатору, SLA-трекинг
Месяц 3–4: Интеграция с ЕСИА, модуль маршрутизации, дашборд для руководителей
Месяц 5–6: Генерация проектов ответов, интеграция с базой НПА
Месяц 7–8: СМЭВ-интеграция, аналитика системных проблем, пилот на 3 подразделениях
Месяц 9–10: Масштабирование, обучение сотрудников, оценка эффективности







