исправление в выгрузке за пеиод прибавляющее один день к финишу, это связано с особенностями sql запроса
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-05-08 14:35:42 +10:00
parent dd1c36b9de
commit 656c8d9d9a

View File

@@ -112,13 +112,13 @@ def setup_routes(app: FastAPI) -> None:
@app.post("/download_all", summary="Скачать все файлы за период")
async def download_all(dates: DownloadRange, background_tasks: BackgroundTasks):
date_start = dates.data_start
date_finish = dates.data_finish
date_start_str = dates.data_start
date_finish_str = dates.data_finish
field_name = getattr(dates, 'field_name', 'status') # Поле для фильтрации (по умолчанию 'status')
try:
start_date = datetime.strptime(date_start, "%Y-%m-%d")
finish_date = datetime.strptime(date_finish, "%Y-%m-%d")
start_date = datetime.strptime(date_start_str, "%Y-%m-%d")
finish_date = datetime.strptime(date_finish_str, "%Y-%m-%d") + timedelta(days=1)
except ValueError:
return {"error": "Неверный формат даты. Используйте YYYY-MM-DD"}
@@ -126,18 +126,21 @@ def setup_routes(app: FastAPI) -> None:
return {"error": "Дата начала не может быть позже даты окончания"}
# 1. Получаем список заголовков из БД
start_date_str = start_date.strftime("%Y-%m-%d")
finish_date_str = finish_date.strftime("%Y-%m-%d")
try:
titles_from_db = wp.get_articles_by_filter(field_name, date_start, date_finish)
titles_from_db = wp.get_articles_by_filter(field_name, start_date_str, finish_date_str)
except Exception as e:
return {"error": f"Ошибка при получении данных из БД: {e}"}
if not titles_from_db:
return {"error": "Нет статей с выбранным фильтром за указанный период", "field_name": field_name}
# 2. Собираем все файлы .docx за период
all_files = []
current_date = start_date
while current_date <= finish_date + timedelta(days=1):
while current_date <= finish_date :
date_path = current_date.strftime("%Y/%m/%d")
full_dir_path = os.path.join(DOCUMENTS_DIR, date_path)
@@ -152,11 +155,11 @@ def setup_routes(app: FastAPI) -> None:
if not all_files:
return {"error": "Файлы не найдены за указанный период",
"date_start": date_start,
"date_finish": date_finish,
"date_start": date_start_str,
"date_finish": date_finish_str,
"titles_found": len(titles_from_db)}
archive_name = f"documents_{date_start}_{date_finish}.zip"
archive_name = f"documents_{date_start_str}_{date_finish_str}.zip"
archive_path = os.path.join(DOCUMENTS_DIR, archive_name)
try: