fix: print response to understand email delivery

This commit is contained in:
Harshith Mullapudi 2025-09-01 19:43:21 +05:30
parent de94f67f7b
commit 0b88a2cd49
5 changed files with 85 additions and 6 deletions

View File

@ -23,6 +23,7 @@ interface EpisodeFact {
interface EpisodeFactsResponse {
facts: EpisodeFact[];
invalidFacts: EpisodeFact[];
}
export function LogDetails({
@ -33,6 +34,7 @@ export function LogDetails({
log,
}: LogDetailsProps) {
const [facts, setFacts] = useState<any[]>([]);
const [invalidFacts, setInvalidFacts] = useState<any[]>([]);
const [factsLoading, setFactsLoading] = useState(false);
const fetcher = useFetcher<EpisodeFactsResponse>();
@ -50,6 +52,7 @@ export function LogDetails({
setFactsLoading(false);
const response = fetcher.data;
setFacts(response.facts);
setInvalidFacts(response.invalidFacts);
}
}, [fetcher.data, fetcher.state]);
@ -122,6 +125,33 @@ export function LogDetails({
<span>
Valid: {new Date(fact.validAt).toLocaleString()}
</span>
{fact.invalidAt && (
<span>
Invalid:{" "}
{new Date(fact.invalidAt).toLocaleString()}
</span>
)}
{Object.keys(fact.attributes).length > 0 && (
<Badge variant="secondary" className="text-xs">
{Object.keys(fact.attributes).length} attributes
</Badge>
)}
</div>
</div>
))}
{invalidFacts.map((fact) => (
<div
key={fact.uuid}
className="bg-grayAlpha-100 rounded-md p-3"
>
<p className="mb-1 text-sm">{fact.fact}</p>
<div className="text-muted-foreground flex items-center gap-2 text-xs">
{fact.invalidAt && (
<span>
Invalid:{" "}
{new Date(fact.invalidAt).toLocaleString()}
</span>
)}
{Object.keys(fact.attributes).length > 0 && (
<Badge variant="secondary" className="text-xs">
{Object.keys(fact.attributes).length} attributes

View File

@ -48,9 +48,10 @@ export async function createWorkspace(
});
try {
await sendEmail({ email: "welcome", to: user.email });
const response = await sendEmail({ email: "welcome", to: user.email });
logger.info(`${JSON.stringify(response)}`);
} catch (e) {
logger.error("Error sending email");
logger.error(`Error sending email: ${e}`);
}
return workspace;

View File

@ -86,7 +86,9 @@ export async function scheduleEmail(
export async function sendEmail(data: DeliverEmail) {
try {
return client.send(data);
const response = client.send(data);
return response;
} catch (e) {
logger.error(`Error: ${e}`);
}

View File

@ -1,4 +1,7 @@
import { getEpisodeStatements } from "~/services/graphModels/episode";
import {
getEpisodeStatements,
getStatementsInvalidatedByEpisode,
} from "~/services/graphModels/episode";
export async function getEpisodeFacts(episodeUuid: string, userId: string) {
try {
@ -7,13 +10,27 @@ export async function getEpisodeFacts(episodeUuid: string, userId: string) {
userId,
});
const invalidFacts = await getStatementsInvalidatedByEpisode({
episodeUuid,
userId,
});
return {
success: true,
facts: facts.map(fact => ({
facts: facts.map((fact) => ({
uuid: fact.uuid,
fact: fact.fact,
createdAt: fact.createdAt.toISOString(),
validAt: fact.validAt.toISOString(),
invalidAt: fact.invalidAt ? fact.invalidAt.toISOString() : null,
attributes: fact.attributes,
})),
invalidFacts: invalidFacts.map((fact) => ({
uuid: fact.uuid,
fact: fact.fact,
createdAt: fact.createdAt.toISOString(),
validAt: fact.validAt.toISOString(),
invalidAt: fact.invalidAt ? fact.invalidAt.toISOString() : null,
attributes: fact.attributes,
})),
};

View File

@ -315,6 +315,35 @@ export async function getEpisodeStatements(params: {
userId: params.userId,
});
return result.map((record) => {
const stmt = record.get("stmt").properties;
return {
uuid: stmt.uuid,
fact: stmt.fact,
factEmbedding: stmt.factEmbedding,
createdAt: new Date(stmt.createdAt),
validAt: new Date(stmt.validAt),
invalidAt: stmt.invalidAt ? new Date(stmt.invalidAt) : null,
attributes: stmt.attributesJson ? JSON.parse(stmt.attributesJson) : {},
userId: stmt.userId,
};
});
}
export async function getStatementsInvalidatedByEpisode(params: {
episodeUuid: string;
userId: string;
}) {
const query = `
MATCH (stmt:Statement {invalidatedBy: $episodeUuid})
RETURN stmt
`;
const result = await runQuery(query, {
episodeUuid: params.episodeUuid,
});
return result.map((record) => {
const stmt = record.get("stmt").properties;
return {