"""快速测试 - 验证完整列表+详情流程"""
import scrapy
from datetime import datetime
from gov_crawler.items import AnnouncementItem
from utils.page_parser import PageParser


class QuickTestSpider(scrapy.Spider):
    name = "quick_test"
    start_urls = [
        "http://www.ahhuoshan.gov.cn/public/column/6597441?type=4&action=list",
        "http://www.ahjinzhai.gov.cn/zwzx/gsgg/index.html",
    ]
    custom_settings = {
        'ROBOTSTXT_OBEY': False,
        'DOWNLOAD_TIMEOUT': 30,
        'LOG_LEVEL': 'INFO',
        'CONCURRENT_REQUESTS': 2,
    }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.parser = PageParser()

    def parse(self, response):
        items = self.parser.parse_list_page(response)
        self.logger.info(f"📋 {response.url[:50]}... -> {len(items)} items")

        for item_data in items[:5]:
            self.logger.info(f"  → {item_data['title'][:40]} | {item_data['date']} | ...{item_data['url'][-40:]}")
            yield scrapy.Request(
                url=item_data['url'],
                callback=self.parse_detail,
                meta={'item_data': item_data, 'list_url': response.url},
            )

    def parse_detail(self, response):
        content = self.parser.parse_detail_page(response)
        item_data = response.meta['item_data']
        item = AnnouncementItem()
        item['site_name'] = '测试站点'
        item['source_url'] = response.meta['list_url']
        item['page_url'] = response.url
        item['domain'] = response.url.split('/')[2]
        item['title'] = item_data['title']
        item['publish_date'] = item_data['date']
        item['content'] = content[:1000]
        item['content_text'] = content[:300]
        item['crawl_time'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        item['status'] = 'success'
        item['error_msg'] = ''
        self.logger.info(f"  ✅ 详情: {item['title'][:30]} | {item['publish_date']} | {len(content)} chars")
        yield item
