feat: 全量功能模块开发与集成测试修复

- 新增后端模块:Alert、APIAsset、Compliance、Lineage、Masking、Risk、SchemaChange、Unstructured、Watermark
- 新增前端模块页面与API接口
- 新增Alembic迁移脚本(002-014)覆盖全量业务表
- 新增测试数据生成脚本与集成测试脚本
- 修复metadata模型JSON类型导入缺失导致启动失败的问题
- 修复前端Alert/APIAsset页面request模块路径错误
- 更新docker-compose与开发计划文档
This commit is contained in:
hiderfong
2026-04-25 08:51:38 +08:00
parent 8b2bc84399
commit 6d70520e79
110 changed files with 6125 additions and 87 deletions
+44
View File
@@ -0,0 +1,44 @@
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: 'new', args: ['--no-sandbox', '--disable-setuid-sandbox'] });
const page = await browser.newPage();
await page.setViewport({ width: 1920, height: 1080 });
const BASE = 'http://localhost:5173';
const outDir = '/Users/nathan/Work/DataPointer/prop-data-guard/screenshots';
// 1. Login page
console.log('Capturing login...');
await page.goto(`${BASE}/login`, { waitUntil: 'networkidle2' });
await new Promise(r => setTimeout(r, 1000));
await page.screenshot({ path: `${outDir}/01_login.png`, fullPage: false });
// Login
await page.type('input[placeholder="用户名"]', 'admin');
await page.type('input[type="password"]', 'admin123');
await page.click('.login-btn');
await page.waitForNavigation({ waitUntil: 'networkidle2' });
await new Promise(r => setTimeout(r, 2000));
// Helper to capture a page
async function capture(path, filename, waitMs = 3000) {
console.log(`Capturing ${path}...`);
await page.goto(`${BASE}${path}`, { waitUntil: 'networkidle2' });
await new Promise(r => setTimeout(r, waitMs));
await page.screenshot({ path: `${outDir}/${filename}`, fullPage: false });
}
await capture('/dashboard', '02_dashboard.png');
await capture('/datasource', '03_datasource.png');
await capture('/metadata', '04_metadata.png');
await capture('/category', '05_category.png');
await capture('/project', '06_project.png');
await capture('/task', '07_task.png');
await capture('/classification', '08_classification.png');
await capture('/report', '09_report.png');
await capture('/system', '10_system.png');
await browser.close();
console.log('All screenshots captured!');
})();