import db from '../config/database';
import { AuditService } from './AuditService';
import { AIService } from './AIService';

/**
 * [BIZ_FIN_16] 租户级税务优惠政策自动发现
 * 负责扫描全球各地区的最新税务优惠（如 IOSS 减免、特定类目退税等），并自动提醒租户
 */
export class TaxIncentivesService {
  /**
   * 自动发现税务优惠
   */
  static async discoverIncentives(tenantId: string, countryCode: string, traceId: string): Promise<void> {
    // 1. 获取该地区的最新税务政策 (模拟调用 AI 服务分析全球税法库)
    const policies = await AIService.searchTaxPolicies(countryCode);
    
    for (const policy of policies) {
      // 检查是否已记录
      const existing = await db('cf_tax_incentives')
        .where({ tenant_id: tenantId, country_code: countryCode, policy_name: policy.name })
        .first();

      if (!existing) {
        await db.transaction(async (trx) => {
          const [id] = await trx('cf_tax_incentives').insert({
            tenant_id: tenantId,
            country_code: countryCode,
            policy_name: policy.name,
            description: policy.description,
            estimated_savings: policy.estimatedSavings,
            status: 'DISCOVERED'
          });

          // 审计记录
          await AuditService.log({
            tenant_id: tenantId,
            action: 'TAX_INCENTIVE_DISCOVERED',
            target_type: 'TAX_INCENTIVE',
            target_id: id.toString(),
            trace_id: traceId,
            new_data: JSON.stringify({ policyName: policy.name, estimatedSavings: policy.estimatedSavings }),
            metadata: JSON.stringify({ countryCode })
          });
        });
      }
    }
  }

  /**
   * 获取租户所有已发现的优惠
   */
  static async getIncentives(tenantId: string) {
    return await db('cf_tax_incentives')
      .where({ tenant_id: tenantId })
      .orderBy('estimated_savings', 'desc');
  }
}
