后端迁移入口与迁移脚本
This commit is contained in:
@@ -106,13 +106,13 @@ npm test
|
||||
|
||||
## 目录
|
||||
|
||||
- `src/index.js`
|
||||
- `src/index.ts`
|
||||
Express 入口
|
||||
- `src/routes/tencent.js`
|
||||
- `src/routes/tencent.ts`
|
||||
接口路由
|
||||
- `src/services/session.js`
|
||||
- `src/services/session/session.ts`
|
||||
会话编排与浏览器生命周期
|
||||
- `src/services/session-*.js`
|
||||
- `src/services/session/*.ts`
|
||||
登录、兑换、OCR、凭证产物等模块
|
||||
- `subservices/ocr-worker`
|
||||
内嵌 OCR 子服务
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
"scripts": {
|
||||
"browser:install": "playwright install chromium",
|
||||
"browser:install:linux": "playwright install --with-deps chromium",
|
||||
"agiso:auto-delivery:test": "node scripts/test-agiso-auto-delivery.js",
|
||||
"cleanup:dev-data": "node scripts/cleanup-dev-data.js",
|
||||
"seed:dev-data": "node scripts/seed-dev-data.js",
|
||||
"agiso:auto-delivery:test": "tsx scripts/test-agiso-auto-delivery.js",
|
||||
"cleanup:dev-data": "tsx scripts/cleanup-dev-data.js",
|
||||
"seed:dev-data": "tsx scripts/seed-dev-data.js",
|
||||
"build": "tsc -p tsconfig.build.json && rm -rf dist/db/migrations && mkdir -p dist/db && cp -R src/db/migrations dist/db/migrations",
|
||||
"db:migrate": "tsx src/db/migrate.js",
|
||||
"dev": "tsx watch --clear-screen=false --include config src/index.js",
|
||||
"db:migrate": "tsx src/db/migrate.ts",
|
||||
"dev": "tsx watch --clear-screen=false --include config src/index.ts",
|
||||
"test": "node --import tsx --test $(find src -name '*.test.js' -print)",
|
||||
"typecheck": "tsc -p tsconfig.json --noEmit",
|
||||
"start": "node dist/index.js",
|
||||
"start:src": "tsx src/index.js"
|
||||
"start:src": "tsx src/index.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"express": "^5.1.0",
|
||||
|
||||
@@ -378,7 +378,7 @@ async function shutdown(signal) {
|
||||
return
|
||||
}
|
||||
|
||||
await new Promise((resolve) => {
|
||||
await new Promise<void>((resolve) => {
|
||||
server.close((error) => {
|
||||
if (error) {
|
||||
logError('[shutdown]', 'failed to close HTTP server', error)
|
||||
@@ -44,23 +44,23 @@ export function createRequestId(prefix = 'req') {
|
||||
return `${prefix}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`
|
||||
}
|
||||
|
||||
export function logDebug(scope, message, detail) {
|
||||
export function logDebug(scope, message, detail = undefined) {
|
||||
return writeLog('debug', scope, message, detail)
|
||||
}
|
||||
|
||||
export function logInfo(scope, message, detail) {
|
||||
export function logInfo(scope, message, detail = undefined) {
|
||||
return writeLog('info', scope, message, detail)
|
||||
}
|
||||
|
||||
export function logWarn(scope, message, detail) {
|
||||
export function logWarn(scope, message, detail = undefined) {
|
||||
return writeLog('warn', scope, message, detail)
|
||||
}
|
||||
|
||||
export function logError(scope, message, detail) {
|
||||
export function logError(scope, message, detail = undefined) {
|
||||
return writeLog('error', scope, message, detail)
|
||||
}
|
||||
|
||||
export function logWebhook(scope, message, detail, { level = 'info' } = {}) {
|
||||
export function logWebhook(scope, message, detail = undefined, { level = 'info' } = {}) {
|
||||
return writeLog(level, scope, message, detail, { channel: 'webhook' })
|
||||
}
|
||||
|
||||
|
||||
@@ -199,9 +199,9 @@
|
||||
|
||||
1. 新增 `tsconfig.build.json`
|
||||
2. `npm run build` 输出 `dist`,并复制数据库 migration SQL
|
||||
3. `npm run dev` 改为 `tsx watch --clear-screen=false --include config src/index.js`
|
||||
3. `npm run dev` 改为 `tsx watch --clear-screen=false --include config src/index.ts`
|
||||
4. `npm test` 改为 `node --import tsx --test ...`
|
||||
5. `npm run db:migrate` 改为 `tsx src/db/migrate.js`
|
||||
5. `npm run db:migrate` 改为 `tsx src/db/migrate.ts`
|
||||
6. `npm run start` 改为 `node dist/index.js`
|
||||
7. 生产 Dockerfile 改为 builder 阶段编译,runtime 阶段复制 `dist`
|
||||
8. 新增 `tsx` 和 `@types/pg`
|
||||
@@ -863,6 +863,16 @@
|
||||
- `npm run build`
|
||||
- `npm test` 共 139 个用例通过
|
||||
228. `src/routes` 目录下非测试 `.js` 路由文件已全部迁移为 `.ts`
|
||||
229. 后端入口与数据库迁移脚本迁移到 `.ts`:
|
||||
- `src/index.ts`
|
||||
- `src/db/migrate.ts`
|
||||
230. `package.json` 源码运行脚本切到 `.ts` 入口:`dev`、`start:src` 和 `db:migrate`;依赖源码 TS 的开发脚本 `seed:dev-data`、`cleanup:dev-data`、`agiso:auto-delivery:test` 改由 `tsx` 执行,避免 plain node 直接加载源码 TS 失败
|
||||
231. 入口启动、健康检查、核心 bootstrap、browser / OCR 预热、优雅关闭、进程异常记录和 migration CLI 已进入 TS 编译链路;logger 的 detail 参数补齐可省略签名,HTTP server close promise 补齐 `Promise<void>`
|
||||
232. Docker 内验证通过:
|
||||
- `npm run typecheck`
|
||||
- `npm run build`
|
||||
- `npm test` 共 139 个用例通过
|
||||
233. `apps/backend/src` 目录下非测试 `.js` 文件已全部迁移为 `.ts`
|
||||
|
||||
## 下一步建议
|
||||
|
||||
|
||||
Reference in New Issue
Block a user