68 lines
1.7 KiB
JavaScript
68 lines
1.7 KiB
JavaScript
/**
|
|
* persona-studio · 开发任务路由
|
|
* POST /api/ps/build/start 触发代码生成
|
|
*/
|
|
const express = require('express');
|
|
const router = express.Router();
|
|
const memoryManager = require('../brain/memory-manager');
|
|
const codeGenerator = require('../brain/code-generator');
|
|
const emailSender = require('../utils/email-sender');
|
|
|
|
// POST /api/ps/build/start
|
|
router.post('/start', async (req, res) => {
|
|
const { dev_id, email, conversation } = req.body || {};
|
|
|
|
if (!dev_id || !/^EXP-\d{3,}$/.test(dev_id)) {
|
|
return res.status(400).json({
|
|
error: true,
|
|
code: 'INVALID_ID',
|
|
message: '无效的开发编号'
|
|
});
|
|
}
|
|
|
|
if (!email) {
|
|
return res.status(400).json({
|
|
error: true,
|
|
code: 'MISSING_EMAIL',
|
|
message: '请提供邮箱地址'
|
|
});
|
|
}
|
|
|
|
// 先立即响应,后台异步处理
|
|
res.json({
|
|
error: false,
|
|
message: '开发任务已接收,完成后将发送到 ' + email,
|
|
status: 'queued'
|
|
});
|
|
|
|
// 异步执行代码生成 + 邮件通知
|
|
(async () => {
|
|
try {
|
|
const result = await codeGenerator.generate({
|
|
dev_id,
|
|
conversation: conversation || [],
|
|
});
|
|
|
|
// 记录项目
|
|
memoryManager.addProject(dev_id, {
|
|
name: result.projectName || 'untitled',
|
|
status: 'completed',
|
|
created_at: new Date().toISOString(),
|
|
files: result.files || []
|
|
});
|
|
|
|
// 发邮件
|
|
await emailSender.sendCompletion({
|
|
to: email,
|
|
dev_id,
|
|
projectName: result.projectName,
|
|
summary: result.summary
|
|
});
|
|
} catch (err) {
|
|
console.error('Build pipeline error:', err.message);
|
|
}
|
|
})();
|
|
});
|
|
|
|
module.exports = router;
|