2026-09-24 23:45:40 [scrapy.utils.log] INFO: Scrapy 2.11.1 started (bot: news_scraper) 2026-09-24 23:45:40 [scrapy.utils.log] INFO: Versions: lxml 6.0.2.0, libxml2 2.14.6, cssselect 1.3.0, parsel 1.10.0, w3lib 2.3.1, Twisted 25.5.0, Python 3.11.13 (main, Aug 12 2025, 22:39:41) [GCC 14.2.0], pyOpenSSL 25.3.0 (OpenSSL 3.5.3 16 Sep 2025), cryptography 46.0.1, Platform Linux-5.15.0-191-generic-x86_64-with 2026-09-24 23:45:40 [scrapy.addons] INFO: Enabled addons: [] 2026-09-24 23:45:40 [asyncio] DEBUG: Using selector: EpollSelector 2026-09-24 23:45:40 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor 2026-09-24 23:45:40 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.unix_events._UnixSelectorEventLoop 2026-09-24 23:45:40 [scrapy.extensions.telnet] INFO: Telnet Password: d1a59a9f8bc05ea4 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from creating-client-class.iot-data to creating-client-class.iot-data-plane 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from before-call.apigateway to before-call.api-gateway 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from request-created.machinelearning.Predict to request-created.machine-learning.Predict 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.autoscaling.CreateLaunchConfiguration to before-parameter-build.auto-scaling.CreateLaunchConfiguration 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.route53 to before-parameter-build.route-53 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from request-created.cloudsearchdomain.Search to request-created.cloudsearch-domain.Search 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from docs.*.autoscaling.CreateLaunchConfiguration.complete-section to docs.*.auto-scaling.CreateLaunchConfiguration.complete-section 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.logs.CreateExportTask to before-parameter-build.cloudwatch-logs.CreateExportTask 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from docs.*.logs.CreateExportTask.complete-section to docs.*.cloudwatch-logs.CreateExportTask.complete-section 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.cloudsearchdomain.Search to before-parameter-build.cloudsearch-domain.Search 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from docs.*.cloudsearchdomain.Search.complete-section to docs.*.cloudsearch-domain.Search.complete-section 2026-09-24 23:45:41 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/endpoints.json 2026-09-24 23:45:41 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/sdk-default-configuration.json 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Event choose-service-name: calling handler 2026-09-24 23:45:41 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/service-2.json.gz 2026-09-24 23:45:41 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/endpoint-rule-set-1.json.gz 2026-09-24 23:45:41 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/partitions.json 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler ._handler at 0x7fa369bbc860> 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2026-09-24 23:45:41 [botocore.endpoint] DEBUG: Setting s3 timeout as (60, 60) 2026-09-24 23:45:41 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/_retry.json 2026-09-24 23:45:41 [botocore.client] DEBUG: Registering retry handlers for service: s3 2026-09-24 23:45:41 [botocore.utils] DEBUG: Registering S3 region redirector handler 2026-09-24 23:45:41 [botocore.utils] DEBUG: Registering S3Express Identity Resolver 2026-09-24 23:45:41 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.memusage.MemoryUsage', 'scrapy.extensions.closespider.CloseSpider', 'scrapy.extensions.feedexport.FeedExporter', 'scrapy.extensions.logstats.LogStats', 'scrapy.extensions.throttle.AutoThrottle'] 2026-09-24 23:45:41 [scrapy.crawler] INFO: Overridden settings: {'AUTOTHROTTLE_ENABLED': True, 'BOT_NAME': 'news_scraper', 'CLOSESPIDER_TIMEOUT': 1800, 'CONCURRENT_REQUESTS': 4, 'DOWNLOAD_DELAY': 2, 'FEED_EXPORT_ENCODING': 'utf-8', 'LOG_FILE': '/opt/scrapyd/logs/news_scraper/thanhnien_timestamp/fda7afa6b87111f1a00e9270e2e49414.log', 'NEWSPIDER_MODULE': 'news_scraper.spiders', 'REQUEST_FINGERPRINTER_IMPLEMENTATION': '2.7', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['news_scraper.spiders'], 'TWISTED_REACTOR': 'twisted.internet.asyncioreactor.AsyncioSelectorReactor'} 2026-09-24 23:45:41 [scrapy.middleware] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'news_scraper.middlewares.NewsScraperDownloaderMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2026-09-24 23:45:41 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2026-09-24 23:45:41 [scrapy.middleware] INFO: Enabled item pipelines: [] 2026-09-24 23:45:41 [scrapy.core.engine] INFO: Spider opened 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from creating-client-class.iot-data to creating-client-class.iot-data-plane 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from before-call.apigateway to before-call.api-gateway 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from request-created.machinelearning.Predict to request-created.machine-learning.Predict 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.autoscaling.CreateLaunchConfiguration to before-parameter-build.auto-scaling.CreateLaunchConfiguration 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.route53 to before-parameter-build.route-53 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from request-created.cloudsearchdomain.Search to request-created.cloudsearch-domain.Search 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from docs.*.autoscaling.CreateLaunchConfiguration.complete-section to docs.*.auto-scaling.CreateLaunchConfiguration.complete-section 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.logs.CreateExportTask to before-parameter-build.cloudwatch-logs.CreateExportTask 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from docs.*.logs.CreateExportTask.complete-section to docs.*.cloudwatch-logs.CreateExportTask.complete-section 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.cloudsearchdomain.Search to before-parameter-build.cloudsearch-domain.Search 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Changing event name from docs.*.cloudsearchdomain.Search.complete-section to docs.*.cloudsearch-domain.Search.complete-section 2026-09-24 23:45:41 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/endpoints.json 2026-09-24 23:45:41 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/sdk-default-configuration.json 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Event choose-service-name: calling handler 2026-09-24 23:45:41 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/service-2.json.gz 2026-09-24 23:45:41 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/endpoint-rule-set-1.json.gz 2026-09-24 23:45:41 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/partitions.json 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler ._handler at 0x7fa368c21940> 2026-09-24 23:45:41 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2026-09-24 23:45:41 [botocore.endpoint] DEBUG: Setting s3 timeout as (60, 60) 2026-09-24 23:45:41 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/_retry.json 2026-09-24 23:45:41 [botocore.client] DEBUG: Registering retry handlers for service: s3 2026-09-24 23:45:41 [botocore.utils] DEBUG: Registering S3 region redirector handler 2026-09-24 23:45:41 [botocore.utils] DEBUG: Registering S3Express Identity Resolver 2026-09-24 23:45:41 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2026-09-24 23:45:41 [thanhnien_timestamp] INFO: Spider opened: thanhnien_timestamp 2026-09-24 23:45:41 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6026 2026-09-24 23:45:41 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None) 2026-09-24 23:45:45 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None) 2026-09-24 23:45:47 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/) 2026-09-24 23:45:50 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:45:50 [thanhnien_timestamp] INFO: 2026-09-25 05:52:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:45:52 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:45:52 [thanhnien_timestamp] INFO: 2026-09-25 05:54:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:45:54 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:45:55 [thanhnien_timestamp] INFO: 2026-09-25 05:55:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:45:57 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:45:57 [thanhnien_timestamp] INFO: 2026-09-25 05:58:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:46:00 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:00 [thanhnien_timestamp] INFO: 2026-09-25 06:00:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:46:03 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:03 [thanhnien_timestamp] INFO: 2026-09-25 06:00:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:46:05 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:05 [thanhnien_timestamp] INFO: 2026-09-25 06:00:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:46:06 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:07 [thanhnien_timestamp] INFO: 2026-09-25 06:00:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:46:09 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:09 [thanhnien_timestamp] INFO: 2026-09-25 06:00:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:46:11 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:11 [thanhnien_timestamp] INFO: 2026-09-25 06:00:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:46:13 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:13 [thanhnien_timestamp] INFO: 2026-09-25 06:00:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:46:16 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:16 [thanhnien_timestamp] INFO: 2026-09-25 06:15:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:46:18 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:18 [thanhnien_timestamp] INFO: 2026-09-25 06:16:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:46:20 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:20 [thanhnien_timestamp] INFO: 2026-09-25 06:17:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:46:22 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:22 [thanhnien_timestamp] INFO: 2026-09-25 06:19:00 not in 2026-09-25 06:25:00 to 2026-09-25 06:40:00 2026-09-24 23:46:25 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:25 [openai._base_client] DEBUG: Request options: {'method': 'post', 'url': '/chat/completions', 'files': None, 'json_data': {'messages': [{'role': 'user', 'content': 'Act as a content analysis tool. I will provide you with a piece of content, and your task is to extract relevant tags (keywords or phrases) that summarize the main topics, themes, or ideas present in the text. The tags should be concise, specific, and useful for categorization or search purposes. Ignore common filler words (e.g., \'the\', \'and\', \'is\') unless they are part of a specific concept or phrase. After analyzing the content, return the tags in a simple list format. Here is the content to analyze: Với mức giá từ 64,99 triệu đồng, iPhone Duo được xem là sản phẩm độc đáo và đắt giá nhất từ trước đến nay của Apple. Được ra mắt cùng dòng iPhone 18 Pro vào rạng sáng 10.9, nhưng iPhone Duo chỉ bắt đầu đến tay người tiêu dùng từ ngày 23.10, sau khi mở đơn đặt hàng trước từ ngày 16.10. Trong khi giá bán và ngày phát hành cụ thể đã được Apple xác nhận, một thông tin quan trọng mà công ty Mỹ vẫn chưa xác nhận về iPhone Duo chính là chi phí sửa chữa thiết bị. Đây là chi tiết được người tiêu dùng quan tâm, đặc biệt sau khi Apple công bố chi phí thay pin iPhone 18 Pro Max là 129 USD, trong khi các hư hỏng khác là 899 USD. Chi phí này sẽ giảm đi nhiều nếu khách hàng đăng ký gói AppleCare, với phí thay pin là miễn phí, còn các hư hỏng khác là 149 USD. Đối với iPhone Duo, thông tin về dịch vụ sửa chữa vẫn còn hạn chế. Với một sản phẩm đắt đỏ, nhiều khả năng người tiêu dùng sẽ chọn mua AppleCare để giảm chi phí nếu có hư hỏng. Trong khi đó, phí sửa chữa ngoài phạm vi bảo hiểm AppleCare hiện vẫn chưa rõ ràng. Tuy nhiên, báo cáo mới cho thấy dịch vụ sửa chữa iPhone Duo có thể không quá đắt đỏ nếu có gói AppleCare. Cụ thể, trang PhoneArena ước tính chi phí sửa chữa màn hình bên trong khoảng 100 USD, còn chi phí cho trường hợp "mất cắp hoặc thất lạc" là 149 USD. Đây là những con số có thể giúp người dùng yên tâm hơn khi sử dụng iPhone Duo. Đối với trường hợp không mua AppleCare, người dùng có thể phải đối mặt với những chi phí sửa chữa cao hơn. Apple vẫn chưa công bố chính thức chi phí sửa chữa cho iPhone Duo, nhưng có thể việc thay thế màn hình và bản lề sẽ tốn kém nếu không có bảo hiểm. Để có cái nhìn rõ hơn về chi phí sửa chữa điện thoại gập, người dùng có thể tham khảo một mẫu điện thoại gập khác đang có trên thị trường là Xiaomi 18 Fold . Mẫu smartphone có giá khởi điểm 1.639 USD này yêu cầu phí thay màn hình trong là 536 USD, trong khi màn hình ngoài là 112 USD. Việc thay thế bo mạch chủ trên phiên bản cao cấp có thể lên tới 885 USD. Nhìn chung, iPhone Duo không chỉ là một sản phẩm công nghệ tiên tiến mà còn là một khoản đầu tư lớn, vì vậy việc lựa chọn gói bảo hiểm phù hợp sẽ giúp người dùng tiết kiệm chi phí sửa chữa trong tương lai.'}], 'model': 'gpt-4o-mini', 'max_tokens': 200, 'temperature': 0.3}} 2026-09-24 23:46:25 [openai._base_client] DEBUG: Sending HTTP Request: POST https://api.openai.com/v1/chat/completions 2026-09-24 23:46:25 [httpcore.connection] DEBUG: connect_tcp.started host='api.openai.com' port=443 local_address=None timeout=900 socket_options=None 2026-09-24 23:46:25 [httpcore.connection] DEBUG: connect_tcp.complete return_value= 2026-09-24 23:46:25 [httpcore.connection] DEBUG: start_tls.started ssl_context= server_hostname='api.openai.com' timeout=900 2026-09-24 23:46:25 [httpcore.connection] DEBUG: start_tls.complete return_value= 2026-09-24 23:46:25 [httpcore.http11] DEBUG: send_request_headers.started request= 2026-09-24 23:46:25 [httpcore.http11] DEBUG: send_request_headers.complete 2026-09-24 23:46:25 [httpcore.http11] DEBUG: send_request_body.started request= 2026-09-24 23:46:25 [httpcore.http11] DEBUG: send_request_body.complete 2026-09-24 23:46:25 [httpcore.http11] DEBUG: receive_response_headers.started request= 2026-09-24 23:46:27 [httpcore.http11] DEBUG: receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Thu, 24 Sep 2026 23:46:27 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'CF-Ray', b'a405ab203fd604b7-HKG'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Server', b'cloudflare'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'X-Content-Type-Options', b'nosniff'), (b'access-control-expose-headers', b'X-Request-ID'), (b'access-control-expose-headers', b'CF-Ray'), (b'Access-Control-Expose-Headers', b'CF-Ray'), (b'openai-organization', b'user-bmggli0qfnphtzkdehrnfdrn'), (b'openai-processing-ms', b'1281'), (b'openai-project', b'proj_AqBCEfNib7E5LbrMYDz2oklk'), (b'openai-version', b'2020-10-01'), (b'x-openai-proxy-wasm', b'v0.1'), (b'x-ratelimit-limit-requests', b'30000'), (b'x-ratelimit-limit-tokens', b'150000000'), (b'x-ratelimit-remaining-requests', b'29999'), (b'x-ratelimit-remaining-tokens', b'149999177'), (b'x-ratelimit-reset-requests', b'2ms'), (b'x-ratelimit-reset-tokens', b'0s'), (b'x-request-id', b'req_be697edfbd6e434b9df512207dceaeb1'), (b'set-cookie', b'__cf_bm=Hkre0AUKhobE5iY.UE8O_4AZeliWBd._RU22darKh90-1790293585.9543242-1.0.1.1-3wxVaeKgP.4Y15Oj0AYHZSeQmHLH4mRiEWUb6XLAFeXfMJtdnjKy6H0nEpvXh_bMTbBndYeTo7NMpRD7Gptl4ExND3mFGC7pIDiz3UWoioSk.AtU_qwFrUCpQHKNfXDr; HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 25 Sep 2026 00:16:27 GMT'), (b'Content-Encoding', b'gzip'), (b'alt-svc', b'h3=":443"; ma=86400')]) 2026-09-24 23:46:27 [httpx] INFO: HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK" 2026-09-24 23:46:27 [httpcore.http11] DEBUG: receive_response_body.started request= 2026-09-24 23:46:27 [httpcore.http11] DEBUG: receive_response_body.complete 2026-09-24 23:46:27 [httpcore.http11] DEBUG: response_closed.started 2026-09-24 23:46:27 [httpcore.http11] DEBUG: response_closed.complete 2026-09-24 23:46:27 [openai._base_client] DEBUG: HTTP Response: POST https://api.openai.com/v1/chat/completions "200 OK" Headers([('date', 'Thu, 24 Sep 2026 23:46:27 GMT'), ('content-type', 'application/json'), ('transfer-encoding', 'chunked'), ('connection', 'keep-alive'), ('cf-ray', 'a405ab203fd604b7-HKG'), ('cf-cache-status', 'DYNAMIC'), ('server', 'cloudflare'), ('strict-transport-security', 'max-age=31536000; includeSubDomains; preload'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'X-Request-ID'), ('access-control-expose-headers', 'CF-Ray'), ('access-control-expose-headers', 'CF-Ray'), ('openai-organization', 'user-bmggli0qfnphtzkdehrnfdrn'), ('openai-processing-ms', '1281'), ('openai-project', 'proj_AqBCEfNib7E5LbrMYDz2oklk'), ('openai-version', '2020-10-01'), ('x-openai-proxy-wasm', 'v0.1'), ('x-ratelimit-limit-requests', '30000'), ('x-ratelimit-limit-tokens', '150000000'), ('x-ratelimit-remaining-requests', '29999'), ('x-ratelimit-remaining-tokens', '149999177'), ('x-ratelimit-reset-requests', '2ms'), ('x-ratelimit-reset-tokens', '0s'), ('x-request-id', 'req_be697edfbd6e434b9df512207dceaeb1'), ('set-cookie', '__cf_bm=Hkre0AUKhobE5iY.UE8O_4AZeliWBd._RU22darKh90-1790293585.9543242-1.0.1.1-3wxVaeKgP.4Y15Oj0AYHZSeQmHLH4mRiEWUb6XLAFeXfMJtdnjKy6H0nEpvXh_bMTbBndYeTo7NMpRD7Gptl4ExND3mFGC7pIDiz3UWoioSk.AtU_qwFrUCpQHKNfXDr; HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 25 Sep 2026 00:16:27 GMT'), ('content-encoding', 'gzip'), ('alt-svc', 'h3=":443"; ma=86400')]) 2026-09-24 23:46:27 [openai._base_client] DEBUG: request_id: req_be697edfbd6e434b9df512207dceaeb1 2026-09-24 23:46:27 [thanhnien_timestamp] INFO: Min timestamp: 2026-09-25 06:25:00, Published timestamp: 2026-09-25 06:28:00 2026-09-24 23:46:27 [urllib3.connectionpool] DEBUG: Starting new HTTP connection (1): tts-api:4444 2026-09-24 23:46:41 [urllib3.connectionpool] DEBUG: http://tts-api:4444 "POST /api/v2/text-to-speech HTTP/1.1" 200 408 2026-09-24 23:46:41 [scrapy.core.scraper] DEBUG: Scraped from <200 https://thanhnien.vn/mot-dieu-ve-iphone-duo-van-chua-duoc-apple-tiet-lo-185260924155142692.htm> {'audio_url': 'https://lake-api.blaze.vn/tts-data/wrkuxnws-2026-09-24%2023%3A46%3A27.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=BLZ4B6CBCE73519431B%2F20260924%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260924T234640Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=ebd5d44f428a8e403b6578e90c4fd83bd900b7479fc6ae0dba7b40abb2ad8290', 'author': None, 'category': 'Công nghệ', 'content': 'Với mức giá từ 64,99 triệu đồng, iPhone Duo được xem là sản phẩm ' 'độc đáo và đắt giá nhất từ trước đến nay của Apple. Được ra mắt ' 'cùng dòng iPhone 18 Pro vào rạng sáng 10.9, nhưng iPhone Duo chỉ ' 'bắt đầu đến tay người tiêu dùng từ ngày 23.10, sau khi mở đơn đặt ' 'hàng trước từ ngày 16.10. Trong khi giá bán và ngày phát hành cụ ' 'thể đã được Apple xác nhận, một thông tin quan trọng mà công ty ' 'Mỹ vẫn chưa xác nhận về iPhone Duo chính là chi phí sửa chữa ' 'thiết bị. Đây là chi tiết được người tiêu dùng quan tâm, đặc biệt ' 'sau khi Apple công bố chi phí thay pin iPhone 18 Pro Max là 129 ' 'USD, trong khi các hư hỏng khác là 899 USD. Chi phí này sẽ giảm ' 'đi nhiều nếu khách hàng đăng ký gói AppleCare, với phí thay pin ' 'là miễn phí, còn các hư hỏng khác là 149 USD. Đối với iPhone Duo, ' 'thông tin về dịch vụ sửa chữa vẫn còn hạn chế. Với một sản phẩm ' 'đắt đỏ, nhiều khả năng người tiêu dùng sẽ chọn mua AppleCare để ' 'giảm chi phí nếu có hư hỏng. Trong khi đó, phí sửa chữa ngoài ' 'phạm vi bảo hiểm AppleCare hiện vẫn chưa rõ ràng. Tuy nhiên, báo ' 'cáo mới cho thấy dịch vụ sửa chữa iPhone Duo có thể không quá đắt ' 'đỏ nếu có gói AppleCare. Cụ thể, trang PhoneArena ước tính chi ' 'phí sửa chữa màn hình bên trong khoảng 100 USD, còn chi phí cho ' 'trường hợp "mất cắp hoặc thất lạc" là 149 USD. Đây là những con ' 'số có thể giúp người dùng yên tâm hơn khi sử dụng iPhone Duo. Đối ' 'với trường hợp không mua AppleCare, người dùng có thể phải đối ' 'mặt với những chi phí sửa chữa cao hơn. Apple vẫn chưa công bố ' 'chính thức chi phí sửa chữa cho iPhone Duo, nhưng có thể việc ' 'thay thế màn hình và bản lề sẽ tốn kém nếu không có bảo hiểm. Để ' 'có cái nhìn rõ hơn về chi phí sửa chữa điện thoại gập, người dùng ' 'có thể tham khảo một mẫu điện thoại gập khác đang có trên thị ' 'trường là Xiaomi 18 Fold . Mẫu smartphone có giá khởi điểm 1.639 ' 'USD này yêu cầu phí thay màn hình trong là 536 USD, trong khi màn ' 'hình ngoài là 112 USD. Việc thay thế bo mạch chủ trên phiên bản ' 'cao cấp có thể lên tới 885 USD. Nhìn chung, iPhone Duo không chỉ ' 'là một sản phẩm công nghệ tiên tiến mà còn là một khoản đầu tư ' 'lớn, vì vậy việc lựa chọn gói bảo hiểm phù hợp sẽ giúp người dùng ' 'tiết kiệm chi phí sửa chữa trong tương lai.', 'description': 'Apple đã tiết lộ giá bán iPhone Duo nhưng vẫn giữ kín chi phí ' 'sửa chữa mẫu iPhone gập đầu tiên của hãng.', 'html_content': '

Với mức giá từ ' '64,99 triệu đồng, iPhone Duo được xem ' 'là sản phẩm độc đáo và đắt giá nhất từ trước đến nay của ' 'Apple. Được ra mắt cùng dòng iPhone 18 Pro vào rạng sáng ' '10.9, nhưng iPhone Duo chỉ bắt đầu đến tay người tiêu dùng ' 'từ ngày 23.10, sau khi mở đơn đặt hàng trước từ ngày ' '16.10.

Một bí mật '
                 'về iPhone Duo vẫn chưa được Apple tiết lộ - Ảnh 1.

Người dùng được khuyến cáo nên chuẩn bị thêm ' 'tiền cho gói AppleCare khi mua iPhone ' 'Duo

ẢNH: ' 'APPLE

Trong khi giá bán và ngày phát ' 'hành cụ thể đã được Apple xác nhận, một thông tin quan trọng ' 'mà công ty Mỹ vẫn chưa xác nhận về iPhone Duo chính là chi ' 'phí sửa chữa thiết bị. Đây là chi tiết được người tiêu dùng ' 'quan tâm, đặc biệt sau khi Apple công bố chi phí thay pin ' 'iPhone 18 Pro Max là 129 USD, trong khi các hư hỏng khác là ' '899 USD. Chi phí này sẽ giảm đi nhiều nếu khách hàng đăng ký ' 'gói AppleCare, với phí thay pin là miễn phí, còn các hư hỏng ' 'khác là 149 USD.

Đối với iPhone Duo, thông tin về dịch ' 'vụ sửa chữa vẫn còn hạn chế. Với một sản phẩm đắt đỏ, nhiều ' 'khả năng người tiêu dùng sẽ chọn mua AppleCare để giảm ' 'chi phí nếu có hư hỏng. Trong khi đó, phí sửa chữa ngoài ' 'phạm vi bảo hiểm AppleCare hiện vẫn chưa rõ ràng.

Phí ' 'sửa chữa iPhone Duo sẽ mềm hơn nếu có AppleCare

Tuy ' 'nhiên, báo cáo mới cho thấy dịch vụ sửa chữa iPhone Duo có ' 'thể không quá đắt đỏ nếu có gói AppleCare. Cụ thể, trang ' 'PhoneArena ước tính chi phí sửa chữa màn hình bên trong ' 'khoảng 100 USD, còn chi phí cho trường hợp "mất cắp hoặc ' 'thất lạc" là 149 USD. Đây là những con số có thể giúp người ' 'dùng yên tâm hơn khi sử dụng iPhone Duo.

Đối với ' 'trường hợp không mua AppleCare, người dùng có thể phải đối ' 'mặt với những chi phí sửa chữa cao hơn. Apple vẫn chưa công ' 'bố chính thức chi phí sửa chữa cho iPhone Duo, nhưng có thể ' 'việc thay thế màn hình và bản lề sẽ tốn kém nếu không có bảo ' 'hiểm.

Để có cái nhìn rõ hơn về chi phí sửa chữa điện ' 'thoại gập, người dùng có thể tham khảo một mẫu điện thoại ' 'gập khác đang có trên thị trường là Xiaomi 18 Fold. ' 'Mẫu smartphone có giá khởi điểm 1.639 USD này yêu cầu phí ' 'thay màn hình trong là 536 USD, trong khi màn hình ngoài là ' '112 USD. Việc thay thế bo mạch chủ trên phiên bản cao cấp có ' 'thể lên tới 885 USD.

Nhìn chung, iPhone Duo không chỉ ' 'là một sản phẩm công nghệ tiên tiến mà còn là một khoản đầu ' 'tư lớn, vì vậy việc lựa chọn gói bảo hiểm phù hợp sẽ giúp ' 'người dùng tiết kiệm chi phí sửa chữa trong tương ' 'lai.

\n' ' \n' '\n' '\n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' '\n' '
', 'md_content': 'Với mức giá từ 64,99 triệu đồng, [iPhone ' 'Duo](https://thanhnien.vn/camera-kep-tren-iphone-duo-co-gi-khac-galaxy-z-fold8-185260923173103964.htm ' '"iPhone Duo") được xem là sản phẩm độc đáo và đắt giá nhất từ ' 'trước đến nay của Apple. Được ra mắt cùng dòng iPhone 18 Pro ' 'vào rạng sáng 10.9, nhưng iPhone Duo chỉ bắt đầu đến tay người ' 'tiêu dùng từ ngày 23.10, sau khi mở đơn đặt hàng trước từ ngày ' '16.10.\n' '\n' '![Một bí mật về iPhone Duo vẫn chưa được Apple tiết lộ - Ảnh ' '1.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2026/9/24/1-17902397481121649771855.jpg)Người ' 'dùng được khuyến cáo nên chuẩn bị thêm tiền cho gói AppleCare ' 'khi mua iPhone Duo\n' '\n' 'ẢNH: APPLE\n' '\n' 'Trong khi giá bán và ngày phát hành cụ thể đã được Apple xác ' 'nhận, một thông tin quan trọng mà công ty Mỹ vẫn chưa xác nhận ' 'về iPhone Duo chính là chi phí sửa chữa thiết bị. Đây là chi ' 'tiết được người tiêu dùng quan tâm, đặc biệt sau khi Apple ' 'công bố chi phí thay pin iPhone 18 Pro Max là 129 USD, trong ' 'khi các hư hỏng khác là 899 USD. Chi phí này sẽ giảm đi nhiều ' 'nếu khách hàng đăng ký gói AppleCare, với phí thay pin là miễn ' 'phí, còn các hư hỏng khác là 149 USD.\n' '\n' 'Đối với iPhone Duo, thông tin về dịch vụ sửa chữa vẫn còn hạn ' 'chế. Với một sản phẩm đắt đỏ, nhiều khả năng người tiêu dùng ' 'sẽ chọn mua ' '[AppleCare](https://thanhnien.vn/apple-ra-mat-goi-bao-hanh-theo-thang-cho-nhieu-thiet-bi-185250724095333647.htm ' '"AppleCare") để giảm chi phí nếu có hư hỏng. Trong khi đó, phí ' 'sửa chữa ngoài phạm vi bảo hiểm AppleCare hiện vẫn chưa rõ ' 'ràng.\n' '\n' '## Phí sửa chữa iPhone Duo sẽ mềm hơn nếu có AppleCare\n' '\n' 'Tuy nhiên, báo cáo mới cho thấy dịch vụ sửa chữa iPhone Duo có ' 'thể không quá đắt đỏ nếu có gói AppleCare. Cụ thể, trang ' '*PhoneArena* ước tính chi phí sửa chữa màn hình bên trong ' 'khoảng 100 USD, còn chi phí cho trường hợp "mất cắp hoặc thất ' 'lạc" là 149 USD. Đây là những con số có thể giúp người dùng ' 'yên tâm hơn khi sử dụng iPhone Duo.\n' '\n' 'Đối với trường hợp không mua AppleCare, người dùng có thể phải ' 'đối mặt với những chi phí sửa chữa cao hơn. Apple vẫn chưa ' 'công bố chính thức chi phí sửa chữa cho iPhone Duo, nhưng có ' 'thể việc thay thế màn hình và bản lề sẽ tốn kém nếu không có ' 'bảo hiểm.\n' '\n' 'Để có cái nhìn rõ hơn về chi phí sửa chữa điện thoại gập, ' 'người dùng có thể tham khảo một mẫu điện thoại gập khác đang ' 'có trên thị trường là [Xiaomi 18 ' 'Fold](https://thanhnien.vn/xiaomi-18-fold-he-lo-thiet-ke-canh-tranh-voi-iphone-ultra-185260902145340935.htm ' '"Xiaomi 18 Fold"). Mẫu smartphone có giá khởi điểm 1.639 USD ' 'này yêu cầu phí thay màn hình trong là 536 USD, trong khi màn ' 'hình ngoài là 112 USD. Việc thay thế bo mạch chủ trên phiên ' 'bản cao cấp có thể lên tới 885 USD.\n' '\n' 'Nhìn chung, iPhone Duo không chỉ là một sản phẩm công nghệ ' 'tiên tiến mà còn là một khoản đầu tư lớn, vì vậy việc lựa chọn ' 'gói bảo hiểm phù hợp sẽ giúp người dùng tiết kiệm chi phí sửa ' 'chữa trong tương lai.\n' '\n' '\n' '\n' ' //Chèn ads giữa bài\n' ' (runinit = window.runinit || []).push(function () {\n' ' //Nếu k chạy ads thì return\n' " if (typeof \\_chkPrLink != 'undefined' && \\_chkPrLink)\n" ' return;\n' '\n' '\n' ' var mutexAds = \'\';\n' ' var content = $(\'[data-role="content"]\');\n' ' if (content.length > 0) {\n' ' var childNodes = content[0].childNodes;\n' ' for (i = 0; i < childNodes.length; i++) {\n' ' var childNode = childNodes[i];\n' '\n' ' var isPhotoOrVideo = false;\n' " if (childNode.nodeName.toLowerCase() == 'div') {\n" ' // kiem tra xem co la anh khong?\n' " var type = $(childNode).attr('class') + '';\n" '\n' " if (type.indexOf('VCSortableInPreviewMode') >= 0) {\n" ' isPhotoOrVideo = true;\n' ' }\n' ' }\n' '\n' ' try {\n' ' if ((i >= childNodes.length / 2 - 1) && (i < ' 'childNodes.length / 2) && !isPhotoOrVideo) {\n' ' if (i <= childNodes.length - 3) {\n' ' childNode.after(htmlToElement(mutexAds));\n' ' arfAsync.push("l2srqb41");\n' ' }\n' ' break;\n' ' }\n' ' }\n' ' catch (e) { }\n' ' }\n' ' }\n' ' });\n' ' function htmlToElement(html) {\n' " var template = document.createElement('template');\n" ' template.innerHTML = html;\n' ' return template.content.firstChild;\n' ' }\n' '\n' '\n' ' function tnDetailInsertMidArticleWidget(rootSelector, ' 'widgetId) {\n' ' var root = document.querySelector(rootSelector);\n' ' if (!root) return null;\n' ' var contentRoot = ' 'root.querySelector(\'[data-role="content"]\') || root;\n' '\n' ' var blocks = Array.from(contentRoot.children).filter(function ' '(el) {\n' ' if (el.id === widgetId) return false;\n' " if (el.hasAttribute('data-check-position')) return false;\n" " if (el.hasAttribute('data-type')) return false;\n" ' if ' '(/^(SCRIPT|STYLE|TEMPLATE|LINK|NOSCRIPT)$/.test(el.tagName)) ' 'return false;\n' " if (el.tagName === 'P' && !el.textContent.trim()) return " 'false;\n' ' return el.getClientRects().length > 0;\n' ' });\n' ' if (!blocks.length) return null;\n' '\n' ' var rootRect = contentRoot.getBoundingClientRect();\n' ' var idx;\n' ' if (rootRect.height > 0) {\n' ' var midY = rootRect.top + rootRect.height / 2;\n' ' for (idx = 0; idx < blocks.length; idx++) {\n' ' if (blocks[idx].getBoundingClientRect().bottom >= midY) ' 'break;\n' ' }\n' ' if (idx >= blocks.length) idx = blocks.length - 1;\n' ' } else {\n' ' idx = Math.floor(blocks.length / 2);\n' ' }\n' '\n' ' var target = blocks[idx];\n' " var isMedia = target.tagName === 'FIGURE' || " "target.classList.contains('VCSortableInPreviewMode');\n" '\n' " var newDiv = document.createElement('div');\n" ' newDiv.id = widgetId;\n' ' contentRoot.insertBefore(newDiv, isMedia ? target : ' 'target.nextSibling);\n' ' return newDiv;\n' ' }\n' '\n' ' function tnOnReady(fn) {\n' " if (document.readyState !== 'loading') fn();\n" " else document.addEventListener('DOMContentLoaded', fn, { " 'once: true });\n' ' }\n' ' \n' '\n' ' (function () {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' ' if (laNuocNgoai) return;\n' ' tnOnReady(function () {\n' ' var pernewDiv = ' "tnDetailInsertMidArticleWidget('div.detail-cmain', " "'tn\\_detail\\_foryou1\\_pc\\_per');\n" ' if (!pernewDiv) return;\n' '\n' ' ' "loadJsAsync('https://js.aiservice.vn/rec/tn\\_detail\\_foryou1\\_pc\\_per.js', " 'function(){}, function() {\n' ' ' "window.boxTNRecs.err.push('rec/tn\\_detail\\_foryou1\\_pc\\_per.js');\n" ' });\n' ' });\n' ' })();\n' ' \n' '\n' ' (function() {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' " if (typeof window.laNuocNgoai === 'undefined' || " '!window.laNuocNgoai) return;\n' '\n' ' tnOnReady(function () {\n' ' var newDiv = ' "tnDetailInsertMidArticleWidget('div.detail-cmain', " "'taboola-mid-article-widget');\n" ' if (!newDiv) return;\n' '\n' ' window.\\_taboola = window.\\_taboola || [];\n' ' window.\\_taboola.push({\n' " mode: 'thumbnails-4x1',\n" " container: 'taboola-mid-article-widget',\n" " placement: 'Mid Article Widget',\n" " target\\_type: 'mix'\n" ' });\n' ' });\n' ' })();\n' ' \n', 'published_date': datetime.date(2026, 9, 25), 'published_timestamp': datetime.datetime(2026, 9, 25, 6, 28), 'source': 'ThanhNien', 'tags': ['iPhone Duo', 'Apple', 'giá bán', 'ngày phát hành', 'chi phí sửa chữa', 'AppleCare', 'hư hỏng', 'thay pin', 'dịch vụ sửa chữa', 'chi phí sửa chữa màn hình', 'bảo hiểm', 'smartphone', 'đầu tư công nghệ', 'Xiaomi 18 Fold', 'so sánh chi phí sửa chữa', 'người tiêu dùng'], 'title': 'Một điều về iPhone Duo vẫn chưa được Apple tiết lộ', 'url': 'https://thanhnien.vn/mot-dieu-ve-iphone-duo-van-chua-duoc-apple-tiet-lo-185260924155142692.htm', 'voice': 'HN-Nu-2-BL'} 2026-09-24 23:46:41 [scrapy.extensions.logstats] INFO: Crawled 19 pages (at 19 pages/min), scraped 1 items (at 1 items/min) 2026-09-24 23:46:41 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:41 [openai._base_client] DEBUG: Request options: {'method': 'post', 'url': '/chat/completions', 'files': None, 'json_data': {'messages': [{'role': 'user', 'content': 'Act as a content analysis tool. I will provide you with a piece of content, and your task is to extract relevant tags (keywords or phrases) that summarize the main topics, themes, or ideas present in the text. The tags should be concise, specific, and useful for categorization or search purposes. Ignore common filler words (e.g., \'the\', \'and\', \'is\') unless they are part of a specific concept or phrase. After analyzing the content, return the tags in a simple list format. Here is the content to analyze: Trong những đoạn clip được anh Trần Trịnh Đạt Nhân (31 tuổi, P.Tân Thành, Cà Mau) chia sẻ trên mạng xã hội, mẹ anh, bà Trịnh Thị Ngọc Dung, thường xuất hiện giữa căn bếp gia đình. Bà vừa chuẩn bị nguyên liệu, nấu nướng vừa trò chuyện về những món ăn và chuyện gia đình. Cách nói chuyện nhẹ nhàng, tự nhiên của bà Dung khiến người xem thích thú. Có người bình luận nghe bà nói chuyện, nhìn bà nấu ăn lại nhớ những bữa cơm mẹ nấu ở nhà. Bà Dung có gần 30 năm công tác trong ngành giáo dục, từng giảng dạy tại nhiều trường. Bà gắn bó với Trường THCS Nguyễn Thái Bình trong 20 năm trước khi nghỉ hưu năm 2019. Từ đó, bà dành nhiều thời gian hơn cho gia đình. Đi chợ, chuẩn bị nguyên liệu rồi nấu ăn cho chồng con trở thành công việc quen thuộc mỗi ngày. Cuối năm 2025, những câu chuyện trong căn bếp của bà bắt đầu được con trai ghi lại và chia sẻ lên mạng xã hội. Anh Nhân kể mỗi khi nấu ăn, mẹ thường nhắc chuyện từ thời cuộc sống gia đình còn khó khăn. Có những món trước đây được nấu đơn giản vì điều kiện chưa cho phép; về sau, khi cuộc sống khá hơn, bà biến tấu hoặc thêm nguyên liệu để bữa ăn phong phú hơn. Nghe mẹ kể nhiều lần, anh nghĩ đến chuyện lấy điện thoại quay lại. "Lúc đầu, mình chỉ muốn lưu giữ để sau này có thể nhìn lại những kỷ niệm với mẹ. Sau đó, mình cũng muốn chia sẻ những câu chuyện đời thường của gia đình với mọi người", anh nói. Ban đầu chỉ làm theo gợi mở của con trai, sau một thời gian, bà Dung cũng hào hứng với việc ghi hình. Bà có nhiều ý tưởng, đôi lúc còn chủ động nói con quay thêm những cảnh khác nhau để đoạn video không bị nhàm chán. Con trai đứng sau máy quay, người mẹ vẫn làm những công việc quen thuộc trong bếp và trò chuyện như thường ngày. Hai mẹ con không chuẩn bị bối cảnh cầu kỳ, anh cũng không yêu cầu mẹ phải diễn. Trong những lần ghi hình, anh Nhân nhớ nhất chuyến cùng mẹ về nhà bà ngoại nuôi. Ở đó, gia đình vẫn còn nấu ăn bằng bếp củi nên anh muốn ghi lại một không gian khác ngày thường. Hôm ấy trời mưa, nền đất trơn. Đang chạy ngoài sân, anh Nhân bất ngờ bị một con ngỗng rượt. Anh chạy tránh rồi trượt chân ngã, cả người lấm lem bùn đất. Thấy con trai ngã, bà Dung vội chạy ra hỏi han nhưng cũng trượt chân ngã theo. Nhìn bộ dạng của nhau, hai mẹ con cùng bật cười. Những tình huống không có trong dự tính như vậy cũng được anh giữ lại. "Giờ ai cũng có công việc và khoảng thời gian riêng nên ba mẹ muốn nấu cho con một bữa cơm trọn vẹn không phải lúc nào cũng dễ. Tôi chỉ mong những ai đang xa nhà sẽ luôn nhớ đến bữa cơm gia đình", anh tâm sự. Bà Dung kể mình rất thích nấu ăn. Với bà, nấu một bữa ăn hợp khẩu vị là một trong những cách quen thuộc để chăm sóc những người thân. "Tôi không có bí quyết nấu ăn ngon ngoài suy nghĩ hết lòng vì chồng con. Nấu ăn thì tùy cơ ứng biến - khéo ăn thì no, khéo co thì ấm. Tôi thường nấu những món nhanh gọn nhưng vẫn chất lượng và hợp với các thành viên trong gia đình", bà Dung nói. Còn với anh Nhân, anh không đặt nặng việc mỗi lần quay phải có một nội dung thật đặc biệt. Có hôm anh chỉ ghi lại cảnh mẹ sơ chế thức ăn, đứng bên bếp vừa nấu vừa nói chuyện. Chính những cuộc trò chuyện ấy mới là phần anh muốn giữ. "Từng món ăn, cách nêm nếm đều là những gì mẹ dành cho gia đình. Sau này nhờ những clip này, mình vẫn có thể nhìn lại những khoảnh khắc bên mẹ và nghe lại giọng nói của mẹ", anh chia sẻ.'}], 'model': 'gpt-4o-mini', 'max_tokens': 200, 'temperature': 0.3}} 2026-09-24 23:46:41 [openai._base_client] DEBUG: Sending HTTP Request: POST https://api.openai.com/v1/chat/completions 2026-09-24 23:46:41 [httpcore.connection] DEBUG: connect_tcp.started host='api.openai.com' port=443 local_address=None timeout=900 socket_options=None 2026-09-24 23:46:42 [httpcore.connection] DEBUG: connect_tcp.complete return_value= 2026-09-24 23:46:42 [httpcore.connection] DEBUG: start_tls.started ssl_context= server_hostname='api.openai.com' timeout=900 2026-09-24 23:46:42 [httpcore.connection] DEBUG: start_tls.complete return_value= 2026-09-24 23:46:42 [httpcore.http11] DEBUG: send_request_headers.started request= 2026-09-24 23:46:42 [httpcore.http11] DEBUG: send_request_headers.complete 2026-09-24 23:46:42 [httpcore.http11] DEBUG: send_request_body.started request= 2026-09-24 23:46:42 [httpcore.http11] DEBUG: send_request_body.complete 2026-09-24 23:46:42 [httpcore.http11] DEBUG: receive_response_headers.started request= 2026-09-24 23:46:43 [httpcore.http11] DEBUG: receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Thu, 24 Sep 2026 23:46:43 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'CF-Ray', b'a405ab84d89d9b15-HKG'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Server', b'cloudflare'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'X-Content-Type-Options', b'nosniff'), (b'access-control-expose-headers', b'X-Request-ID'), (b'access-control-expose-headers', b'CF-Ray'), (b'Access-Control-Expose-Headers', b'CF-Ray'), (b'openai-organization', b'user-bmggli0qfnphtzkdehrnfdrn'), (b'openai-processing-ms', b'1341'), (b'openai-project', b'proj_AqBCEfNib7E5LbrMYDz2oklk'), (b'openai-version', b'2020-10-01'), (b'x-openai-proxy-wasm', b'v0.1'), (b'x-ratelimit-limit-requests', b'30000'), (b'x-ratelimit-limit-tokens', b'150000000'), (b'x-ratelimit-remaining-requests', b'29999'), (b'x-ratelimit-remaining-tokens', b'149998792'), (b'x-ratelimit-reset-requests', b'2ms'), (b'x-ratelimit-reset-tokens', b'0s'), (b'x-request-id', b'req_5b2dcf2821f24feeaf85a040e944fea1'), (b'set-cookie', b'__cf_bm=TKCShKgSZ43sDCjTGh.Fvn4J3TpioHbj88w9Kv0YZQQ-1790293602.051973-1.0.1.1-Od9jLo0MgqbXYSkDuZ_ND1_H1tfbyybAGennwgnTc6afIdjNtJSTPKh65USV2bv5yrqIAVMVUTqOXcWBUdfnpH907HfVoPFnsif7Wtvkxzwg2JhEPikyZthCSlXRyT4e; HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 25 Sep 2026 00:16:43 GMT'), (b'Content-Encoding', b'gzip'), (b'alt-svc', b'h3=":443"; ma=86400')]) 2026-09-24 23:46:43 [httpx] INFO: HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK" 2026-09-24 23:46:43 [httpcore.http11] DEBUG: receive_response_body.started request= 2026-09-24 23:46:43 [httpcore.http11] DEBUG: receive_response_body.complete 2026-09-24 23:46:43 [httpcore.http11] DEBUG: response_closed.started 2026-09-24 23:46:43 [httpcore.http11] DEBUG: response_closed.complete 2026-09-24 23:46:43 [openai._base_client] DEBUG: HTTP Response: POST https://api.openai.com/v1/chat/completions "200 OK" Headers([('date', 'Thu, 24 Sep 2026 23:46:43 GMT'), ('content-type', 'application/json'), ('transfer-encoding', 'chunked'), ('connection', 'keep-alive'), ('cf-ray', 'a405ab84d89d9b15-HKG'), ('cf-cache-status', 'DYNAMIC'), ('server', 'cloudflare'), ('strict-transport-security', 'max-age=31536000; includeSubDomains; preload'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'X-Request-ID'), ('access-control-expose-headers', 'CF-Ray'), ('access-control-expose-headers', 'CF-Ray'), ('openai-organization', 'user-bmggli0qfnphtzkdehrnfdrn'), ('openai-processing-ms', '1341'), ('openai-project', 'proj_AqBCEfNib7E5LbrMYDz2oklk'), ('openai-version', '2020-10-01'), ('x-openai-proxy-wasm', 'v0.1'), ('x-ratelimit-limit-requests', '30000'), ('x-ratelimit-limit-tokens', '150000000'), ('x-ratelimit-remaining-requests', '29999'), ('x-ratelimit-remaining-tokens', '149998792'), ('x-ratelimit-reset-requests', '2ms'), ('x-ratelimit-reset-tokens', '0s'), ('x-request-id', 'req_5b2dcf2821f24feeaf85a040e944fea1'), ('set-cookie', '__cf_bm=TKCShKgSZ43sDCjTGh.Fvn4J3TpioHbj88w9Kv0YZQQ-1790293602.051973-1.0.1.1-Od9jLo0MgqbXYSkDuZ_ND1_H1tfbyybAGennwgnTc6afIdjNtJSTPKh65USV2bv5yrqIAVMVUTqOXcWBUdfnpH907HfVoPFnsif7Wtvkxzwg2JhEPikyZthCSlXRyT4e; HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 25 Sep 2026 00:16:43 GMT'), ('content-encoding', 'gzip'), ('alt-svc', 'h3=":443"; ma=86400')]) 2026-09-24 23:46:43 [openai._base_client] DEBUG: request_id: req_5b2dcf2821f24feeaf85a040e944fea1 2026-09-24 23:46:43 [thanhnien_timestamp] INFO: Min timestamp: 2026-09-25 06:25:00, Published timestamp: 2026-09-25 06:30:00 2026-09-24 23:46:43 [urllib3.connectionpool] DEBUG: Starting new HTTP connection (1): tts-api:4444 2026-09-24 23:46:58 [urllib3.connectionpool] DEBUG: http://tts-api:4444 "POST /api/v2/text-to-speech HTTP/1.1" 200 409 2026-09-24 23:46:58 [scrapy.core.scraper] DEBUG: Scraped from <200 https://thanhnien.vn/lan-toa-tren-mang-xa-hoi-co-giao-ve-huu-vao-bep-ke-chuyen-ngay-cu-185260924203134616.htm> {'audio_url': 'https://lake-api.blaze.vn/tts-data/igjyufkz-2026-09-24%2023%3A46%3A43.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=BLZ4B6CBCE73519431B%2F20260924%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260924T234656Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=2261a5256a175a75dbc56dbc1f93608a568789b5fb68d6280eb3d07b5653b8fd', 'author': None, 'category': 'Đời sống', 'content': 'Trong những đoạn clip được anh Trần Trịnh Đạt Nhân (31 tuổi, ' 'P.Tân Thành, Cà Mau) chia sẻ trên mạng xã hội, mẹ anh, bà Trịnh ' 'Thị Ngọc Dung, thường xuất hiện giữa căn bếp gia đình. Bà vừa ' 'chuẩn bị nguyên liệu, nấu nướng vừa trò chuyện về những món ăn và ' 'chuyện gia đình. Cách nói chuyện nhẹ nhàng, tự nhiên của bà Dung ' 'khiến người xem thích thú. Có người bình luận nghe bà nói chuyện, ' 'nhìn bà nấu ăn lại nhớ những bữa cơm mẹ nấu ở nhà. Bà Dung có gần ' '30 năm công tác trong ngành giáo dục, từng giảng dạy tại nhiều ' 'trường. Bà gắn bó với Trường THCS Nguyễn Thái Bình trong 20 năm ' 'trước khi nghỉ hưu năm 2019. Từ đó, bà dành nhiều thời gian hơn ' 'cho gia đình. Đi chợ, chuẩn bị nguyên liệu rồi nấu ăn cho chồng ' 'con trở thành công việc quen thuộc mỗi ngày. Cuối năm 2025, những ' 'câu chuyện trong căn bếp của bà bắt đầu được con trai ghi lại và ' 'chia sẻ lên mạng xã hội. Anh Nhân kể mỗi khi nấu ăn, mẹ thường ' 'nhắc chuyện từ thời cuộc sống gia đình còn khó khăn. Có những món ' 'trước đây được nấu đơn giản vì điều kiện chưa cho phép; về sau, ' 'khi cuộc sống khá hơn, bà biến tấu hoặc thêm nguyên liệu để bữa ' 'ăn phong phú hơn. Nghe mẹ kể nhiều lần, anh nghĩ đến chuyện lấy ' 'điện thoại quay lại. "Lúc đầu, mình chỉ muốn lưu giữ để sau này ' 'có thể nhìn lại những kỷ niệm với mẹ. Sau đó, mình cũng muốn chia ' 'sẻ những câu chuyện đời thường của gia đình với mọi người", anh ' 'nói. Ban đầu chỉ làm theo gợi mở của con trai, sau một thời gian, ' 'bà Dung cũng hào hứng với việc ghi hình. Bà có nhiều ý tưởng, đôi ' 'lúc còn chủ động nói con quay thêm những cảnh khác nhau để đoạn ' 'video không bị nhàm chán. Con trai đứng sau máy quay, người mẹ ' 'vẫn làm những công việc quen thuộc trong bếp và trò chuyện như ' 'thường ngày. Hai mẹ con không chuẩn bị bối cảnh cầu kỳ, anh cũng ' 'không yêu cầu mẹ phải diễn. Trong những lần ghi hình, anh Nhân ' 'nhớ nhất chuyến cùng mẹ về nhà bà ngoại nuôi. Ở đó, gia đình vẫn ' 'còn nấu ăn bằng bếp củi nên anh muốn ghi lại một không gian khác ' 'ngày thường. Hôm ấy trời mưa, nền đất trơn. Đang chạy ngoài sân, ' 'anh Nhân bất ngờ bị một con ngỗng rượt. Anh chạy tránh rồi trượt ' 'chân ngã, cả người lấm lem bùn đất. Thấy con trai ngã, bà Dung ' 'vội chạy ra hỏi han nhưng cũng trượt chân ngã theo. Nhìn bộ dạng ' 'của nhau, hai mẹ con cùng bật cười. Những tình huống không có ' 'trong dự tính như vậy cũng được anh giữ lại. "Giờ ai cũng có công ' 'việc và khoảng thời gian riêng nên ba mẹ muốn nấu cho con một bữa ' 'cơm trọn vẹn không phải lúc nào cũng dễ. Tôi chỉ mong những ai ' 'đang xa nhà sẽ luôn nhớ đến bữa cơm gia đình", anh tâm sự. Bà ' 'Dung kể mình rất thích nấu ăn. Với bà, nấu một bữa ăn hợp khẩu vị ' 'là một trong những cách quen thuộc để chăm sóc những người thân. ' '"Tôi không có bí quyết nấu ăn ngon ngoài suy nghĩ hết lòng vì ' 'chồng con. Nấu ăn thì tùy cơ ứng biến - khéo ăn thì no, khéo co ' 'thì ấm. Tôi thường nấu những món nhanh gọn nhưng vẫn chất lượng ' 'và hợp với các thành viên trong gia đình", bà Dung nói. Còn với ' 'anh Nhân, anh không đặt nặng việc mỗi lần quay phải có một nội ' 'dung thật đặc biệt. Có hôm anh chỉ ghi lại cảnh mẹ sơ chế thức ' 'ăn, đứng bên bếp vừa nấu vừa nói chuyện. Chính những cuộc trò ' 'chuyện ấy mới là phần anh muốn giữ. "Từng món ăn, cách nêm nếm ' 'đều là những gì mẹ dành cho gia đình. Sau này nhờ những clip này, ' 'mình vẫn có thể nhìn lại những khoảnh khắc bên mẹ và nghe lại ' 'giọng nói của mẹ", anh chia sẻ.', 'description': 'Sau khi nghỉ hưu, bà Trịnh Thị Ngọc Dung (65 tuổi, Cà Mau) có ' 'nhiều thời gian hơn để vào bếp, chuẩn bị những bữa cơm cho ' 'gia đình. Trong lúc nấu ăn, bà thường kể lại chuyện ngày ' 'trước, từ những món ăn thời còn khó khăn đến khi cuộc sống ' 'dần đủ đầy hơn.', 'html_content': '

Trong những đoạn ' 'clip được anh Trần Trịnh Đạt Nhân (31 tuổi, P.Tân Thành, Cà ' 'Mau) chia sẻ trên mạng xã hội, mẹ anh, bà Trịnh Thị Ngọc ' 'Dung, thường xuất hiện giữa căn bếp gia đình. Bà vừa chuẩn ' 'bị nguyên liệu, nấu nướng vừa trò chuyện về những món ăn và ' 'chuyện gia đình. Cách nói chuyện nhẹ nhàng, tự nhiên của bà ' 'Dung khiến người xem thích thú. Có người bình luận nghe bà ' 'nói chuyện, nhìn bà nấu ăn lại nhớ những ' 'bữa cơm mẹ nấu ở nhà.

Cô giáo về '
                 'hưu vào bếp kể chuyện ngày cũ - Ảnh 1.

Bà Trịnh Thị Ngọc Dung chuẩn bị bữa cơm cho gia ' 'đình

ẢNH: ' 'NVCC

MỖI MÓN ĂN LÀ MỘT CÂU CHUYỆN

Bà ' 'Dung có gần 30 năm công tác trong ngành giáo dục, từng giảng ' 'dạy tại nhiều trường. Bà gắn bó với Trường THCS Nguyễn Thái ' 'Bình trong 20 năm trước khi nghỉ hưu năm 2019. ' 'Từ đó, bà dành nhiều thời gian hơn cho gia đình. Đi chợ, ' 'chuẩn bị nguyên liệu rồi nấu ăn cho chồng con trở thành công ' 'việc quen thuộc mỗi ngày.

Cô giáo về '
                 'hưu vào bếp kể chuyện ngày cũ - Ảnh 2.

Sau khi nghỉ hưu, bà Dung có nhiều thời gian hơn dành ' 'cho căn bếp và gia đình

ẢNH: NVCC

Cuối năm 2025, những câu ' 'chuyện trong căn bếp của bà bắt đầu được con trai ghi lại và ' 'chia sẻ lên mạng xã hội. Anh Nhân kể mỗi khi nấu ăn, mẹ ' 'thường nhắc chuyện từ thời cuộc sống gia đình còn khó khăn. ' 'Có những món trước đây được nấu đơn giản vì điều kiện chưa ' 'cho phép; về sau, khi cuộc sống khá hơn, bà biến tấu hoặc ' 'thêm nguyên liệu để bữa ăn phong phú hơn.

Nghe mẹ kể ' 'nhiều lần, anh nghĩ đến chuyện lấy điện thoại quay lại. "Lúc ' 'đầu, mình chỉ muốn lưu giữ để sau này có thể nhìn lại những ' 'kỷ niệm với mẹ. Sau đó, mình cũng muốn chia sẻ những câu ' 'chuyện đời thường của gia đình với mọi người", anh nói. Ban ' 'đầu chỉ làm theo gợi mở của con trai, sau một thời gian, bà ' 'Dung cũng hào hứng với việc ghi hình. Bà có nhiều ý tưởng, ' 'đôi lúc còn chủ động nói con quay thêm những cảnh khác nhau ' 'để đoạn video không bị nhàm chán.

Con trai đứng sau ' 'máy quay, người mẹ vẫn làm những công việc quen thuộc trong ' 'bếp và trò chuyện như thường ngày. Hai mẹ con không chuẩn bị ' 'bối cảnh cầu kỳ, anh cũng không yêu cầu mẹ phải ' 'diễn.

Cô giáo '
                 'về hưu vào bếp kể chuyện ngày cũ - Ảnh 3.

Anh Trần Trịnh Đạt ' 'Nhân chụp ảnh cùng mẹ

ẢNH: NVCC

Trong những lần ghi ' 'hình, anh Nhân nhớ nhất chuyến cùng mẹ về nhà bà ngoại nuôi. ' 'Ở đó, gia đình vẫn còn nấu ăn bằng bếp củi nên anh muốn ghi ' 'lại một không gian khác ngày thường. Hôm ấy trời mưa, nền ' 'đất trơn. Đang chạy ngoài sân, anh Nhân bất ngờ bị một con ' 'ngỗng rượt. Anh chạy tránh rồi trượt chân ngã, cả người lấm ' 'lem bùn đất. Thấy con trai ngã, bà Dung vội chạy ra hỏi han ' 'nhưng cũng trượt chân ngã theo. Nhìn bộ dạng của nhau, hai ' 'mẹ con cùng bật cười.

Những tình huống không có trong ' 'dự tính như vậy cũng được anh giữ lại. "Giờ ai cũng có công ' 'việc và khoảng thời gian riêng nên ba mẹ muốn nấu cho con ' 'một bữa cơm trọn vẹn không phải lúc nào cũng dễ. Tôi chỉ ' 'mong những ai đang xa nhà sẽ luôn nhớ đến bữa cơm gia đình", ' 'anh tâm sự.

ĐỂ SAU NÀY CÒN ĐƯỢC NGHE GIỌNG ' 'MẸ

Bà Dung kể mình rất thích nấu ăn. Với bà, ' 'nấu một bữa ăn hợp khẩu vị là một trong những cách quen ' 'thuộc để chăm sóc những người thân. "Tôi không có bí quyết ' 'nấu ăn ngon ngoài suy nghĩ hết lòng vì chồng con. Nấu ăn thì ' 'tùy cơ ứng biến - khéo ăn thì no, khéo co thì ấm. Tôi thường ' 'nấu những món nhanh gọn nhưng vẫn chất lượng và hợp với các ' 'thành viên trong gia đình", bà Dung nói.

Cô giáo về '
                 'hưu vào bếp kể chuyện ngày cũ - Ảnh 4.

Còn với anh Nhân, ' 'anh không đặt nặng việc mỗi lần quay phải có một nội dung ' 'thật đặc biệt. Có hôm anh chỉ ghi lại cảnh mẹ sơ chế thức ' 'ăn, đứng bên bếp vừa nấu vừa nói chuyện. Chính những cuộc ' 'trò chuyện ấy mới là phần anh muốn giữ. "Từng món ăn, cách ' 'nêm nếm đều là những gì mẹ dành cho gia đình. Sau này nhờ ' 'những clip này, mình vẫn có thể nhìn lại những khoảnh khắc ' 'bên mẹ và nghe lại giọng nói của mẹ", anh chia sẻ.\xa0' '

\n' ' \n' '\n' '\n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' '\n' '
', 'md_content': 'Trong những đoạn clip được anh Trần Trịnh Đạt Nhân (31 tuổi, ' 'P.Tân Thành, Cà Mau) chia sẻ trên mạng xã hội, mẹ anh, bà ' 'Trịnh Thị Ngọc Dung, thường xuất hiện giữa căn bếp gia đình. ' 'Bà vừa chuẩn bị nguyên liệu, nấu nướng vừa trò chuyện về những ' 'món ăn và chuyện gia đình. Cách nói chuyện nhẹ nhàng, tự nhiên ' 'của bà Dung khiến người xem thích thú. Có người bình luận nghe ' 'bà nói chuyện, nhìn bà [nấu ' 'ăn](https://thanhnien.vn/chi-gan-7-trieu-dong-cho-con-hoc-nau-an-du-do-an-giao-tan-cua-185260730150034908.htm ' '" nấu ăn") lại nhớ những bữa cơm mẹ nấu ở nhà.\n' '\n' '![Cô giáo về hưu vào bếp kể chuyện ngày cũ - Ảnh ' '1.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2026/9/24/anh-1-17902563342411998131506.jpg)Bà ' 'Trịnh Thị Ngọc Dung chuẩn bị bữa cơm cho gia đình\n' '\n' 'ẢNH: NVCC\n' '\n' '## MỖI MÓN ĂN LÀ MỘT CÂU CHUYỆN\n' '\n' 'Bà Dung có gần 30 năm công tác trong ngành giáo dục, từng ' 'giảng dạy tại nhiều trường. Bà gắn bó với Trường THCS Nguyễn ' 'Thái Bình trong 20 năm trước khi [nghỉ ' 'hưu](https://thanhnien.vn/phia-sau-giac-mo-nghi-huu-tren-dinh-chung-khoan-185260922213441594.htm ' '"nghỉ hưu ") năm 2019. Từ đó, bà dành nhiều thời gian hơn cho ' 'gia đình. Đi chợ, chuẩn bị nguyên liệu rồi nấu ăn cho chồng ' 'con trở thành công việc quen thuộc mỗi ngày.\n' '\n' '![Cô giáo về hưu vào bếp kể chuyện ngày cũ - Ảnh ' '2.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2026/9/24/anh-2-17902563342672105621902.jpg)Sau ' 'khi nghỉ hưu, bà Dung có nhiều thời gian hơn dành cho căn bếp ' 'và gia đình\n' '\n' 'ẢNH: NVCC\n' '\n' 'Cuối năm 2025, những câu chuyện trong căn bếp của bà bắt đầu ' 'được con trai ghi lại và chia sẻ lên mạng xã hội. Anh Nhân kể ' 'mỗi khi nấu ăn, mẹ thường nhắc chuyện từ thời cuộc sống gia ' 'đình còn khó khăn. Có những món trước đây được nấu đơn giản vì ' 'điều kiện chưa cho phép; về sau, khi cuộc sống khá hơn, bà ' 'biến tấu hoặc thêm nguyên liệu để bữa ăn phong phú hơn.\n' '\n' 'Nghe mẹ kể nhiều lần, anh nghĩ đến chuyện lấy điện thoại quay ' 'lại. "Lúc đầu, mình chỉ muốn lưu giữ để sau này có thể nhìn ' 'lại những kỷ niệm với mẹ. Sau đó, mình cũng muốn chia sẻ những ' 'câu chuyện đời thường của gia đình với mọi người", anh nói. ' 'Ban đầu chỉ làm theo gợi mở của con trai, sau một thời gian, ' 'bà Dung cũng hào hứng với việc ghi hình. Bà có nhiều ý tưởng, ' 'đôi lúc còn chủ động nói con quay thêm những cảnh khác nhau để ' 'đoạn video không bị nhàm chán.\n' '\n' 'Con trai đứng sau máy quay, người mẹ vẫn làm những công việc ' 'quen thuộc trong bếp và trò chuyện như thường ngày. Hai mẹ con ' 'không chuẩn bị bối cảnh cầu kỳ, anh cũng không yêu cầu mẹ phải ' 'diễn.\n' '\n' '![Cô giáo về hưu vào bếp kể chuyện ngày cũ - Ảnh ' '3.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2026/9/24/anh-3-1790256334276990054931.jpg)Anh ' 'Trần Trịnh Đạt Nhân chụp ảnh cùng mẹ\n' '\n' 'ẢNH: NVCC\n' '\n' 'Trong những lần ghi hình, anh Nhân nhớ nhất chuyến cùng mẹ về ' 'nhà bà ngoại nuôi. Ở đó, gia đình vẫn còn nấu ăn bằng bếp củi ' 'nên anh muốn ghi lại một không gian khác ngày thường. Hôm ấy ' 'trời mưa, nền đất trơn. Đang chạy ngoài sân, anh Nhân bất ngờ ' 'bị một con ngỗng rượt. Anh chạy tránh rồi trượt chân ngã, cả ' 'người lấm lem bùn đất. Thấy con trai ngã, bà Dung vội chạy ra ' 'hỏi han nhưng cũng trượt chân ngã theo. Nhìn bộ dạng của nhau, ' 'hai mẹ con cùng bật cười.\n' '\n' 'Những tình huống không có trong dự tính như vậy cũng được anh ' 'giữ lại. "Giờ ai cũng có công việc và khoảng thời gian riêng ' 'nên ba mẹ muốn nấu cho con một bữa cơm trọn vẹn không phải lúc ' 'nào cũng dễ. Tôi chỉ mong những ai đang xa nhà sẽ luôn nhớ đến ' 'bữa cơm gia đình", anh tâm sự.\n' '\n' '## ĐỂ SAU NÀY CÒN ĐƯỢC NGHE GIỌNG MẸ\n' '\n' 'Bà Dung kể mình rất thích nấu ăn. Với bà, nấu một bữa ăn hợp ' 'khẩu vị là một trong những cách quen thuộc để chăm sóc những ' 'người thân. "Tôi không có bí quyết nấu ăn ngon ngoài suy nghĩ ' 'hết lòng vì chồng con. Nấu ăn thì tùy cơ ứng biến - khéo ăn ' 'thì no, khéo co thì ấm. Tôi thường nấu những món nhanh gọn ' 'nhưng vẫn chất lượng và hợp với các thành viên trong gia ' 'đình", bà Dung nói.\n' '\n' '![Cô giáo về hưu vào bếp kể chuyện ngày cũ - Ảnh ' '4.](https://images2.thanhnien.vn/528068263637045248/2026/9/24/comment-1790256312774736003254.jpg)Còn ' 'với anh Nhân, anh không đặt nặng việc mỗi lần quay phải có một ' 'nội dung thật đặc biệt. Có hôm anh chỉ ghi lại cảnh mẹ sơ chế ' 'thức ăn, đứng bên bếp vừa nấu vừa nói chuyện. Chính những cuộc ' 'trò chuyện ấy mới là phần anh muốn giữ. "Từng món ăn, cách nêm ' 'nếm đều là những gì mẹ dành cho gia đình. Sau này nhờ những ' 'clip này, mình vẫn có thể nhìn lại những khoảnh khắc bên mẹ và ' 'nghe lại giọng nói của mẹ", anh chia sẻ.\xa0\n' '\n' '\n' '\n' ' //Chèn ads giữa bài\n' ' (runinit = window.runinit || []).push(function () {\n' ' //Nếu k chạy ads thì return\n' " if (typeof \\_chkPrLink != 'undefined' && \\_chkPrLink)\n" ' return;\n' '\n' '\n' ' var mutexAds = \'\';\n' ' var content = $(\'[data-role="content"]\');\n' ' if (content.length > 0) {\n' ' var childNodes = content[0].childNodes;\n' ' for (i = 0; i < childNodes.length; i++) {\n' ' var childNode = childNodes[i];\n' '\n' ' var isPhotoOrVideo = false;\n' " if (childNode.nodeName.toLowerCase() == 'div') {\n" ' // kiem tra xem co la anh khong?\n' " var type = $(childNode).attr('class') + '';\n" '\n' " if (type.indexOf('VCSortableInPreviewMode') >= 0) {\n" ' isPhotoOrVideo = true;\n' ' }\n' ' }\n' '\n' ' try {\n' ' if ((i >= childNodes.length / 2 - 1) && (i < ' 'childNodes.length / 2) && !isPhotoOrVideo) {\n' ' if (i <= childNodes.length - 3) {\n' ' childNode.after(htmlToElement(mutexAds));\n' ' arfAsync.push("l2srqb41");\n' ' }\n' ' break;\n' ' }\n' ' }\n' ' catch (e) { }\n' ' }\n' ' }\n' ' });\n' ' function htmlToElement(html) {\n' " var template = document.createElement('template');\n" ' template.innerHTML = html;\n' ' return template.content.firstChild;\n' ' }\n' '\n' '\n' ' function tnDetailInsertMidArticleWidget(rootSelector, ' 'widgetId) {\n' ' var root = document.querySelector(rootSelector);\n' ' if (!root) return null;\n' ' var contentRoot = ' 'root.querySelector(\'[data-role="content"]\') || root;\n' '\n' ' var blocks = Array.from(contentRoot.children).filter(function ' '(el) {\n' ' if (el.id === widgetId) return false;\n' " if (el.hasAttribute('data-check-position')) return false;\n" " if (el.hasAttribute('data-type')) return false;\n" ' if ' '(/^(SCRIPT|STYLE|TEMPLATE|LINK|NOSCRIPT)$/.test(el.tagName)) ' 'return false;\n' " if (el.tagName === 'P' && !el.textContent.trim()) return " 'false;\n' ' return el.getClientRects().length > 0;\n' ' });\n' ' if (!blocks.length) return null;\n' '\n' ' var rootRect = contentRoot.getBoundingClientRect();\n' ' var idx;\n' ' if (rootRect.height > 0) {\n' ' var midY = rootRect.top + rootRect.height / 2;\n' ' for (idx = 0; idx < blocks.length; idx++) {\n' ' if (blocks[idx].getBoundingClientRect().bottom >= midY) ' 'break;\n' ' }\n' ' if (idx >= blocks.length) idx = blocks.length - 1;\n' ' } else {\n' ' idx = Math.floor(blocks.length / 2);\n' ' }\n' '\n' ' var target = blocks[idx];\n' " var isMedia = target.tagName === 'FIGURE' || " "target.classList.contains('VCSortableInPreviewMode');\n" '\n' " var newDiv = document.createElement('div');\n" ' newDiv.id = widgetId;\n' ' contentRoot.insertBefore(newDiv, isMedia ? target : ' 'target.nextSibling);\n' ' return newDiv;\n' ' }\n' '\n' ' function tnOnReady(fn) {\n' " if (document.readyState !== 'loading') fn();\n" " else document.addEventListener('DOMContentLoaded', fn, { " 'once: true });\n' ' }\n' ' \n' '\n' ' (function () {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' ' if (laNuocNgoai) return;\n' ' tnOnReady(function () {\n' ' var pernewDiv = ' "tnDetailInsertMidArticleWidget('div.detail-cmain', " "'tn\\_detail\\_foryou1\\_pc\\_per');\n" ' if (!pernewDiv) return;\n' '\n' ' ' "loadJsAsync('https://js.aiservice.vn/rec/tn\\_detail\\_foryou1\\_pc\\_per.js', " 'function(){}, function() {\n' ' ' "window.boxTNRecs.err.push('rec/tn\\_detail\\_foryou1\\_pc\\_per.js');\n" ' });\n' ' });\n' ' })();\n' ' \n' '\n' ' (function() {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' " if (typeof window.laNuocNgoai === 'undefined' || " '!window.laNuocNgoai) return;\n' '\n' ' tnOnReady(function () {\n' ' var newDiv = ' "tnDetailInsertMidArticleWidget('div.detail-cmain', " "'taboola-mid-article-widget');\n" ' if (!newDiv) return;\n' '\n' ' window.\\_taboola = window.\\_taboola || [];\n' ' window.\\_taboola.push({\n' " mode: 'thumbnails-4x1',\n" " container: 'taboola-mid-article-widget',\n" " placement: 'Mid Article Widget',\n" " target\\_type: 'mix'\n" ' });\n' ' });\n' ' })();\n' ' \n', 'published_date': datetime.date(2026, 9, 25), 'published_timestamp': datetime.datetime(2026, 9, 25, 6, 30), 'source': 'ThanhNien', 'tags': ['Trần Trịnh Đạt Nhân', 'Trịnh Thị Ngọc Dung', 'Cà Mau', 'gia đình', 'nấu ăn', 'kỷ niệm', 'giáo dục', 'Trường THCS Nguyễn Thái Bình', 'mạng xã hội', 'câu chuyện đời thường', 'chuẩn bị nguyên liệu', 'tình cảm mẹ con', 'bữa cơm gia đình', 'ghi hình', 'món ăn truyền thống', 'cuộc sống khó khăn', 'nấu ăn đơn giản', 'ý tưởng sáng tạo', 'khoảnh khắc đáng nhớ', 'chăm sóc gia đình', 'tình huống hài hước'], 'title': 'Lan tỏa trên mạng xã hội: Cô giáo về hưu vào bếp kể chuyện ngày cũ', 'url': 'https://thanhnien.vn/lan-toa-tren-mang-xa-hoi-co-giao-ve-huu-vao-bep-ke-chuyen-ngay-cu-185260924203134616.htm', 'voice': 'HN-Nam-1-BL'} 2026-09-24 23:46:58 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:46:58 [thanhnien_timestamp] INFO: Min timestamp: 2026-09-25 06:25:00, Published timestamp: 2026-09-25 06:31:00 2026-09-24 23:46:58 [urllib3.connectionpool] DEBUG: Starting new HTTP connection (1): tts-api:4444 2026-09-24 23:47:00 [urllib3.connectionpool] DEBUG: http://tts-api:4444 "POST /api/v2/text-to-speech HTTP/1.1" 200 406 2026-09-24 23:47:00 [scrapy.core.scraper] DEBUG: Scraped from <200 https://thanhnien.vn/truc-tiep-asiad-hom-nay-cho-tin-vui-ban-sung-dua-thuyen-caoeing-18526092506091477.htm> {'audio_url': 'https://lake-api.blaze.vn/tts-data/imqfhbub-2026-09-24%2023%3A46%3A58.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=BLZ4B6CBCE73519431B%2F20260924%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260924T234659Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=bcb4e68c91fc2c59696342c9bc970e9e834b3bc2dff0332dfb8f3b7946ee0285', 'author': None, 'category': 'Thể thao', 'content': '', 'description': 'Hôm nay (25.9), đoàn thể thao Việt Nam tiếp tục chinh phục ' 'ASIAD 20 tại Nhật Bản với kỳ vọng vào các môn bắn súng, ' 'canoeing...', 'html_content': '
', 'md_content': '', 'published_date': datetime.date(2026, 9, 25), 'published_timestamp': datetime.datetime(2026, 9, 25, 6, 31), 'source': 'ThanhNien', 'title': 'Trực tiếp ASIAD hôm nay: Chờ tin vui bắn súng, đua thuyền caoeing', 'url': 'https://thanhnien.vn/truc-tiep-asiad-hom-nay-cho-tin-vui-ban-sung-dua-thuyen-caoeing-18526092506091477.htm', 'voice': 'SG-Nu-1-DT'} 2026-09-24 23:47:00 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:47:00 [openai._base_client] DEBUG: Request options: {'method': 'post', 'url': '/chat/completions', 'files': None, 'json_data': {'messages': [{'role': 'user', 'content': 'Act as a content analysis tool. I will provide you with a piece of content, and your task is to extract relevant tags (keywords or phrases) that summarize the main topics, themes, or ideas present in the text. The tags should be concise, specific, and useful for categorization or search purposes. Ignore common filler words (e.g., \'the\', \'and\', \'is\') unless they are part of a specific concept or phrase. After analyzing the content, return the tags in a simple list format. Here is the content to analyze: Tháng 4.2021, UBND tỉnh Quảng Nam (cũ) phê duyệt đầu tư dự án đường vành đai phía bắc tỉnh với chiều dài 4,62 km, tổng mức đầu tư gần 500 tỉ đồng. Dự án do Ban quản lý (BQL) đầu tư xây dựng dự án TX.Điện Bàn (cũ) làm chủ đầu tư, nay được chuyển giao cho BQL dự án đầu tư xây dựng các công trình giao thông và nông nghiệp TP.Đà Nẵng quản lý. Liên danh Công ty CP Đại Thiên Trường và Công ty CP 873 - Xây dựng công trình giao thông là đơn vị thi công. Tháng 9.2023, dự án được điều chỉnh hướng tuyến đi thẳng vượt cao tốc Đà Nẵng - Quảng Ngãi, kết nối với cầu Quảng Đà. Đến tháng 8.2024, công trình chính thức khởi công, thời gian thực hiện dự kiến 770 ngày và hoàn thành vào tháng 10.2025. Tuy nhiên, theo ghi nhận của PV Thanh Niên đến nay, công trường đoạn kết nối cầu Quảng Đà thuộc P.Điện Bàn Bắc vẫn ngổn ngang. Nhiều bó sắt thép nằm phơi mưa nắng đã bắt đầu hoen gỉ, máy móc thưa thớt, chỉ lác đác vài xe tải chở đất hoạt động. Ông Nguyễn Đắc Năm (80 tuổi, thôn Xuân Diệu, P.Điện Bàn Bắc) cho biết khi dự án khởi công, người dân rất phấn khởi, đồng thuận bàn giao mặt bằng, sẵn sàng hiến đất với mong muốn công trình sớm hoàn thành để thúc đẩy phát triển kinh tế - xã hội và tạo thuận lợi trong đi lại. Tuy nhiên, tiến độ hiện nay quá chậm, không phải do yếu tố khách quan mà chủ yếu do công tác tổ chức thực hiện. "Một dự án trọng điểm nhưng thi công ì ạch khiến người dân rất bức xúc. Chúng tôi chỉ mong công trình được đẩy nhanh tiến độ, đáp ứng kỳ vọng của nhân dân", ông Năm nói. Theo ông Đỗ Dũng (68 tuổi, thôn Thái Sơn, P.Điện Bàn Bắc), tình trạng dự án kéo dài còn ảnh hưởng trực tiếp đến sản xuất nông nghiệp. Nhiều diện tích đất bị chia cắt, hệ thống mương tưới tiêu bị ảnh hưởng, trong khi có những khu vực đã san lấp nhưng không thi công tiếp khiến đất bỏ hoang, cỏ mọc um tùm. Ông Nguyễn Ngọc Hoàng, Phó giám đốc BQL dự án đầu tư xây dựng các công trình giao thông và nông nghiệp TP.Đà Nẵng, cho biết khi đơn vị tiếp nhận dự án vào tháng 4.2026, khối lượng thi công chỉ đạt khoảng 9,57%. Sau gần 3 tháng tập trung chỉ đạo, tiến độ mới nâng lên khoảng 12%. "Tiến độ dự án hiện vẫn rất chậm. Ngay sau khi tiếp nhận, ban đã rà soát toàn bộ hồ sơ, đồng thời trình UBND TP.Đà Nẵng điều chỉnh thời gian thực hiện dự án. TP đã thống nhất gia hạn thời gian hoàn thành đến năm 2027", ông Hoàng cho biết. Theo ông Hoàng, dự án chậm tiến độ do nhiều nguyên nhân cả khách quan lẫn chủ quan. Giai đoạn chuẩn bị đầu tư kéo dài vì phải lấy ý kiến nhiều sở, ngành và thực hiện các thủ tục điều chỉnh dự án. Sau khi kế hoạch lựa chọn nhà thầu được phê duyệt, quá trình đấu thầu tiếp tục phát sinh nhiều đơn kiến nghị liên quan đến năng lực, kinh nghiệm của nhà thầu, khiến việc lựa chọn đơn vị thi công kéo dài. Bên cạnh đó, công tác giải phóng mặt bằng vẫn là nút thắt lớn. Đến nay mới bàn giao khoảng 10,3/18,4 ha (đạt gần 56% diện tích), chủ yếu là đất nông nghiệp. Nhiều đoạn mặt bằng bàn giao không liên tục, xen kẽ khu dân cư nên không thể triển khai thi công đồng bộ. Việc bố trí tái định cư cho các hộ dân bị ảnh hưởng cũng chưa hoàn tất. Ngoài ra, dự án còn gặp khó khăn về nguồn vật liệu đất đắp. Theo hồ sơ thiết kế, công trình cần khoảng 500.000 m³ đất đắp K95, K98, trong khi các mỏ đất thương mại được cấp phép trên địa bàn hiện không đủ khả năng cung ứng. Ông Nguyễn Ngọc Hoàng cho hay theo kế hoạch, chủ đầu tư phấn đấu hoàn thành đoạn tuyến dài khoảng 1,2 km từ cầu Quảng Đà đến nút giao ĐT609 trong tháng 12.2026 để phục vụ nhu cầu đi lại của người dân và kết nối giao thông khu vực. Phần còn lại dài khoảng 3,4 km sẽ được tập trung thi công, hoàn thành trong năm 2027.'}], 'model': 'gpt-4o-mini', 'max_tokens': 200, 'temperature': 0.3}} 2026-09-24 23:47:00 [openai._base_client] DEBUG: Sending HTTP Request: POST https://api.openai.com/v1/chat/completions 2026-09-24 23:47:00 [httpcore.connection] DEBUG: connect_tcp.started host='api.openai.com' port=443 local_address=None timeout=900 socket_options=None 2026-09-24 23:47:00 [httpcore.connection] DEBUG: connect_tcp.complete return_value= 2026-09-24 23:47:00 [httpcore.connection] DEBUG: start_tls.started ssl_context= server_hostname='api.openai.com' timeout=900 2026-09-24 23:47:00 [httpcore.connection] DEBUG: start_tls.complete return_value= 2026-09-24 23:47:00 [httpcore.http11] DEBUG: send_request_headers.started request= 2026-09-24 23:47:00 [httpcore.http11] DEBUG: send_request_headers.complete 2026-09-24 23:47:00 [httpcore.http11] DEBUG: send_request_body.started request= 2026-09-24 23:47:00 [httpcore.http11] DEBUG: send_request_body.complete 2026-09-24 23:47:00 [httpcore.http11] DEBUG: receive_response_headers.started request= 2026-09-24 23:47:03 [httpcore.http11] DEBUG: receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Thu, 24 Sep 2026 23:47:03 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'CF-Ray', b'a405abfa2c1c09ed-HKG'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Server', b'cloudflare'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'X-Content-Type-Options', b'nosniff'), (b'access-control-expose-headers', b'X-Request-ID'), (b'access-control-expose-headers', b'CF-Ray'), (b'Access-Control-Expose-Headers', b'CF-Ray'), (b'openai-organization', b'user-bmggli0qfnphtzkdehrnfdrn'), (b'openai-processing-ms', b'2842'), (b'openai-project', b'proj_AqBCEfNib7E5LbrMYDz2oklk'), (b'openai-version', b'2020-10-01'), (b'x-openai-proxy-wasm', b'v0.1'), (b'x-ratelimit-limit-requests', b'30000'), (b'x-ratelimit-limit-tokens', b'150000000'), (b'x-ratelimit-remaining-requests', b'29999'), (b'x-ratelimit-remaining-tokens', b'149998692'), (b'x-ratelimit-reset-requests', b'2ms'), (b'x-ratelimit-reset-tokens', b'0s'), (b'x-request-id', b'req_048c4d4a310c402eaf8ec36e38caa686'), (b'set-cookie', b'__cf_bm=HvSOplhk8KoFLHbrfqJci_kjkygLcEbRf8O.W3NLR_c-1790293620.8209462-1.0.1.1-DLPL9KpVRCPZHrq2wICCjqgvkYU1wnDG_mMznEWObxUfmR911NoGSaZKfGx.XTuquh8IwFNkl.gAR8rjQWKWtMmDxxpuUGRehaFasp1nwIHidWz4abNzak3F2X4C96Uz; HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 25 Sep 2026 00:17:03 GMT'), (b'Content-Encoding', b'gzip'), (b'alt-svc', b'h3=":443"; ma=86400')]) 2026-09-24 23:47:03 [httpx] INFO: HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK" 2026-09-24 23:47:03 [httpcore.http11] DEBUG: receive_response_body.started request= 2026-09-24 23:47:03 [httpcore.http11] DEBUG: receive_response_body.complete 2026-09-24 23:47:03 [httpcore.http11] DEBUG: response_closed.started 2026-09-24 23:47:03 [httpcore.http11] DEBUG: response_closed.complete 2026-09-24 23:47:03 [openai._base_client] DEBUG: HTTP Response: POST https://api.openai.com/v1/chat/completions "200 OK" Headers([('date', 'Thu, 24 Sep 2026 23:47:03 GMT'), ('content-type', 'application/json'), ('transfer-encoding', 'chunked'), ('connection', 'keep-alive'), ('cf-ray', 'a405abfa2c1c09ed-HKG'), ('cf-cache-status', 'DYNAMIC'), ('server', 'cloudflare'), ('strict-transport-security', 'max-age=31536000; includeSubDomains; preload'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'X-Request-ID'), ('access-control-expose-headers', 'CF-Ray'), ('access-control-expose-headers', 'CF-Ray'), ('openai-organization', 'user-bmggli0qfnphtzkdehrnfdrn'), ('openai-processing-ms', '2842'), ('openai-project', 'proj_AqBCEfNib7E5LbrMYDz2oklk'), ('openai-version', '2020-10-01'), ('x-openai-proxy-wasm', 'v0.1'), ('x-ratelimit-limit-requests', '30000'), ('x-ratelimit-limit-tokens', '150000000'), ('x-ratelimit-remaining-requests', '29999'), ('x-ratelimit-remaining-tokens', '149998692'), ('x-ratelimit-reset-requests', '2ms'), ('x-ratelimit-reset-tokens', '0s'), ('x-request-id', 'req_048c4d4a310c402eaf8ec36e38caa686'), ('set-cookie', '__cf_bm=HvSOplhk8KoFLHbrfqJci_kjkygLcEbRf8O.W3NLR_c-1790293620.8209462-1.0.1.1-DLPL9KpVRCPZHrq2wICCjqgvkYU1wnDG_mMznEWObxUfmR911NoGSaZKfGx.XTuquh8IwFNkl.gAR8rjQWKWtMmDxxpuUGRehaFasp1nwIHidWz4abNzak3F2X4C96Uz; HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 25 Sep 2026 00:17:03 GMT'), ('content-encoding', 'gzip'), ('alt-svc', 'h3=":443"; ma=86400')]) 2026-09-24 23:47:03 [openai._base_client] DEBUG: request_id: req_048c4d4a310c402eaf8ec36e38caa686 2026-09-24 23:47:03 [thanhnien_timestamp] INFO: Min timestamp: 2026-09-25 06:25:00, Published timestamp: 2026-09-25 06:36:00 2026-09-24 23:47:03 [urllib3.connectionpool] DEBUG: Starting new HTTP connection (1): tts-api:4444 2026-09-24 23:47:20 [urllib3.connectionpool] DEBUG: http://tts-api:4444 "POST /api/v2/text-to-speech HTTP/1.1" 200 410 2026-09-24 23:47:20 [scrapy.core.scraper] DEBUG: Scraped from <200 https://thanhnien.vn/duong-hang-tram-ti-dong-lam-mai-khong-xong-185260924202002383.htm> {'audio_url': 'https://lake-api.blaze.vn/tts-data/qajstjgb-2026-09-24%2023%3A47%3A04.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=BLZ4B6CBCE73519431B%2F20260924%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260924T234719Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=2e7edcbd337fadffbb2cabae367aecacb7a7573ea4a8825d592b00474db37642', 'author': None, 'category': 'Bạn đọc', 'content': 'Tháng 4.2021, UBND tỉnh Quảng Nam (cũ) phê duyệt đầu tư dự án ' 'đường vành đai phía bắc tỉnh với chiều dài 4,62 km, tổng mức đầu ' 'tư gần 500 tỉ đồng. Dự án do Ban quản lý (BQL) đầu tư xây dựng dự ' 'án TX.Điện Bàn (cũ) làm chủ đầu tư, nay được chuyển giao cho BQL ' 'dự án đầu tư xây dựng các công trình giao thông và nông nghiệp ' 'TP.Đà Nẵng quản lý. Liên danh Công ty CP Đại Thiên Trường và Công ' 'ty CP 873 - Xây dựng công trình giao thông là đơn vị thi công. ' 'Tháng 9.2023, dự án được điều chỉnh hướng tuyến đi thẳng vượt cao ' 'tốc Đà Nẵng - Quảng Ngãi, kết nối với cầu Quảng Đà. Đến tháng ' '8.2024, công trình chính thức khởi công, thời gian thực hiện dự ' 'kiến 770 ngày và hoàn thành vào tháng 10.2025. Tuy nhiên, theo ' 'ghi nhận của PV Thanh Niên đến nay, công trường đoạn kết nối cầu ' 'Quảng Đà thuộc P.Điện Bàn Bắc vẫn ngổn ngang. Nhiều bó sắt thép ' 'nằm phơi mưa nắng đã bắt đầu hoen gỉ, máy móc thưa thớt, chỉ lác ' 'đác vài xe tải chở đất hoạt động. Ông Nguyễn Đắc Năm (80 tuổi, ' 'thôn Xuân Diệu, P.Điện Bàn Bắc) cho biết khi dự án khởi công, ' 'người dân rất phấn khởi, đồng thuận bàn giao mặt bằng, sẵn sàng ' 'hiến đất với mong muốn công trình sớm hoàn thành để thúc đẩy phát ' 'triển kinh tế - xã hội và tạo thuận lợi trong đi lại. Tuy nhiên, ' 'tiến độ hiện nay quá chậm, không phải do yếu tố khách quan mà chủ ' 'yếu do công tác tổ chức thực hiện. "Một dự án trọng điểm nhưng ' 'thi công ì ạch khiến người dân rất bức xúc. Chúng tôi chỉ mong ' 'công trình được đẩy nhanh tiến độ, đáp ứng kỳ vọng của nhân dân", ' 'ông Năm nói. Theo ông Đỗ Dũng (68 tuổi, thôn Thái Sơn, P.Điện Bàn ' 'Bắc), tình trạng dự án kéo dài còn ảnh hưởng trực tiếp đến sản ' 'xuất nông nghiệp. Nhiều diện tích đất bị chia cắt, hệ thống mương ' 'tưới tiêu bị ảnh hưởng, trong khi có những khu vực đã san lấp ' 'nhưng không thi công tiếp khiến đất bỏ hoang, cỏ mọc um tùm. Ông ' 'Nguyễn Ngọc Hoàng, Phó giám đốc BQL dự án đầu tư xây dựng các ' 'công trình giao thông và nông nghiệp TP.Đà Nẵng, cho biết khi đơn ' 'vị tiếp nhận dự án vào tháng 4.2026, khối lượng thi công chỉ đạt ' 'khoảng 9,57%. Sau gần 3 tháng tập trung chỉ đạo, tiến độ mới nâng ' 'lên khoảng 12%. "Tiến độ dự án hiện vẫn rất chậm. Ngay sau khi ' 'tiếp nhận, ban đã rà soát toàn bộ hồ sơ, đồng thời trình UBND ' 'TP.Đà Nẵng điều chỉnh thời gian thực hiện dự án. TP đã thống nhất ' 'gia hạn thời gian hoàn thành đến năm 2027", ông Hoàng cho biết. ' 'Theo ông Hoàng, dự án chậm tiến độ do nhiều nguyên nhân cả khách ' 'quan lẫn chủ quan. Giai đoạn chuẩn bị đầu tư kéo dài vì phải lấy ' 'ý kiến nhiều sở, ngành và thực hiện các thủ tục điều chỉnh dự án. ' 'Sau khi kế hoạch lựa chọn nhà thầu được phê duyệt, quá trình đấu ' 'thầu tiếp tục phát sinh nhiều đơn kiến nghị liên quan đến năng ' 'lực, kinh nghiệm của nhà thầu, khiến việc lựa chọn đơn vị thi ' 'công kéo dài. Bên cạnh đó, công tác giải phóng mặt bằng vẫn là ' 'nút thắt lớn. Đến nay mới bàn giao khoảng 10,3/18,4 ha (đạt gần ' '56% diện tích), chủ yếu là đất nông nghiệp. Nhiều đoạn mặt bằng ' 'bàn giao không liên tục, xen kẽ khu dân cư nên không thể triển ' 'khai thi công đồng bộ. Việc bố trí tái định cư cho các hộ dân bị ' 'ảnh hưởng cũng chưa hoàn tất. Ngoài ra, dự án còn gặp khó khăn về ' 'nguồn vật liệu đất đắp. Theo hồ sơ thiết kế, công trình cần ' 'khoảng 500.000 m³ đất đắp K95, K98, trong khi các mỏ đất thương ' 'mại được cấp phép trên địa bàn hiện không đủ khả năng cung ứng. ' 'Ông Nguyễn Ngọc Hoàng cho hay theo kế hoạch, chủ đầu tư phấn đấu ' 'hoàn thành đoạn tuyến dài khoảng 1,2 km từ cầu Quảng Đà đến nút ' 'giao ĐT609 trong tháng 12.2026 để phục vụ nhu cầu đi lại của ' 'người dân và kết nối giao thông khu vực. Phần còn lại dài khoảng ' '3,4 km sẽ được tập trung thi công, hoàn thành trong năm 2027.', 'description': 'Sau gần 2 năm kể từ ngày khởi công, dự án đường vành đai phía ' 'bắc Quảng Nam (TP.Đà Nẵng) có tổng mức đầu tư gần 500 tỉ đồng ' 'vẫn trong tình trạng thi công cầm chừng, ngổn ngang.', 'html_content': '

CHỜ MÃI TUYẾN ĐƯỜNG DANG DỞ

Tháng 4.2021, UBND tỉnh Quảng Nam ' '(cũ) phê duyệt đầu tư dự án đường vành đai ' 'phía bắc tỉnh với chiều dài 4,62 km, tổng mức đầu tư gần 500 ' 'tỉ đồng. Dự án do Ban quản lý (BQL) đầu tư xây dựng dự án ' 'TX.Điện Bàn (cũ) làm chủ đầu tư, nay được chuyển giao cho ' 'BQL dự án đầu tư xây dựng các công trình giao thông và nông ' 'nghiệp TP.Đà Nẵng quản lý. Liên danh Công ty CP Đại Thiên ' 'Trường và Công ty CP 873 - Xây dựng công trình giao thông là ' 'đơn vị thi công.

Đường hàng '
                 'trăm tỉ đồng làm mãi không xong- Ảnh 1.
Đường hàng '
                 'trăm tỉ đồng làm mãi không xong- Ảnh 2.

Dự án đường vành đai phía bắc ' 'tỉnh Quảng Nam nối cầu Quảng Đà ở P.Điện Bàn Bắc thi công ì ' 'ạch

Ảnh: MẠNH CƯỜNG

Tháng 9.2023, dự án được điều ' 'chỉnh hướng tuyến đi thẳng vượt cao tốc Đà Nẵng - ' 'Quảng Ngãi, kết nối với cầu Quảng Đà. Đến tháng 8.2024, công ' 'trình chính thức khởi công, thời gian thực hiện dự kiến 770 ' 'ngày và hoàn thành vào tháng 10.2025. Tuy nhiên, theo ghi ' 'nhận của PV Thanh Niên đến nay, công trường đoạn kết nối cầu ' 'Quảng Đà thuộc P.Điện Bàn Bắc vẫn ngổn ngang. Nhiều bó sắt ' 'thép nằm phơi mưa nắng đã bắt đầu hoen gỉ, máy móc thưa ' 'thớt, chỉ lác đác vài xe tải chở đất hoạt động.

Ông Nguyễn Đắc Năm (80 tuổi, thôn ' 'Xuân Diệu, P.Điện Bàn Bắc) cho biết khi dự án khởi công, ' 'người dân rất phấn khởi, đồng thuận bàn giao mặt bằng, sẵn ' 'sàng hiến đất với mong muốn công trình sớm hoàn thành để ' 'thúc đẩy phát triển kinh tế - xã hội và tạo thuận lợi trong ' 'đi lại. Tuy nhiên, tiến độ hiện nay quá chậm, không phải do ' 'yếu tố khách quan mà chủ yếu do công tác tổ chức thực hiện. ' '"Một dự án trọng điểm nhưng thi công ì ạch khiến người dân ' 'rất bức xúc. Chúng tôi chỉ mong công trình được đẩy nhanh ' 'tiến độ, đáp ứng kỳ vọng của nhân dân", ông Năm nói.

Theo ông Đỗ Dũng (68 tuổi, thôn ' 'Thái Sơn, P.Điện Bàn Bắc), tình trạng dự án kéo dài còn ảnh ' 'hưởng trực tiếp đến sản xuất nông nghiệp. Nhiều diện tích ' 'đất bị chia cắt, hệ thống mương tưới tiêu bị ảnh hưởng, ' 'trong khi có những khu vực đã san lấp nhưng không thi công ' 'tiếp khiến đất bỏ hoang, cỏ mọc um tùm.

DO NHIỀU NGUYÊN NHÂN

Ông Nguyễn Ngọc Hoàng, Phó giám ' 'đốc BQL dự án đầu tư xây dựng các công trình giao thông và ' 'nông nghiệp TP.Đà Nẵng, cho biết khi đơn vị tiếp nhận dự án vào tháng 4.2026, ' 'khối lượng thi công chỉ đạt khoảng 9,57%. Sau gần 3 tháng ' 'tập trung chỉ đạo, tiến độ mới nâng lên khoảng 12%. "Tiến độ ' 'dự án hiện vẫn rất chậm. Ngay sau khi tiếp nhận, ban đã rà ' 'soát toàn bộ hồ sơ, đồng thời trình UBND TP.Đà Nẵng điều ' 'chỉnh thời gian thực hiện dự án. TP đã thống nhất gia hạn ' 'thời gian hoàn thành đến năm 2027", ông Hoàng cho ' 'biết.

Theo ông Hoàng, dự án ' 'chậm tiến độ do nhiều nguyên nhân cả khách quan lẫn chủ ' 'quan. Giai đoạn chuẩn bị đầu tư kéo dài vì phải lấy ý kiến ' 'nhiều sở, ngành và thực hiện các thủ tục điều chỉnh dự án. ' 'Sau khi kế hoạch lựa chọn nhà thầu được phê duyệt, quá trình ' 'đấu thầu tiếp tục phát sinh nhiều đơn kiến nghị liên quan ' 'đến năng lực, kinh nghiệm của nhà thầu, khiến việc lựa chọn ' 'đơn vị thi công kéo dài.

Bên cạnh đó, công tác giải phóng mặt ' 'bằng vẫn là nút thắt lớn. Đến nay mới bàn giao khoảng ' '10,3/18,4 ha (đạt gần 56% diện tích), chủ yếu là đất nông ' 'nghiệp. Nhiều đoạn mặt bằng bàn giao không liên tục, xen kẽ ' 'khu dân cư nên không thể triển khai thi công đồng bộ. Việc ' 'bố trí tái định cư cho các hộ dân bị ảnh hưởng cũng chưa ' 'hoàn tất. Ngoài ra, dự án còn gặp khó khăn về nguồn vật liệu ' 'đất đắp. Theo hồ sơ thiết kế, công trình cần khoảng 500.000 ' 'm³ đất đắp K95, K98, trong khi các mỏ đất thương mại được ' 'cấp phép trên địa bàn hiện không đủ khả năng cung ứng.

Ông Nguyễn Ngọc Hoàng cho hay ' 'theo kế hoạch, chủ đầu tư phấn đấu hoàn thành đoạn tuyến dài ' 'khoảng 1,2 km từ cầu Quảng Đà đến nút giao ĐT609 trong tháng ' '12.2026 để phục vụ nhu cầu đi lại của người dân và kết nối ' 'giao thông khu vực. Phần còn lại dài khoảng 3,4 km sẽ được ' 'tập trung thi công, hoàn thành trong năm 2027.

\n' ' \n' '\n' '\n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' '\n' '
', 'md_content': '## CHỜ MÃI TUYẾN ĐƯỜNG DANG DỞ\n' '\n' 'Tháng 4.2021, UBND tỉnh Quảng Nam (cũ) phê duyệt đầu tư dự án ' '[đường vành ' 'đai](https://thanhnien.vn/tphcm-de-xuat-lam-them-gan-700-km-duong-vanh-dai-185260908091034815.htm ' '"đường vành đai") phía bắc tỉnh với chiều dài 4,62 km, tổng ' 'mức đầu tư gần 500 tỉ đồng. Dự án do Ban quản lý (BQL) đầu tư ' 'xây dựng dự án TX.Điện Bàn (cũ) làm chủ đầu tư, nay được ' 'chuyển giao cho BQL dự án đầu tư xây dựng các công trình giao ' 'thông và nông nghiệp TP.Đà Nẵng quản lý. Liên danh Công ty CP ' 'Đại Thiên Trường và Công ty CP 873 - Xây dựng công trình giao ' 'thông là đơn vị thi công.\n' '\n' '![Đường hàng trăm tỉ đồng làm mãi không xong- Ảnh ' '1.](https://images2.thanhnien.vn/thumb_w/660/528068263637045248/2026/9/24/tnw-a2-2-179025588983695849168.jpg)![Đường ' 'hàng trăm tỉ đồng làm mãi không xong- Ảnh ' '2.](https://images2.thanhnien.vn/thumb_w/660/528068263637045248/2026/9/24/tnw-a1-2-17902558895551252052613.jpg)Dự ' 'án đường vành đai phía bắc tỉnh Quảng Nam nối cầu Quảng Đà ở ' 'P.Điện Bàn Bắc thi công ì ạch\n' '\n' 'Ảnh: MẠNH CƯỜNG\n' '\n' 'Tháng 9.2023, dự án được điều chỉnh hướng tuyến đi thẳng vượt ' '[cao ' 'tốc](https://thanhnien.vn/coi-nut-that-cho-cao-toc-khat-tram-dung-185260923174947253.htm ' '"cao tốc") Đà Nẵng - Quảng Ngãi, kết nối với cầu Quảng Đà. Đến ' 'tháng 8.2024, công trình chính thức khởi công, thời gian thực ' 'hiện dự kiến 770 ngày và hoàn thành vào tháng 10.2025. Tuy ' 'nhiên, theo ghi nhận của PV Thanh Niên đến nay, công trường ' 'đoạn kết nối cầu Quảng Đà thuộc P.Điện Bàn Bắc vẫn ngổn ngang. ' 'Nhiều bó sắt thép nằm phơi mưa nắng đã bắt đầu hoen gỉ, máy ' 'móc thưa thớt, chỉ lác đác vài xe tải chở đất hoạt động.\n' '\n' 'Ông Nguyễn Đắc Năm (80 tuổi, thôn Xuân Diệu, P.Điện Bàn Bắc) ' 'cho biết khi dự án khởi công, người dân rất phấn khởi, đồng ' 'thuận bàn giao mặt bằng, sẵn sàng hiến đất với mong muốn công ' 'trình sớm hoàn thành để thúc đẩy phát triển kinh tế - xã hội ' 'và tạo thuận lợi trong đi lại. Tuy nhiên, tiến độ hiện nay quá ' 'chậm, không phải do yếu tố khách quan mà chủ yếu do công tác ' 'tổ chức thực hiện. "Một dự án trọng điểm nhưng thi công ì ạch ' 'khiến người dân rất bức xúc. Chúng tôi chỉ mong công trình ' 'được đẩy nhanh tiến độ, đáp ứng kỳ vọng của nhân dân", ông Năm ' 'nói.\n' '\n' 'Theo ông Đỗ Dũng (68 tuổi, thôn Thái Sơn, P.Điện Bàn Bắc), ' 'tình trạng dự án kéo dài còn ảnh hưởng trực tiếp đến sản xuất ' 'nông nghiệp. Nhiều diện tích đất bị chia cắt, hệ thống mương ' 'tưới tiêu bị ảnh hưởng, trong khi có những khu vực đã san lấp ' 'nhưng không thi công tiếp khiến đất bỏ hoang, cỏ mọc um tùm.\n' '\n' '## DO NHIỀU NGUYÊN NHÂN\n' '\n' 'Ông Nguyễn Ngọc Hoàng, Phó giám đốc BQL dự án đầu tư xây dựng ' 'các công trình giao thông và nông nghiệp TP.Đà Nẵng, cho biết ' 'khi đơn vị tiếp nhận [dự ' 'án](https://thanhnien.vn/nha-mau-du-an-bat-dong-san-thanh-diem-check-in-noi-tieng-o-tphcm-185260924141914935.htm ' '"dự án ") vào tháng 4.2026, khối lượng thi công chỉ đạt khoảng ' '9,57%. Sau gần 3 tháng tập trung chỉ đạo, tiến độ mới nâng lên ' 'khoảng 12%. "Tiến độ dự án hiện vẫn rất chậm. Ngay sau khi ' 'tiếp nhận, ban đã rà soát toàn bộ hồ sơ, đồng thời trình UBND ' 'TP.Đà Nẵng điều chỉnh thời gian thực hiện dự án. TP đã thống ' 'nhất gia hạn thời gian hoàn thành đến năm 2027", ông Hoàng cho ' 'biết.\n' '\n' 'Theo ông Hoàng, dự án chậm tiến độ do nhiều nguyên nhân cả ' 'khách quan lẫn chủ quan. Giai đoạn chuẩn bị đầu tư kéo dài vì ' 'phải lấy ý kiến nhiều sở, ngành và thực hiện các thủ tục điều ' 'chỉnh dự án. Sau khi kế hoạch lựa chọn nhà thầu được phê ' 'duyệt, quá trình đấu thầu tiếp tục phát sinh nhiều đơn kiến ' 'nghị liên quan đến năng lực, kinh nghiệm của nhà thầu, khiến ' 'việc lựa chọn đơn vị thi công kéo dài.\n' '\n' 'Bên cạnh đó, công tác [giải phóng mặt ' 'bằng](https://thanhnien.vn/than-toc-giai-phong-mat-bang-duong-tan-an-binh-hiep-o-tay-ninh-185260917152850583.htm ' '"giải phóng mặt bằng") vẫn là nút thắt lớn. Đến nay mới bàn ' 'giao khoảng 10,3/18,4 ha (đạt gần 56% diện tích), chủ yếu là ' 'đất nông nghiệp. Nhiều đoạn mặt bằng bàn giao không liên tục, ' 'xen kẽ khu dân cư nên không thể triển khai thi công đồng bộ. ' 'Việc bố trí tái định cư cho các hộ dân bị ảnh hưởng cũng chưa ' 'hoàn tất. Ngoài ra, dự án còn gặp khó khăn về nguồn vật liệu ' 'đất đắp. Theo hồ sơ thiết kế, công trình cần khoảng 500.000 m³ ' 'đất đắp K95, K98, trong khi các mỏ đất thương mại được cấp ' 'phép trên địa bàn hiện không đủ khả năng cung ứng.\n' '\n' 'Ông Nguyễn Ngọc Hoàng cho hay theo kế hoạch, chủ đầu tư phấn ' 'đấu hoàn thành đoạn tuyến dài khoảng 1,2 km từ cầu Quảng Đà ' 'đến nút giao ĐT609 trong tháng 12.2026 để phục vụ nhu cầu đi ' 'lại của người dân và kết nối giao thông khu vực. Phần còn lại ' 'dài khoảng 3,4 km sẽ được tập trung thi công, hoàn thành trong ' 'năm 2027.\n' '\n' '\n' '\n' ' //Chèn ads giữa bài\n' ' (runinit = window.runinit || []).push(function () {\n' ' //Nếu k chạy ads thì return\n' " if (typeof \\_chkPrLink != 'undefined' && \\_chkPrLink)\n" ' return;\n' '\n' '\n' ' var mutexAds = \'\';\n' ' var content = $(\'[data-role="content"]\');\n' ' if (content.length > 0) {\n' ' var childNodes = content[0].childNodes;\n' ' for (i = 0; i < childNodes.length; i++) {\n' ' var childNode = childNodes[i];\n' '\n' ' var isPhotoOrVideo = false;\n' " if (childNode.nodeName.toLowerCase() == 'div') {\n" ' // kiem tra xem co la anh khong?\n' " var type = $(childNode).attr('class') + '';\n" '\n' " if (type.indexOf('VCSortableInPreviewMode') >= 0) {\n" ' isPhotoOrVideo = true;\n' ' }\n' ' }\n' '\n' ' try {\n' ' if ((i >= childNodes.length / 2 - 1) && (i < ' 'childNodes.length / 2) && !isPhotoOrVideo) {\n' ' if (i <= childNodes.length - 3) {\n' ' childNode.after(htmlToElement(mutexAds));\n' ' arfAsync.push("l2srqb41");\n' ' }\n' ' break;\n' ' }\n' ' }\n' ' catch (e) { }\n' ' }\n' ' }\n' ' });\n' ' function htmlToElement(html) {\n' " var template = document.createElement('template');\n" ' template.innerHTML = html;\n' ' return template.content.firstChild;\n' ' }\n' '\n' '\n' ' function tnDetailInsertMidArticleWidget(rootSelector, ' 'widgetId) {\n' ' var root = document.querySelector(rootSelector);\n' ' if (!root) return null;\n' ' var contentRoot = ' 'root.querySelector(\'[data-role="content"]\') || root;\n' '\n' ' var blocks = Array.from(contentRoot.children).filter(function ' '(el) {\n' ' if (el.id === widgetId) return false;\n' " if (el.hasAttribute('data-check-position')) return false;\n" " if (el.hasAttribute('data-type')) return false;\n" ' if ' '(/^(SCRIPT|STYLE|TEMPLATE|LINK|NOSCRIPT)$/.test(el.tagName)) ' 'return false;\n' " if (el.tagName === 'P' && !el.textContent.trim()) return " 'false;\n' ' return el.getClientRects().length > 0;\n' ' });\n' ' if (!blocks.length) return null;\n' '\n' ' var rootRect = contentRoot.getBoundingClientRect();\n' ' var idx;\n' ' if (rootRect.height > 0) {\n' ' var midY = rootRect.top + rootRect.height / 2;\n' ' for (idx = 0; idx < blocks.length; idx++) {\n' ' if (blocks[idx].getBoundingClientRect().bottom >= midY) ' 'break;\n' ' }\n' ' if (idx >= blocks.length) idx = blocks.length - 1;\n' ' } else {\n' ' idx = Math.floor(blocks.length / 2);\n' ' }\n' '\n' ' var target = blocks[idx];\n' " var isMedia = target.tagName === 'FIGURE' || " "target.classList.contains('VCSortableInPreviewMode');\n" '\n' " var newDiv = document.createElement('div');\n" ' newDiv.id = widgetId;\n' ' contentRoot.insertBefore(newDiv, isMedia ? target : ' 'target.nextSibling);\n' ' return newDiv;\n' ' }\n' '\n' ' function tnOnReady(fn) {\n' " if (document.readyState !== 'loading') fn();\n" " else document.addEventListener('DOMContentLoaded', fn, { " 'once: true });\n' ' }\n' ' \n' '\n' ' (function () {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' ' if (laNuocNgoai) return;\n' ' tnOnReady(function () {\n' ' var pernewDiv = ' "tnDetailInsertMidArticleWidget('div.detail-cmain', " "'tn\\_detail\\_foryou1\\_pc\\_per');\n" ' if (!pernewDiv) return;\n' '\n' ' ' "loadJsAsync('https://js.aiservice.vn/rec/tn\\_detail\\_foryou1\\_pc\\_per.js', " 'function(){}, function() {\n' ' ' "window.boxTNRecs.err.push('rec/tn\\_detail\\_foryou1\\_pc\\_per.js');\n" ' });\n' ' });\n' ' })();\n' ' \n' '\n' ' (function() {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' " if (typeof window.laNuocNgoai === 'undefined' || " '!window.laNuocNgoai) return;\n' '\n' ' tnOnReady(function () {\n' ' var newDiv = ' "tnDetailInsertMidArticleWidget('div.detail-cmain', " "'taboola-mid-article-widget');\n" ' if (!newDiv) return;\n' '\n' ' window.\\_taboola = window.\\_taboola || [];\n' ' window.\\_taboola.push({\n' " mode: 'thumbnails-4x1',\n" " container: 'taboola-mid-article-widget',\n" " placement: 'Mid Article Widget',\n" " target\\_type: 'mix'\n" ' });\n' ' });\n' ' })();\n' ' \n', 'published_date': datetime.date(2026, 9, 25), 'published_timestamp': datetime.datetime(2026, 9, 25, 6, 36), 'source': 'ThanhNien', 'tags': ['Dự án đường vành đai', 'Quảng Nam', 'Đầu tư', 'Ban quản lý dự án', 'Công ty CP Đại Thiên Trường', 'Công ty CP 873', 'Thi công', 'Kết nối cầu Quảng Đà', 'Tiến độ dự án', 'Chậm tiến độ', 'Tổ chức thực hiện', 'Phát triển kinh tế - xã hội', 'Giải phóng mặt bằng', 'Tái định cư', 'Nguồn vật liệu', 'Đất nông nghiệp', 'Công trình giao thông', 'Hệ thống tưới tiêu', 'Kỳ vọng của nhân dân', 'Khó khăn trong thi công', 'Thời gian hoàn thành'], 'title': 'Đường hàng trăm tỉ đồng làm mãi không xong', 'url': 'https://thanhnien.vn/duong-hang-tram-ti-dong-lam-mai-khong-xong-185260924202002383.htm', 'voice': 'HN-Nu-2-BL'} 2026-09-24 23:47:20 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2026-09-24 23:47:20 [openai._base_client] DEBUG: Request options: {'method': 'post', 'url': '/chat/completions', 'files': None, 'json_data': {'messages': [{'role': 'user', 'content': "Act as a content analysis tool. I will provide you with a piece of content, and your task is to extract relevant tags (keywords or phrases) that summarize the main topics, themes, or ideas present in the text. The tags should be concise, specific, and useful for categorization or search purposes. Ignore common filler words (e.g., 'the', 'and', 'is') unless they are part of a specific concept or phrase. After analyzing the content, return the tags in a simple list format. Here is the content to analyze: Theo phụ huynh, do công trình chưa hoàn thành, học sinh phải dồn lịch học vào một buổi, gây mệt mỏi và bất tiện cho học sinh, giáo viên cũng như phụ huynh. Sau khoảng 2 tuần nhập học, một số khu vực trong trường vẫn còn đất đá, vật liệu xây dựng ngổn ngang; một số lối đi bị ảnh hưởng bởi hoạt động thi công. Máy móc hoạt động trong quá trình xây dựng cũng gây tiếng ồn, bụi bặm, ảnh hưởng môi trường học tập. Phụ huynh cho rằng việc sửa chữa, nâng cấp cơ sở vật chất trường học là cần thiết và được đồng tình. Tuy nhiên, công trình kéo dài khiến không gian học tập, sinh hoạt của học sinh bị thu hẹp. Bên cạnh đó, khu vực thi công cần được rào chắn, che chắn và bố trí hợp lý nhằm hạn chế bụi, tiếng ồn, đồng thời bảo đảm an toàn. Phụ huynh mong nhà trường và đơn vị thi công đẩy nhanh tiến độ, sớm hoàn thành công trình; thu dọn đất đá, vật liệu xây dựng, giữ các lối đi thông thoáng, tăng cường rào chắn và biển cảnh báo tại khu vực thi công. Việc thi công cũng cần được tổ chức hợp lý, hạn chế ảnh hưởng hoạt động dạy và học."}], 'model': 'gpt-4o-mini', 'max_tokens': 200, 'temperature': 0.3}} 2026-09-24 23:47:20 [openai._base_client] DEBUG: Sending HTTP Request: POST https://api.openai.com/v1/chat/completions 2026-09-24 23:47:20 [httpcore.connection] DEBUG: connect_tcp.started host='api.openai.com' port=443 local_address=None timeout=900 socket_options=None 2026-09-24 23:47:20 [httpcore.connection] DEBUG: connect_tcp.complete return_value= 2026-09-24 23:47:20 [httpcore.connection] DEBUG: start_tls.started ssl_context= server_hostname='api.openai.com' timeout=900 2026-09-24 23:47:20 [httpcore.connection] DEBUG: start_tls.complete return_value= 2026-09-24 23:47:20 [httpcore.http11] DEBUG: send_request_headers.started request= 2026-09-24 23:47:20 [httpcore.http11] DEBUG: send_request_headers.complete 2026-09-24 23:47:20 [httpcore.http11] DEBUG: send_request_body.started request= 2026-09-24 23:47:20 [httpcore.http11] DEBUG: send_request_body.complete 2026-09-24 23:47:20 [httpcore.http11] DEBUG: receive_response_headers.started request= 2026-09-24 23:47:21 [httpcore.http11] DEBUG: receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Thu, 24 Sep 2026 23:47:21 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'CF-Ray', b'a405ac74d8b90399-HKG'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Server', b'cloudflare'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'X-Content-Type-Options', b'nosniff'), (b'access-control-expose-headers', b'X-Request-ID'), (b'access-control-expose-headers', b'CF-Ray'), (b'Access-Control-Expose-Headers', b'CF-Ray'), (b'openai-organization', b'user-bmggli0qfnphtzkdehrnfdrn'), (b'openai-processing-ms', b'1170'), (b'openai-project', b'proj_AqBCEfNib7E5LbrMYDz2oklk'), (b'openai-version', b'2020-10-01'), (b'x-openai-proxy-wasm', b'v0.1'), (b'x-ratelimit-limit-requests', b'30000'), (b'x-ratelimit-limit-tokens', b'150000000'), (b'x-ratelimit-remaining-requests', b'29999'), (b'x-ratelimit-remaining-tokens', b'149999527'), (b'x-ratelimit-reset-requests', b'2ms'), (b'x-ratelimit-reset-tokens', b'0s'), (b'x-request-id', b'req_1e339b36902e4d008b33de7709d0087a'), (b'set-cookie', b'__cf_bm=eVoFH9.XAUKW_CyN6egbSkPJ72mwGxOrmFuVyaCHMH4-1790293640.4601977-1.0.1.1-PhG0w2g_2PtU8zYorcdmi6Xj0qsSJFFhDtXHytR2HfstNZHystEV3m1U4uxdSr3DqSHAO7tldkhyTc2DvdYeOluqINXuILuQZu_tzIeXDxsf_6tgq8wjZZRInjtd3SIW; HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 25 Sep 2026 00:17:21 GMT'), (b'Content-Encoding', b'gzip'), (b'alt-svc', b'h3=":443"; ma=86400')]) 2026-09-24 23:47:21 [httpx] INFO: HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK" 2026-09-24 23:47:21 [httpcore.http11] DEBUG: receive_response_body.started request= 2026-09-24 23:47:21 [httpcore.http11] DEBUG: receive_response_body.complete 2026-09-24 23:47:21 [httpcore.http11] DEBUG: response_closed.started 2026-09-24 23:47:21 [httpcore.http11] DEBUG: response_closed.complete 2026-09-24 23:47:21 [openai._base_client] DEBUG: HTTP Response: POST https://api.openai.com/v1/chat/completions "200 OK" Headers([('date', 'Thu, 24 Sep 2026 23:47:21 GMT'), ('content-type', 'application/json'), ('transfer-encoding', 'chunked'), ('connection', 'keep-alive'), ('cf-ray', 'a405ac74d8b90399-HKG'), ('cf-cache-status', 'DYNAMIC'), ('server', 'cloudflare'), ('strict-transport-security', 'max-age=31536000; includeSubDomains; preload'), ('x-content-type-options', 'nosniff'), ('access-control-expose-headers', 'X-Request-ID'), ('access-control-expose-headers', 'CF-Ray'), ('access-control-expose-headers', 'CF-Ray'), ('openai-organization', 'user-bmggli0qfnphtzkdehrnfdrn'), ('openai-processing-ms', '1170'), ('openai-project', 'proj_AqBCEfNib7E5LbrMYDz2oklk'), ('openai-version', '2020-10-01'), ('x-openai-proxy-wasm', 'v0.1'), ('x-ratelimit-limit-requests', '30000'), ('x-ratelimit-limit-tokens', '150000000'), ('x-ratelimit-remaining-requests', '29999'), ('x-ratelimit-remaining-tokens', '149999527'), ('x-ratelimit-reset-requests', '2ms'), ('x-ratelimit-reset-tokens', '0s'), ('x-request-id', 'req_1e339b36902e4d008b33de7709d0087a'), ('set-cookie', '__cf_bm=eVoFH9.XAUKW_CyN6egbSkPJ72mwGxOrmFuVyaCHMH4-1790293640.4601977-1.0.1.1-PhG0w2g_2PtU8zYorcdmi6Xj0qsSJFFhDtXHytR2HfstNZHystEV3m1U4uxdSr3DqSHAO7tldkhyTc2DvdYeOluqINXuILuQZu_tzIeXDxsf_6tgq8wjZZRInjtd3SIW; HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 25 Sep 2026 00:17:21 GMT'), ('content-encoding', 'gzip'), ('alt-svc', 'h3=":443"; ma=86400')]) 2026-09-24 23:47:21 [openai._base_client] DEBUG: request_id: req_1e339b36902e4d008b33de7709d0087a 2026-09-24 23:47:21 [thanhnien_timestamp] INFO: Min timestamp: 2026-09-25 06:25:00, Published timestamp: 2026-09-25 06:36:00 2026-09-24 23:47:21 [urllib3.connectionpool] DEBUG: Starting new HTTP connection (1): tts-api:4444 2026-09-24 23:47:30 [urllib3.connectionpool] DEBUG: http://tts-api:4444 "POST /api/v2/text-to-speech HTTP/1.1" 200 408 2026-09-24 23:47:30 [scrapy.core.scraper] DEBUG: Scraped from <200 https://thanhnien.vn/sua-chua-truong-hoc-keo-dai-hoc-sinh-bi-anh-huong-185260924202452347.htm> {'audio_url': 'https://lake-api.blaze.vn/tts-data/swwxliuo-2026-09-24%2023%3A47%3A21.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=BLZ4B6CBCE73519431B%2F20260924%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260924T234727Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=1a0140519a3bf2de2c1e85ae3ec93b53374adbb57570e5598daeac275e678640', 'author': None, 'category': 'Bạn đọc', 'content': 'Theo phụ huynh, do công trình chưa hoàn thành, học sinh phải dồn ' 'lịch học vào một buổi, gây mệt mỏi và bất tiện cho học sinh, giáo ' 'viên cũng như phụ huynh. Sau khoảng 2 tuần nhập học, một số khu ' 'vực trong trường vẫn còn đất đá, vật liệu xây dựng ngổn ngang; ' 'một số lối đi bị ảnh hưởng bởi hoạt động thi công. Máy móc hoạt ' 'động trong quá trình xây dựng cũng gây tiếng ồn, bụi bặm, ảnh ' 'hưởng môi trường học tập. Phụ huynh cho rằng việc sửa chữa, nâng ' 'cấp cơ sở vật chất trường học là cần thiết và được đồng tình. Tuy ' 'nhiên, công trình kéo dài khiến không gian học tập, sinh hoạt của ' 'học sinh bị thu hẹp. Bên cạnh đó, khu vực thi công cần được rào ' 'chắn, che chắn và bố trí hợp lý nhằm hạn chế bụi, tiếng ồn, đồng ' 'thời bảo đảm an toàn. Phụ huynh mong nhà trường và đơn vị thi ' 'công đẩy nhanh tiến độ, sớm hoàn thành công trình; thu dọn đất ' 'đá, vật liệu xây dựng, giữ các lối đi thông thoáng, tăng cường ' 'rào chắn và biển cảnh báo tại khu vực thi công. Việc thi công ' 'cũng cần được tổ chức hợp lý, hạn chế ảnh hưởng hoạt động dạy và ' 'học.', 'description': 'Phụ huynh có con em học tại Trường THCS Nguyễn Hữu Thọ (số 62 ' 'Lâm Văn Bền, P.Tân Hưng, TP.HCM) phản ánh công trình sửa ' 'chữa, nâng cấp, cải tạo và xây thêm một dãy phòng mới tại ' 'trường kéo dài, ảnh hưởng đến việc học tập, sinh hoạt của học ' 'sinh.', 'html_content': '
Sửa chữa trường học kéo dài, học sinh bị ảnh '
                 'hưởng- Ảnh 1.

Công trình sửa chữa, nâng cấp và ' 'xây thêm một dãy phòng mới tại Trường THCS Nguyễn Hữu ' 'Thọ

Ảnh: NGỌC ' 'QUỲNH

Theo ' 'phụ huynh, do công trình chưa ' 'hoàn thành, học sinh phải dồn lịch học vào một buổi, gây mệt ' 'mỏi và bất tiện cho học sinh, giáo viên cũng như phụ huynh. ' 'Sau khoảng 2 tuần nhập học, một số khu vực trong trường vẫn ' 'còn đất đá, vật liệu xây dựng ngổn ngang; một số lối đi bị ' 'ảnh hưởng bởi hoạt động thi công. Máy móc hoạt động trong ' 'quá trình xây dựng cũng gây tiếng ồn, bụi bặm, ảnh hưởng môi ' 'trường học tập. Phụ huynh cho rằng việc sửa chữa, nâng cấp ' 'cơ sở vật chất trường học là cần ' 'thiết và được đồng tình. Tuy nhiên, công trình kéo dài khiến ' 'không gian học tập, sinh hoạt của học sinh bị thu hẹp. Bên ' 'cạnh đó, khu vực thi công cần được rào chắn, che chắn và bố ' 'trí hợp lý nhằm hạn chế bụi, tiếng ồn, đồng thời bảo đảm an ' 'toàn.

Sửa chữa trường học kéo dài, học sinh bị ảnh '
                 'hưởng- Ảnh 2.

Đã khai giảng gần 1 tháng, công ' 'trình vẫn còn ngổn ngang

Ảnh: NGỌC ' 'QUỲNH

Phụ ' 'huynh mong nhà trường và đơn vị thi ' 'công đẩy nhanh tiến độ, sớm hoàn thành công trình; thu ' 'dọn đất đá, vật liệu xây dựng, giữ các lối đi thông thoáng, ' 'tăng cường rào chắn và biển cảnh báo tại khu vực thi công. ' 'Việc thi công cũng cần được tổ chức hợp lý, hạn chế ảnh ' 'hưởng hoạt động dạy và học.

\n' ' \n' '\n' '\n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' '\n' '
', 'md_content': '![Sửa chữa trường học kéo dài, học sinh bị ảnh hưởng- Ảnh ' '1.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2026/9/24/tnw-photo-1790256206495-1790256212268705744611-17902562217771456145522.jpeg)Công ' 'trình sửa chữa, nâng cấp và xây thêm một dãy phòng mới tại ' 'Trường THCS Nguyễn Hữu Thọ\n' '\n' 'Ảnh: NGỌC QUỲNH\n' '\n' 'Theo phụ huynh, do [công ' 'trình](https://thanhnien.vn/thi-cong-cong-trinh-o-khu-vuc-thanh-co-quang-tri-phat-hien-6-hai-cot-liet-si-185260922143226873.htm ' '"công trình") chưa hoàn thành, học sinh phải dồn lịch học vào ' 'một buổi, gây mệt mỏi và bất tiện cho học sinh, giáo viên cũng ' 'như phụ huynh. Sau khoảng 2 tuần nhập học, một số khu vực ' 'trong trường vẫn còn đất đá, vật liệu xây dựng ngổn ngang; một ' 'số lối đi bị ảnh hưởng bởi hoạt động thi công. Máy móc hoạt ' 'động trong quá trình xây dựng cũng gây tiếng ồn, bụi bặm, ảnh ' 'hưởng môi trường học tập. Phụ huynh cho rằng việc sửa chữa, ' 'nâng cấp cơ sở vật chất [trường ' 'học](https://thanhnien.vn/tru-so-cu-hoi-sinh-thanh-truong-hoc-cho-gan-2700-hoc-sinh-185260921110622882.htm ' '"trường học") là cần thiết và được đồng tình. Tuy nhiên, công ' 'trình kéo dài khiến không gian học tập, sinh hoạt của học sinh ' 'bị thu hẹp. Bên cạnh đó, khu vực thi công cần được rào chắn, ' 'che chắn và bố trí hợp lý nhằm hạn chế bụi, tiếng ồn, đồng ' 'thời bảo đảm an toàn.\n' '\n' '![Sửa chữa trường học kéo dài, học sinh bị ảnh hưởng- Ảnh ' '2.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2026/9/24/tnw-photo-1790256234088-17902562346241157322528-1790256245707153911248.jpeg)Đã ' 'khai giảng gần 1 tháng, công trình vẫn còn ngổn ngang\n' '\n' 'Ảnh: NGỌC QUỲNH\n' '\n' 'Phụ huynh mong nhà trường và [đơn vị thi ' 'công](https://thanhnien.vn/ca-chet-hang-loat-nguoi-dan-chua-chap-nhan-muc-ho-tro-tu-don-vi-thi-cong-185260608155921634.htm ' '"đơn vị thi công") đẩy nhanh tiến độ, sớm hoàn thành công ' 'trình; thu dọn đất đá, vật liệu xây dựng, giữ các lối đi thông ' 'thoáng, tăng cường rào chắn và biển cảnh báo tại khu vực thi ' 'công. Việc thi công cũng cần được tổ chức hợp lý, hạn chế ảnh ' 'hưởng hoạt động dạy và học.\n' '\n' '\n' '\n' ' //Chèn ads giữa bài\n' ' (runinit = window.runinit || []).push(function () {\n' ' //Nếu k chạy ads thì return\n' " if (typeof \\_chkPrLink != 'undefined' && \\_chkPrLink)\n" ' return;\n' '\n' '\n' ' var mutexAds = \'\';\n' ' var content = $(\'[data-role="content"]\');\n' ' if (content.length > 0) {\n' ' var childNodes = content[0].childNodes;\n' ' for (i = 0; i < childNodes.length; i++) {\n' ' var childNode = childNodes[i];\n' '\n' ' var isPhotoOrVideo = false;\n' " if (childNode.nodeName.toLowerCase() == 'div') {\n" ' // kiem tra xem co la anh khong?\n' " var type = $(childNode).attr('class') + '';\n" '\n' " if (type.indexOf('VCSortableInPreviewMode') >= 0) {\n" ' isPhotoOrVideo = true;\n' ' }\n' ' }\n' '\n' ' try {\n' ' if ((i >= childNodes.length / 2 - 1) && (i < ' 'childNodes.length / 2) && !isPhotoOrVideo) {\n' ' if (i <= childNodes.length - 3) {\n' ' childNode.after(htmlToElement(mutexAds));\n' ' arfAsync.push("l2srqb41");\n' ' }\n' ' break;\n' ' }\n' ' }\n' ' catch (e) { }\n' ' }\n' ' }\n' ' });\n' ' function htmlToElement(html) {\n' " var template = document.createElement('template');\n" ' template.innerHTML = html;\n' ' return template.content.firstChild;\n' ' }\n' '\n' '\n' ' function tnDetailInsertMidArticleWidget(rootSelector, ' 'widgetId) {\n' ' var root = document.querySelector(rootSelector);\n' ' if (!root) return null;\n' ' var contentRoot = ' 'root.querySelector(\'[data-role="content"]\') || root;\n' '\n' ' var blocks = Array.from(contentRoot.children).filter(function ' '(el) {\n' ' if (el.id === widgetId) return false;\n' " if (el.hasAttribute('data-check-position')) return false;\n" " if (el.hasAttribute('data-type')) return false;\n" ' if ' '(/^(SCRIPT|STYLE|TEMPLATE|LINK|NOSCRIPT)$/.test(el.tagName)) ' 'return false;\n' " if (el.tagName === 'P' && !el.textContent.trim()) return " 'false;\n' ' return el.getClientRects().length > 0;\n' ' });\n' ' if (!blocks.length) return null;\n' '\n' ' var rootRect = contentRoot.getBoundingClientRect();\n' ' var idx;\n' ' if (rootRect.height > 0) {\n' ' var midY = rootRect.top + rootRect.height / 2;\n' ' for (idx = 0; idx < blocks.length; idx++) {\n' ' if (blocks[idx].getBoundingClientRect().bottom >= midY) ' 'break;\n' ' }\n' ' if (idx >= blocks.length) idx = blocks.length - 1;\n' ' } else {\n' ' idx = Math.floor(blocks.length / 2);\n' ' }\n' '\n' ' var target = blocks[idx];\n' " var isMedia = target.tagName === 'FIGURE' || " "target.classList.contains('VCSortableInPreviewMode');\n" '\n' " var newDiv = document.createElement('div');\n" ' newDiv.id = widgetId;\n' ' contentRoot.insertBefore(newDiv, isMedia ? target : ' 'target.nextSibling);\n' ' return newDiv;\n' ' }\n' '\n' ' function tnOnReady(fn) {\n' " if (document.readyState !== 'loading') fn();\n" " else document.addEventListener('DOMContentLoaded', fn, { " 'once: true });\n' ' }\n' ' \n' '\n' ' (function () {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' ' if (laNuocNgoai) return;\n' ' tnOnReady(function () {\n' ' var pernewDiv = ' "tnDetailInsertMidArticleWidget('div.detail-cmain', " "'tn\\_detail\\_foryou1\\_pc\\_per');\n" ' if (!pernewDiv) return;\n' '\n' ' ' "loadJsAsync('https://js.aiservice.vn/rec/tn\\_detail\\_foryou1\\_pc\\_per.js', " 'function(){}, function() {\n' ' ' "window.boxTNRecs.err.push('rec/tn\\_detail\\_foryou1\\_pc\\_per.js');\n" ' });\n' ' });\n' ' })();\n' ' \n' '\n' ' (function() {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' " if (typeof window.laNuocNgoai === 'undefined' || " '!window.laNuocNgoai) return;\n' '\n' ' tnOnReady(function () {\n' ' var newDiv = ' "tnDetailInsertMidArticleWidget('div.detail-cmain', " "'taboola-mid-article-widget');\n" ' if (!newDiv) return;\n' '\n' ' window.\\_taboola = window.\\_taboola || [];\n' ' window.\\_taboola.push({\n' " mode: 'thumbnails-4x1',\n" " container: 'taboola-mid-article-widget',\n" " placement: 'Mid Article Widget',\n" " target\\_type: 'mix'\n" ' });\n' ' });\n' ' })();\n' ' \n', 'published_date': datetime.date(2026, 9, 25), 'published_timestamp': datetime.datetime(2026, 9, 25, 6, 36), 'source': 'ThanhNien', 'tags': ['Công trình xây dựng', 'Học sinh', 'Phụ huynh', 'Giáo viên', 'Lịch học', 'Mệt mỏi', 'Bất tiện', 'Đất đá', 'Vật liệu xây dựng', 'Tiếng ồn', 'Bụi bặm', 'Môi trường học tập', 'Cơ sở vật chất', 'Sửa chữa', 'Nâng cấp', 'An toàn', 'Rào chắn', 'Biển cảnh báo', 'Tiến độ thi công', 'Hoạt động dạy và học'], 'title': 'Sửa chữa trường học kéo dài, học sinh bị ảnh hưởng', 'url': 'https://thanhnien.vn/sua-chua-truong-hoc-keo-dai-hoc-sinh-bi-anh-huong-185260924202452347.htm', 'voice': 'SG-Nam-1-TM'} 2026-09-24 23:47:30 [scrapy.core.engine] INFO: Closing spider (finished) 2026-09-24 23:47:30 [boto3.s3.transfer] DEBUG: Opting out of CRT Transfer Manager. Preferred client: auto, CRT available: False, Instance Optimized: False. 2026-09-24 23:47:30 [boto3.s3.transfer] DEBUG: Using default client. pid: 51908, thread: 140339812870968 2026-09-24 23:47:30 [s3transfer.utils] DEBUG: Acquiring 0 2026-09-24 23:47:30 [s3transfer.tasks] DEBUG: UploadSubmissionTask(transfer_id=0, {'transfer_future': }) about to wait for the following futures [] 2026-09-24 23:47:30 [s3transfer.tasks] DEBUG: UploadSubmissionTask(transfer_id=0, {'transfer_future': }) done waiting for dependent futures 2026-09-24 23:47:30 [s3transfer.tasks] DEBUG: Executing task UploadSubmissionTask(transfer_id=0, {'transfer_future': }) with kwargs {'client': , 'config': , 'osutil': , 'request_executor': , 'transfer_future': } 2026-09-24 23:47:30 [s3transfer.futures] DEBUG: Submitting task PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl', 'extra_args': {}}) to executor for transfer request: 0. 2026-09-24 23:47:30 [s3transfer.utils] DEBUG: Acquiring 0 2026-09-24 23:47:30 [s3transfer.tasks] DEBUG: PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl', 'extra_args': {}}) about to wait for the following futures [] 2026-09-24 23:47:30 [s3transfer.utils] DEBUG: Releasing acquire 0/None 2026-09-24 23:47:30 [s3transfer.tasks] DEBUG: PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl', 'extra_args': {}}) done waiting for dependent futures 2026-09-24 23:47:30 [s3transfer.tasks] DEBUG: Executing task PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl', 'extra_args': {}}) with kwargs {'client': , 'fileobj': , 'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl', 'extra_args': {}} 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler > 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler > 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-endpoint-resolution.s3: calling handler 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-endpoint-resolution.s3: calling handler > 2026-09-24 23:47:30 [botocore.regions] DEBUG: Calling endpoint provider with parameters: {'Bucket': 'dagster-output-data', 'Region': 'us-east-1', 'UseFIPS': False, 'UseDualStack': False, 'Endpoint': 'https://lake-api.actable.ai/', 'ForcePathStyle': True, 'Accelerate': False, 'UseGlobalEndpoint': True, 'Key': 'thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl', 'DisableMultiRegionAccessPoints': False, 'UseArnRegion': True} 2026-09-24 23:47:30 [botocore.regions] DEBUG: Endpoint provider result: https://lake-api.actable.ai/dagster-output-data 2026-09-24 23:47:30 [botocore.regions] DEBUG: Selecting from endpoint provider's list of auth schemes: "sigv4". User selected auth scheme is: "None" 2026-09-24 23:47:30 [botocore.regions] DEBUG: Selected auth type "v4" as "v4" with signing context params: {'region': 'us-east-1', 'signing_name': 's3', 'disableDoubleEncoding': True} 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.handlers] DEBUG: Adding expect 100 continue header to request. 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler > 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.endpoint] DEBUG: Making request for OperationModel(name=PutObject) with params: {'url_path': '/thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl', 'query_string': {}, 'method': 'PUT', 'headers': {'User-Agent': 'Boto3/1.34.57 md/Botocore#1.34.162 ua/2.0 os/linux#5.15.0-191-generic md/arch#x86_64 lang/python#3.11.13 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.34.162', 'Content-MD5': '2zJGqpY4veHM7XUnXTESUw==', 'Expect': '100-continue'}, 'body': , 'auth_path': '/dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl', 'url': 'https://lake-api.actable.ai/dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl', 'context': {'client_region': 'us-east-1', 'client_config': , 'has_streaming_input': True, 'auth_type': 'v4', 's3_redirect': {'redirected': False, 'bucket': 'dagster-output-data', 'params': {'Bucket': 'dagster-output-data', 'Key': 'thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl', 'Body': }}, 'input_params': {'Bucket': 'dagster-output-data', 'Key': 'thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl'}, 'signing': {'region': 'us-east-1', 'signing_name': 's3', 'disableDoubleEncoding': True}, 'endpoint_properties': {'authSchemes': [{'disableDoubleEncoding': True, 'name': 'sigv4', 'signingName': 's3', 'signingRegion': 'us-east-1'}]}}} 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler > 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event choose-signer.s3.PutObject: calling handler > 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event choose-signer.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-sign.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event before-sign.s3.PutObject: calling handler > 2026-09-24 23:47:30 [botocore.auth] DEBUG: Calculating signature using v4 auth. 2026-09-24 23:47:30 [botocore.auth] DEBUG: CanonicalRequest: PUT /dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl content-md5:2zJGqpY4veHM7XUnXTESUw== host:lake-api.actable.ai x-amz-content-sha256:UNSIGNED-PAYLOAD x-amz-date:20260924T234730Z content-md5;host;x-amz-content-sha256;x-amz-date UNSIGNED-PAYLOAD 2026-09-24 23:47:30 [botocore.auth] DEBUG: StringToSign: AWS4-HMAC-SHA256 20260924T234730Z 20260924/us-east-1/s3/aws4_request ed0de80d8178346dd08b1a77e9f0d26cf18b45b161e218db6aff9c96e75401c9 2026-09-24 23:47:30 [botocore.auth] DEBUG: Signature: 8bedcacb69c366700c65c1ae0b29a81a46c8141ed5717d98181cb8f91fa8b41f 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.endpoint] DEBUG: Sending http request: 2026-09-24 23:47:30 [botocore.httpsession] DEBUG: Certificate path: /usr/local/lib/python3.11/site-packages/certifi/cacert.pem 2026-09-24 23:47:30 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): lake-api.actable.ai:443 2026-09-24 23:47:30 [botocore.awsrequest] DEBUG: Waiting for 100 Continue response. 2026-09-24 23:47:30 [botocore.awsrequest] DEBUG: 100 Continue response seen, now sending request body. 2026-09-24 23:47:30 [urllib3.connectionpool] DEBUG: https://lake-api.actable.ai:443 "PUT /dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl HTTP/1.1" 200 0 2026-09-24 23:47:30 [botocore.parsers] DEBUG: Response headers: {'Server': 'nginx/1.18.0 (Ubuntu)', 'Date': 'Thu, 24 Sep 2026 23:47:30 GMT', 'Content-Length': '0', 'Connection': 'keep-alive', 'Accept-Ranges': 'bytes', 'ETag': '"db3246aa9638bde1cced75275d311253"', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains', 'Vary': 'Origin, Accept-Encoding', 'X-Amz-Bucket-Region': 'us-east-1', 'X-Amz-Id-2': 'dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8', 'X-Amz-Request-Id': '18D86696E03DD8DC', 'X-Content-Type-Options': 'nosniff', 'X-Ratelimit-Limit': '93243', 'X-Ratelimit-Remaining': '93243', 'X-Xss-Protection': '1; mode=block'} 2026-09-24 23:47:30 [botocore.parsers] DEBUG: Response body: b'' 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event needs-retry.s3.PutObject: calling handler 2026-09-24 23:47:30 [botocore.retryhandler] DEBUG: No retry needed. 2026-09-24 23:47:30 [botocore.hooks] DEBUG: Event needs-retry.s3.PutObject: calling handler > 2026-09-24 23:47:30 [s3transfer.utils] DEBUG: Releasing acquire 0/None 2026-09-24 23:47:30 [scrapy.extensions.feedexport] INFO: Stored jsonlines feed (5 items) in: s3://dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_fda7afa6b87111f1a00e9270e2e49414_scheduled_2026-09-25.jl 2026-09-24 23:47:30 [scrapy.statscollectors] INFO: Dumping Scrapy stats: {'downloader/request_bytes': 7319, 'downloader/request_count': 23, 'downloader/request_method_count/GET': 23, 'downloader/response_bytes': 1846800, 'downloader/response_count': 23, 'downloader/response_status_count/200': 23, 'elapsed_time_seconds': 108.658963, 'feedexport/success_count/S3FeedStorage': 1, 'finish_reason': 'finished', 'finish_time': datetime.datetime(2026, 9, 24, 23, 47, 30, 11049, tzinfo=datetime.timezone.utc), 'httpcompression/response_bytes': 6992324, 'httpcompression/response_count': 23, 'item_scraped_count': 5, 'log_count/DEBUG': 220, 'log_count/INFO': 37, 'memusage/max': 143167488, 'memusage/startup': 124616704, 'request_depth_max': 2, 'response_received_count': 23, 'robotstxt/request_count': 1, 'robotstxt/response_count': 1, 'robotstxt/response_status_count/200': 1, 'scheduler/dequeued': 22, 'scheduler/dequeued/memory': 22, 'scheduler/enqueued': 22, 'scheduler/enqueued/memory': 22, 'start_time': datetime.datetime(2026, 9, 24, 23, 45, 41, 352086, tzinfo=datetime.timezone.utc)} 2026-09-24 23:47:30 [scrapy.core.engine] INFO: Spider closed (finished) 2026-09-24 23:47:30 [httpcore.connection] DEBUG: close.started 2026-09-24 23:47:30 [httpcore.connection] DEBUG: close.complete 2026-09-24 23:47:30 [httpcore.connection] DEBUG: close.started 2026-09-24 23:47:30 [httpcore.connection] DEBUG: close.complete 2026-09-24 23:47:30 [httpcore.connection] DEBUG: close.started 2026-09-24 23:47:30 [httpcore.connection] DEBUG: close.complete 2026-09-24 23:47:30 [httpcore.connection] DEBUG: close.started 2026-09-24 23:47:30 [httpcore.connection] DEBUG: close.complete