Files
simon 6ec198687c feat(djapi): 新增日报查询 API(news/reports + news/events)及文档
- api/report/ 包:query(连库+SQL)/ views(2 视图)/ serializers(OpenAPI)/ tests(17 单测)
- urls.py 注册 news/reports/、news/events/;settings.py SPECTACULAR 加「日报」tag
- .env.example 补 NEWS_DB_* 占位配置;README/continuation.md 更新
- docs/news_report_api.md 使用手册;CLAUDE*.md 修正 CLI 路径为 finance/ 前缀
2026-08-05 20:51:42 +08:00

51 lines
2.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""日报查询 API 的 OpenAPI 文档 serializer(只读,不用于反序列化)。"""
from rest_framework import serializers
class EventSerializer(serializers.Serializer):
"""日报事件明细(news_event 一行)"""
id = serializers.IntegerField()
section = serializers.CharField()
rank = serializers.IntegerField()
importance = serializers.IntegerField(allow_null=True)
event_type = serializers.CharField(allow_null=True)
title = serializers.CharField()
summary = serializers.CharField(allow_null=True)
sentiment = serializers.CharField(allow_null=True)
source = serializers.CharField(allow_null=True)
url = serializers.CharField(allow_null=True)
class ReportListSerializer(serializers.Serializer):
"""日报列表项(news_report 主表字段)"""
id = serializers.IntegerField()
report_date = serializers.CharField()
report_type = serializers.CharField()
file_name = serializers.CharField()
generated_at = serializers.CharField()
ai_summary = serializers.CharField(allow_null=True)
stats = serializers.JSONField(allow_null=True)
created_at = serializers.CharField()
class ReportDetailSerializer(ReportListSerializer):
"""日报详情(主表字段 + 事件列表)"""
events = EventSerializer(many=True)
class ImportantEventSerializer(serializers.Serializer):
"""跨日报重要事件聚合(news_event JOIN news_report"""
report_date = serializers.CharField()
report_type = serializers.CharField()
id = serializers.IntegerField()
section = serializers.CharField()
rank = serializers.IntegerField()
importance = serializers.IntegerField(allow_null=True)
event_type = serializers.CharField(allow_null=True)
title = serializers.CharField()
summary = serializers.CharField(allow_null=True)
sentiment = serializers.CharField(allow_null=True)
source = serializers.CharField(allow_null=True)
url = serializers.CharField(allow_null=True)