project summaries addition
This commit is contained in:
@@ -4,6 +4,7 @@ const {getEnv, PORTS, EPISODIC} = require('@nexusai/shared');
|
||||
const { getDB } = require('./db');
|
||||
const { createProject, getProjects, getProject, updateProject, deleteProject } = require('./db/projects');
|
||||
const { createSummary, getSummary, getSummariesBySession, getSummariesByProject, updateSummary, deleteSummary } = require('./db/summaries');
|
||||
const { generateAndStoreProjectSummary } = require('./summarization/project');
|
||||
|
||||
const episodic = require('./episodic');
|
||||
const semantic = require('./semantic');
|
||||
@@ -242,6 +243,36 @@ app.get('/projects', (req, res) => {
|
||||
res.json(getProjects());
|
||||
});
|
||||
|
||||
// Generate (or regenerate) a project overview summary on demand
|
||||
app.post('/projects/:id/summarize', async (req, res) => {
|
||||
const project = getProject(Number(req.params.id));
|
||||
if (!project) return res.status(404).json({ error: 'Project not found' });
|
||||
|
||||
try {
|
||||
const summary = await generateAndStoreProjectSummary(Number(req.params.id));
|
||||
res.status(201).json(summary);
|
||||
} catch (err) {
|
||||
// Distinguish "no data" from actual errors — both are non-500 from the client's perspective
|
||||
if (err.message.includes('No session summaries')) {
|
||||
return res.status(422).json({ error: err.message });
|
||||
}
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
// Get the current project overview summary
|
||||
app.get('/projects/:id/overview', async (req, res) => {
|
||||
const { getProjectOverviewSummary } = require('./db/summaries');
|
||||
const summary = getProjectOverviewSummary(Number(req.params.id));
|
||||
// 200 with null is fine — frontend can handle "no overview yet" gracefully
|
||||
res.json(summary ?? null);
|
||||
});
|
||||
|
||||
// Get summaries for a project
|
||||
app.get('/projects/:id/summaries', (req, res) => {
|
||||
res.json(getSummariesByProject(req.params.id));
|
||||
});
|
||||
|
||||
app.get('/projects/:id', (req, res) => {
|
||||
const project = getProject(req.params.id);
|
||||
if (!project) return res.status(404).json({ error: 'Not found' });
|
||||
@@ -262,6 +293,10 @@ app.delete('/projects/:id', (req, res) => {
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*********************************** */
|
||||
/********** Summary Routes ********** */
|
||||
/*********************************** */
|
||||
@@ -285,11 +320,6 @@ app.get('/sessions/:id/summaries', (req, res) => {
|
||||
res.json(getSummariesBySession(req.params.id));
|
||||
});
|
||||
|
||||
// Get summaries for a project
|
||||
app.get('/projects/:id/summaries', (req, res) => {
|
||||
res.json(getSummariesByProject(req.params.id));
|
||||
});
|
||||
|
||||
// Update a summary (for cumulative updates)
|
||||
app.patch('/summaries/:id', (req, res) => {
|
||||
const summary = getSummary(req.params.id);
|
||||
|
||||
Reference in New Issue
Block a user