'use strict'; const assert = require('assert'); const fs = require('fs'); const os = require('os'); const path = require('path'); const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'account-refund-status-')); const Config = require('../src/core/config'); Config.DATA_DIR = tempDir; Config.DB_PATH = path.join(tempDir, 'accounts.db'); const database = require('../src/core/database'); try { database.initDB(); const columns = database.getDb().pragma('table_info(accounts)').map(row => row.name); assert(columns.includes('account_refund_status'), '账号表应包含 account_refund_status'); assert(columns.includes('refund_process_status'), '账号表应包含独立的 refund_process_status'); database.upsertAccount({ email: 'default@example.com' }); assert.strictEqual( database.getAccount('default@example.com').account_refund_status, '无状态', '新账号退款状态应默认为无状态', ); assert.strictEqual( database.getAccount('default@example.com').refund_process_status, '未发起', '新账号退款流程状态应默认为未发起', ); assert.strictEqual(database.updateAccountRefundProcessStatus('default@example.com', '已发起'), true); assert.strictEqual(database.getAccount('default@example.com').refund_process_status, '已发起'); assert.strictEqual(database.updateAccountRefundProcessStatus('default@example.com', '发起失败'), true); assert.strictEqual(database.getAccount('default@example.com').refund_process_status, '发起失败'); database.upsertAccount({ email: 'refunded@example.com', account_refund_status: '已退款' }); assert.strictEqual(database.getAccount('refunded@example.com').account_refund_status, '已退款'); database.upsertAccount({ email: 'refunded@example.com', account_refund_status: '' }); assert.strictEqual( database.getAccount('refunded@example.com').account_refund_status, '无状态', '空退款状态应恢复默认值', ); assert.strictEqual(database.updateAccountRefundStatus('refunded@example.com', '未操作'), true); assert.strictEqual( database.getAccount('refunded@example.com').account_refund_status, '无状态', '未操作应统一保存为无状态', ); assert.strictEqual(database.updateAccountRefundStatus('refunded@example.com', '已申请退款'), true); assert.strictEqual(database.getAccount('refunded@example.com').account_refund_status, '已申请退款'); const staged = database.stageAccounts( ['refunded@example.com'], '退款状态导出', ['email', 'account_refund_status'], ); const stagedDetail = database.getStagingBatch(staged.batchId); assert.deepStrictEqual( JSON.parse(stagedDetail.batch.selected_fields), ['email', 'account_refund_status'], '暂存箱导出应保留账号退款字段', ); const html = fs.readFileSync(path.join(__dirname, '..', 'public', 'index.html'), 'utf8'); const customerColumn = html.indexOf('