feat: отправка формы обращения в SharePoint через api.tnsu.kz
POST /feedback собирает поля формы в столбцы списка (Company резолвится в название по справочнику, Type/Title — по виду обращения) и создаёт элемент через api.tnsu.kz /SharePoint/ListItem. Ошибки авторизации и апстрима логируются в stdout и возвращаются клиенту как 502, чтобы сбой на проде было видно явно. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
import express from 'express';
|
||||
import { config } from './config';
|
||||
import { getAppOnlyToken } from './graphAuth';
|
||||
import { submitFeedback } from './sharepoint';
|
||||
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
|
||||
app.get('/healthz', (_req, res) => {
|
||||
res.status(200).send('ok');
|
||||
@@ -20,6 +22,20 @@ app.get('/diag/token', async (_req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/feedback', async (req, res) => {
|
||||
try {
|
||||
await submitFeedback(req.body);
|
||||
res.status(201).json({ ok: true });
|
||||
} catch (error) {
|
||||
const message = (error as Error).message;
|
||||
// Логируем целиком в stdout прод-контейнера — если отвалится авторизация
|
||||
// (протухший/незарегистрированный сертификат, неверный scope), это должно
|
||||
// быть видно сразу в логах, а не тонуть в одной строке ответа клиенту.
|
||||
console.error('Не удалось отправить обращение в SharePoint:', message);
|
||||
res.status(502).json({ ok: false, error: message });
|
||||
}
|
||||
});
|
||||
|
||||
app.listen(config.port, () => {
|
||||
console.log(`hr-appeals-auth listening on :${config.port}`);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user