Merge Profile0928 asset analysis and permission previews into main
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
shishengliang
2026-09-28 12:34:01 +08:00
74 changed files with 3922 additions and 545 deletions
+9 -2
View File
@@ -33,6 +33,13 @@ function currentUser(c: { get?: (k: string) => unknown }): AuthUser | undefined
export function registerFeedbackRoutes(app: Hono, deps: FeedbackDependencies): void {
const { db, ensureTable } = deps;
app.onError((error, c) => {
if (currentUser(c)?.preview && ['ER_NO_SUCH_TABLE', 'ER_BAD_FIELD_ERROR'].includes((error as { code?: string }).code || ''))
return c.json({ message: '反馈存储尚未就绪,权限预览不会初始化或更新表结构,请联系管理员。', code: 'PREVIEW_FEEDBACK_STORAGE_UNAVAILABLE' }, 503);
console.error(error);
return c.text('Internal Server Error', 500);
});
const uploadImage = deps.uploadImage ?? uploadFeedbackImage;
// POST /api/feedback/submit — 提交反馈
@@ -98,7 +105,7 @@ export function registerFeedbackRoutes(app: Hono, deps: FeedbackDependencies): v
// GET /api/feedback/mine — 当前用户的反馈历史
app.get('/mine', async (c) => {
await ensureTable();
if (!currentUser(c)?.preview) await ensureTable();
const user = currentUser(c);
if (!user?.userId) return c.json({ items: [] });
return c.json({ items: await listFeedbackForUser(db, user.userId) });
@@ -106,7 +113,7 @@ export function registerFeedbackRoutes(app: Hono, deps: FeedbackDependencies): v
// GET /api/feedback/list — 管理列表(仅 BI-ADMIN-FEEDBACK / 全量权限)
app.get('/list', async (c) => {
await ensureTable();
if (!currentUser(c)?.preview) await ensureTable();
const user = currentUser(c);
if (!canManageFeedback(user?.roles)) {
return c.json({ ok: false, message: '无权限' }, 403);