update sync for executive dashboard ai insight
This commit is contained in:
1 parent
3fdd9b936f
commit
3f5db48b16
2 files changed
+19
-8
No files matched your search
@@ -231,9 +231,10 @@ def build_ops_export(
|
|||||||
if cycle is not None:
|
if cycle is not None:
|
||||||
series_filter["cycle_id"] = cycle.pk
|
series_filter["cycle_id"] = cycle.pk
|
||||||
|
|
||||||
def series(model, serializer_class, order_fields=("date", "pk")):
|
def series(model, serializer_class, order_fields=("date", "pk"), override_filter=None):
|
||||||
|
fltr = override_filter if override_filter is not None else series_filter
|
||||||
qs = (
|
qs = (
|
||||||
model.objects.filter(**series_filter)
|
model.objects.filter(**fltr)
|
||||||
.select_related("cycle", "cycle__kandang")
|
.select_related("cycle", "cycle__kandang")
|
||||||
.order_by(*order_fields)
|
.order_by(*order_fields)
|
||||||
)
|
)
|
||||||
@@ -241,6 +242,12 @@ def build_ops_export(
|
|||||||
qs, serializer_class, page=page, page_size=page_size, site_id=site.pk
|
qs, serializer_class, page=page, page_size=page_size, site_id=site.pk
|
||||||
)
|
)
|
||||||
|
|
||||||
|
ai_insight_filter = (
|
||||||
|
{"cycle_id": cycle.pk}
|
||||||
|
if cycle is not None
|
||||||
|
else {"cycle__kandang__site_id": site.pk}
|
||||||
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"exported_at": timezone.now().isoformat(),
|
"exported_at": timezone.now().isoformat(),
|
||||||
"from": date_from.isoformat(),
|
"from": date_from.isoformat(),
|
||||||
@@ -256,7 +263,9 @@ def build_ops_export(
|
|||||||
"feed_sacks": series(FeedSacks, FeedSacksSerializer),
|
"feed_sacks": series(FeedSacks, FeedSacksSerializer),
|
||||||
"chicken_countings": series(ChickenCounting, ChickenCountingSerializer),
|
"chicken_countings": series(ChickenCounting, ChickenCountingSerializer),
|
||||||
"chicken_weights": series(ChickenWeight, ChickenWeightSerializer),
|
"chicken_weights": series(ChickenWeight, ChickenWeightSerializer),
|
||||||
"ai_insights": series(AIInsight, AIInsightSerializer),
|
"ai_insights": series(
|
||||||
|
AIInsight, AIInsightSerializer, override_filter=ai_insight_filter
|
||||||
|
),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -603,13 +603,15 @@ export const PageAiInsight: React.FC<PageAiInsightProps> = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
const text = apiResult.insight_text ?? '';
|
const text = apiResult.insight_text ?? '';
|
||||||
const parsed =
|
let parsed: { summary: string; insight: string } | null = null;
|
||||||
apiResult.summary || apiResult.insight
|
if (apiResult.summary || apiResult.insight) {
|
||||||
? {
|
parsed = {
|
||||||
summary: apiResult.summary || '',
|
summary: apiResult.summary || '',
|
||||||
insight: apiResult.insight || '',
|
insight: apiResult.insight || apiResult.insight_text || '',
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
parsed = parseAiResult(text);
|
||||||
}
|
}
|
||||||
: parseAiResult(text);
|
|
||||||
|
|
||||||
if (!parsed || (!parsed.summary && !parsed.insight)) {
|
if (!parsed || (!parsed.summary && !parsed.insight)) {
|
||||||
throw new Error('Respons AI tidak dapat diproses.');
|
throw new Error('Respons AI tidak dapat diproses.');
|
||||||
|
|||||||
Reference in new issue
Block a user