feat(legal): build master legal corpus PDF with Constitutional, Housing, Criminal, Admin and State Construction codes
This commit is contained in:
parent
15575c953a
commit
0cdfa04d77
1 changed files with 208 additions and 0 deletions
208
legal_corpus_builder.py
Normal file
208
legal_corpus_builder.py
Normal file
|
|
@ -0,0 +1,208 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
Legal Corpus Builder for Domovoy 2.0 (PyMuPDF Native Engine).
|
||||
Формирует сводный нормативно-правовой корпус законов РФ (LEGAL_CORPUS_MANDATORY.pdf).
|
||||
Полностью автономен, не требует сторонних рендереров.
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import logging
|
||||
from pathlib import Path
|
||||
import fitz # PyMuPDF
|
||||
|
||||
BASE_DIR = Path(__file__).resolve().parent
|
||||
LEGAL_DIR = BASE_DIR / "legal_sources"
|
||||
LEGAL_DIR.mkdir(parents=True, exist_ok=True)
|
||||
OUTPUT_MASTER = BASE_DIR / "LEGAL_CORPUS_MANDATORY.pdf"
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s")
|
||||
log = logging.getLogger("LegalCorpusBuilder")
|
||||
|
||||
CORE_LAWS = [
|
||||
{
|
||||
"filename": "01_Конституция_РФ_Выдержки_МКД.pdf",
|
||||
"title": "КОНСТИТУЦИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ (НОРМЫ ЗАЩИТЫ ПРАВ ГРАЖДАН)",
|
||||
"subtitle": "Принята всенародным голосованием 12 декабря 1993 г.",
|
||||
"articles": [
|
||||
("Статья 33", "Граждане Российской Федерации имеют право обращаться лично, а также направлять индивидуальные и коллективные обращения в государственные органы и органы местного самоуправления."),
|
||||
("Статья 35", "Право частной собственности охраняется законом. Каждый вправе иметь имущество в собственности, владеть, пользоваться и распоряжаться им как единолично, так и совместно с другими лицами. Никто не может быть лишен своего имущества иначе как по решению суда."),
|
||||
("Статья 45", "Государственная защита прав и свобод человека и гражданина в Российской Федерации гарантируется. Каждый вправе защищать свои права и свободы всеми способами, не запрещенными законом."),
|
||||
("Статья 46", "Каждому гарантируется судебная защита его прав и свобод. Решения и действия (или бездействие) органов государственной власти, органов местного самоуправления, общественных объединений и должностных лиц могут быть обжалованы в суд."),
|
||||
("Статья 53", "Каждый имеет право на возмещение государством вреда, причиненного незаконными действиями (или бездействием) органов государственной власти или их должностных лиц.")
|
||||
]
|
||||
},
|
||||
{
|
||||
"filename": "02_ФЗ_59_Порядок_Рассмотрения_Обращений.pdf",
|
||||
"title": "ФЕДЕРАЛЬНЫЙ ЗАКОН № 59-ФЗ «О ПОРЯДКЕ РАССМОТРЕНИЯ ОБРАЩЕНИЙ ГРАЖДАН РФ»",
|
||||
"subtitle": "От 02 мая 2006 года (с изменениями)",
|
||||
"articles": [
|
||||
("Статья 8. Направление и регистрация письменного обращения",
|
||||
"Ч. 2. Письменное обращение подлежит обязательной регистрации в течение трех дней с момента поступления в государственный орган или орган местного самоуправления.\n"
|
||||
"Ч. 6. ЗАПРЕЩАЕТСЯ направлять жалобу на рассмотрение в государственный орган, орган местного самоуправления или должностному лицу, решение или действие (бездействие) которых обжалуется."),
|
||||
("Статья 10. Обязанности должностных лиц при рассмотрении обращения",
|
||||
"Государственный орган или должностное лицо: обеспечивает объективное, всестороннее и своевременное рассмотрение обращения; запрашивает необходимые документы и материалы; принимает меры, направленные на восстановление или защиту нарушенных прав; дает письменный ответ по существу."),
|
||||
("Статья 12. Сроки рассмотрения письменного обращения",
|
||||
"Ч. 1. Письменное обращение рассматривается в течение 30 ДНЕЙ со дня регистрации.\n"
|
||||
"Ч. 2. В исключительных случаях срок может быть продлен не более чем на 30 дней с обязательным письменным уведомлением гражданина до истечения первого срока."),
|
||||
("Статья 15. Ответственность за нарушение законодательства",
|
||||
"Лица, виновные в нарушении настоящего Федерального закона, несут ответственность, предусмотренную законодательством РФ (ст. 5.59 КоАП РФ — административный штраф на должностных лиц).")
|
||||
]
|
||||
},
|
||||
{
|
||||
"filename": "03_Жилищный_Кодекс_РФ_Ключевые_Главы.pdf",
|
||||
"title": "ЖИЛИЩНЫЙ КОДЕКС РОССИЙСКОЙ ФЕДЕРАЦИИ (КЛЮЧЕВЫЕ СТАТЬИ ПО УПРАВЛЕНИЮ МКД)",
|
||||
"subtitle": "Федеральный закон от 29.12.2004 № 188-ФЗ",
|
||||
"articles": [
|
||||
("Статья 36. Право собственности на общее имущество собственников в МКД",
|
||||
"Собственникам помещений в МКД принадлежит на праве общей долевой собственности общее имущество: крыши, ограждающие несущие и ненесущие конструкции, механическое, электрическое, санитарно-техническое и иное оборудование, земельный участок под домом."),
|
||||
("Статья 39. Содержание общего имущества в многоквартирном доме",
|
||||
"Собственники несут бремя расходов на содержание общего имущества соразмерно своей доле. Правила содержания устанавливаются Правительством РФ (ПП № 491)."),
|
||||
("Статьи 44-46. Общее собрание собственников (ОСС)",
|
||||
"ОСС является высшим органом управления МКД. Решения ОСС оформляются протоколами. Решения и протокол ОСС являются официальными документами, влекущими юридические последствия. Их фальсификация влечет уголовную ответственность по ст. 327 УК РФ."),
|
||||
("Статья 161. Выбор способа управления МКД",
|
||||
"Управление МКД должно обеспечивать благоприятные и безопасные условия проживания граждан, надлежащее содержание общего имущества. Надлежащее содержание общего имущества обеспечивается управляющей организацией."),
|
||||
("Статья 162. Договор управления многоквартирным домом",
|
||||
"По договору управления управляющая организация по заданию собственников обязуется выполнять работы и оказывать услуги по надлежащему содержанию и ремонту общего имущества, предоставлять коммунальные услуги. УК обязана ежегодно в течение первого квартала представлять собственникам отчет о выполнении договора."),
|
||||
("Статьи 192-196. Лицензирование деятельности по управлению МКД",
|
||||
"Деятельность УК осуществляется на основании лицензии. За грубые нарушения лицензионных требований дом исключается из реестра лицензий УК (ст. 198 ЖК РФ).")
|
||||
]
|
||||
},
|
||||
{
|
||||
"filename": "04_ПП_РФ_354_Коммунальные_Услуги.pdf",
|
||||
"title": "ПОСТАНОВЛЕНИЕ ПРАВИТЕЛЬСТВА РФ № 354 «ПРАВИЛА ПРЕДОСТАВЛЕНИЯ КОММУНАЛЬНЫХ УСЛУГ»",
|
||||
"subtitle": "От 06 мая 2011 года",
|
||||
"articles": [
|
||||
("Пункт 31. Обязанности исполнителя (УК)",
|
||||
"Исполнитель обязан: предоставлять потребителю коммунальные услуги надлежащего качества; немедленно, но НЕ ПОЗДНЕЕ 2 ЧАСОВ с момента получения сообщения потребителя об аварии организовать проверку факта нарушения; вести учет жалоб; производить перерасчет размера платы."),
|
||||
("Пункты 98-103. Перерасчет платы за коммунальные услуги ненадлежащего качества",
|
||||
"При предоставлении коммунальной услуги ненадлежащего качества размер платы снижается вплоть до полного освобождения потребителя от оплаты за каждый час превышения допустимой продолжительности перерыва."),
|
||||
("Пункты 104-109. Порядок фиксации нарушения качества услуги и составления акта",
|
||||
"По результатам проверки составляется акт проверки. Если представитель УК не явился в течение 2 часов, потребитель вправе составить акт с участием председателя совета дома и не менее чем 2 соседей.")
|
||||
]
|
||||
},
|
||||
{
|
||||
"filename": "05_ПП_РФ_491_Содержание_Общего_Имущества.pdf",
|
||||
"title": "ПОСТАНОВЛЕНИЕ ПРАВИТЕЛЬСТВА РФ № 491 «ПРАВИЛА СОДЕРЖАНИЯ ОБЩЕГО ИМУЩЕСТВА В МКД»",
|
||||
"subtitle": "От 13 августа 2006 года",
|
||||
"articles": [
|
||||
("Пункт 10. Требования к содержанию общего имущества",
|
||||
"Общее имущество должно содержаться в состоянии, обеспечивающем: надежность и безопасность многоквартирного дома; безопасность для жизни и здоровья граждан; постоянную готовность инженерных коммуникаций; соблюдение прав и законных интересов собственников."),
|
||||
("Пункт 42. Ответственность управляющей организации",
|
||||
"Управляющие организации отвечают перед собственниками помещений за нарушение своих обязательств и несут ответственность за надлежащее содержание общего имущества в соответствии с законодательством РФ и договором управления.")
|
||||
]
|
||||
},
|
||||
{
|
||||
"filename": "06_Постановление_Госстроя_170_Сроки_Ремонта.pdf",
|
||||
"title": "ПОСТАНОВЛЕНИЕ ГОССТРОЯ РФ № 170 «ПРАВИЛА И НОРМЫ ТЕХНИЧЕСКОЙ ЭКСПЛУАТАЦИИ ЖИЛФОНДА»",
|
||||
"subtitle": "От 27 сентября 2003 года (Предельные сроки устранения неисправностей при авариях)",
|
||||
"articles": [
|
||||
("Приложение № 2. Предельные сроки устранения аварий",
|
||||
"• Протечки в отдельных местах кровли: СТРОГО 1 СУТКИ с момента обращения.\n"
|
||||
"• Повреждения водосточных труб, воронок, колен: 1 СУТКИ.\n"
|
||||
"• Неисправности аварийного порядка трубопроводов (отопление, ГВС, ХВС): НЕМЕДЛЕННО.\n"
|
||||
"• Неисправности лифта: НЕ БОЛЕЕ 1 СУТОК.\n"
|
||||
"• Разбитые стекла и сорванные створки оконных переплетов в подъездах (зимой): 1 СУТКИ.\n"
|
||||
"• Неисправности электроснабжения (отсутствие света в подъездах): 7 ЧАСОВ.\n"
|
||||
"• Засор мусоропровода, канализации: 1 СУТКИ."),
|
||||
("Пункт 4.6.3.2",
|
||||
"При обнаружении протечек в отдельных местах кровли, независимо от причин их возникновения, управляющая организация обязана немедленно принять меры к их устранению.")
|
||||
]
|
||||
},
|
||||
{
|
||||
"filename": "07_КоАП_РФ_Статьи_Нарушений_ЖКХ.pdf",
|
||||
"title": "КОДЕКС ОБ АДМИНИСТРАТИВНЫХ ПРАВОНАРУШЕНИЯХ РФ (СТАТЬИ ОТВЕТСТВЕННОСТИ УК И ВЕДОМСТВ)",
|
||||
"subtitle": "Применяются при обращениях в ГЖИ, Прокуратуру и Роспотребнадзор",
|
||||
"articles": [
|
||||
("Статья 5.39. Отказ в предоставлении информации",
|
||||
"Неправомерный отказ в предоставлении гражданину информации, предоставление которой предусмотрено законом — влечет наложение штрафа на должностных лиц до 10 000 руб."),
|
||||
("Статья 5.59. Нарушение порядка рассмотрения обращений граждан (по 59-ФЗ)",
|
||||
"Нарушение установленного порядка рассмотрения обращений граждан должностными лицами госорганов — влечет наложение штрафа от 5 000 до 10 000 руб."),
|
||||
("Статья 7.22. Нарушение правил содержания и ремонта жилых домов",
|
||||
"Нарушение лицами, ответственными за содержание жилых домов, правил содержания и ремонта — влечет наложение штрафа на юридических лиц (УК) от 40 000 до 50 000 рублей."),
|
||||
("Статья 7.23. Нарушение нормативов обеспечения коммунальными услугами",
|
||||
"Нарушение нормативного уровня или режима обеспечения населения коммунальными услугами — влечет наложение штрафа на юридических лиц до 100 000 рублей (повторное — до 500 000 руб.)."),
|
||||
("Статья 7.23.3. Нарушение правил предпринимательской деятельности по управлению МКД",
|
||||
"Влечет наложение штрафа на УК от 150 000 до 250 000 рублей."),
|
||||
("Статья 14.1.3. Управление МКД с нарушением лицензионных требований",
|
||||
"Влечет наложение штрафа на УК от 250 000 до 300 000 рублей или дисквалификацию руководителя на срок до 3 лет.")
|
||||
]
|
||||
},
|
||||
{
|
||||
"filename": "08_Уголовный_Кодекс_РФ_Преступления_ЖКХ.pdf",
|
||||
"title": "УГОЛОВНЫЙ КОДЕКС РФ (СТАТЬИ ПО ФАЛЬСИФИКАЦИЯМ И ХИЩЕНИЯМ В СФЕРЕ ЖКХ)",
|
||||
"subtitle": "Применяются при обращениях в Следственный Комитет и МВД",
|
||||
"articles": [
|
||||
("Статья 159. Мошенничество",
|
||||
"Хищение денежных средств собственников МКД путем обмана или злоупотребления доверием (приписки в отчетах, списание средств за невыполненные работы). Наказывается лишением свободы на срок до 10 лет."),
|
||||
("Статья 160. Присвоение или растрата",
|
||||
"Хищение чужого имущества, вверенного виновному (нецелевое расходование средств текущего ремонта или фонда содержания общего имущества дома)."),
|
||||
("Статья 201. Злоупотребление полномочиями",
|
||||
"Использование лицом, выполняющим управленческие функции в УК, своих полномочий вопреки законным интересам организации и граждан."),
|
||||
("Статья 293. Халатность",
|
||||
"Неисполнение или ненадлежащее исполнение должностным лицом надзорного органа (ГЖИ, Администрации) своих обязанностей вследствие недобросовестного отношения к службе."),
|
||||
("Статья 327. Подделка официальных документов",
|
||||
"Подделка официального документа (бюллетеней голосования ОСС, протокола общего собрания собственников МКД) в целях его использования. Наказывается лишением свободы на срок до 2 лет.")
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
def build_pdf_document(law: dict) -> Path:
|
||||
doc = fitz.open()
|
||||
page = doc.new_page(width=595, height=842) # A4
|
||||
|
||||
# Header
|
||||
page.draw_rect(fitz.Rect(35, 30, 560, 85), color=(0.1, 0.25, 0.5), fill=(0.95, 0.97, 1.0), width=1)
|
||||
page.insert_text(fitz.Point(45, 52), law["title"][:70], fontsize=10.5, color=(0.05, 0.15, 0.35))
|
||||
page.insert_text(fitz.Point(45, 68), law["subtitle"][:85], fontsize=8, color=(0.3, 0.3, 0.3))
|
||||
page.insert_text(fitz.Point(45, 80), "ЮРИДИЧЕСКИЙ КОРПУС СИСТЕМЫ «ДОМОВОЙ 2.0» | ЛЕНКОМ 37", fontsize=7, color=(0.1, 0.3, 0.6))
|
||||
|
||||
y = 105
|
||||
for title, text in law["articles"]:
|
||||
# Проверяем, помещается ли статья на странице
|
||||
est_height = 40 + len(text) * 0.25
|
||||
if y + est_height > 800:
|
||||
page = doc.new_page(width=595, height=842)
|
||||
y = 40
|
||||
|
||||
page.draw_rect(fitz.Rect(35, y, 560, y + 16), color=(0.85, 0.88, 0.92), fill=(0.92, 0.94, 0.97), width=0.5)
|
||||
page.insert_text(fitz.Point(42, y + 12), title[:85], fontsize=9, color=(0.08, 0.2, 0.45))
|
||||
y += 22
|
||||
|
||||
rect = fitz.Rect(40, y, 555, y + est_height)
|
||||
page.insert_textbox(rect, text, fontsize=8.5, color=(0.12, 0.12, 0.12))
|
||||
y += est_height + 10
|
||||
|
||||
out_path = LEGAL_DIR / law["filename"]
|
||||
doc.save(out_path, garbage=3, deflate=True)
|
||||
doc.close()
|
||||
log.info(f"Generated: {out_path.name}")
|
||||
return out_path
|
||||
|
||||
def consolidate_legal_corpus():
|
||||
log.info("Generating individual legal PDFs...")
|
||||
pdf_paths = [build_pdf_document(law) for law in CORE_LAWS]
|
||||
|
||||
log.info("Consolidating all legal sources into master LEGAL_CORPUS_MANDATORY.pdf...")
|
||||
master = fitz.open()
|
||||
toc = []
|
||||
page_count = 0
|
||||
|
||||
for idx, p in enumerate(pdf_paths, 1):
|
||||
doc = fitz.open(p)
|
||||
doc_len = len(doc)
|
||||
title = CORE_LAWS[idx-1]["title"]
|
||||
toc.append([1, title, page_count + 1])
|
||||
master.insert_pdf(doc)
|
||||
page_count += doc_len
|
||||
doc.close()
|
||||
|
||||
master.set_toc(toc)
|
||||
master.save(OUTPUT_MASTER, garbage=3, deflate=True)
|
||||
master.close()
|
||||
|
||||
size_kb = OUTPUT_MASTER.stat().st_size / 1024
|
||||
log.info(f"✅ Master Legal Corpus compiled: {OUTPUT_MASTER} ({size_kb:.1f} KB, {page_count} pages)")
|
||||
|
||||
if __name__ == "__main__":
|
||||
consolidate_legal_corpus()
|
||||
Loading…
Reference in a new issue