# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Repository Overview This is a monorepo composed of four subprojects, each maintained as its own git repository under `gitea.iconsz.com/iCON/`: | Subproject | Tech stack | Repository | |------------|-----------|------------| | **AML_Backend** | ASP.NET Core backend using the ABP (ASP.NET Boilerplate) framework | `https://gitea.iconsz.com/iCON/AML_Backend.git` | | **AML_Frontend** | Angular 11 frontend using the ABP Angular framework | `https://gitea.iconsz.com/iCON/AML_Frontend.git` | | **justsolutionsWeb** | Angular 16 web app (`justsolutions-web` v1.2.0, Angular CLI 16.2.14) | `https://gitea.iconsz.com/iCON/justsolutionsWeb.git` | | **justsolutionsWebV2** | Node.js + Express hosted static site (`justsolutions-web` v2.0.0); supports one-click API switching across `test`/`dev`/`stag`/`prod` (default `test` uses a local mock) | `https://gitea.iconsz.com/iCON/justsolutionsWebV2.git` | The sections below focus on the two primary applications, **AML_Backend** and **AML_Frontend**. ## Build Commands ### Frontend (AML_Frontend) ```bash cd AML_Frontend npm install --legacy-peer-deps # Install dependencies npm start # Start dev server with --open npm run build:dev # Build for development npm run build:prod # Build for production npm run build:prod2 # Build for production2 (alternative env) npm test # Run unit tests npm run lint # Run linter npm run e2e # Run e2e tests ``` ### Backend (AML_Backend) ```bash # Build with dotnet CLI dotnet build iCON.Abp.AMLSolution.sln # Run migrations (Visual Studio Package Manager Console) # 1. Set EntityFrameworkCore.DbMigrations as startup project # 2. Set default project to: src\EntityFrameworkCore.DbMigrations # 3. Run: Add-Migration ``` ## Architecture ### Backend Architecture (ABP Framework) **Solution Structure**: `AML_Backend/iCON.Abp.AMLSolution.sln` **Core Modules**: - `modules/iCON.Abp.AML/` - Main AML (Anti-Money Laundering) module with: - Application.Contracts - Service interfaces and DTOs - Application - Service implementations - Domain - Entities, domain logic - Domain.Shared - Shared enums, constants - EntityFrameworkCore - Repositories, DbContext - HttpApi - API controllers **Key Services in iCON.Abp.AML**: - `DetectionService` - AML detection logic - `CRCheckerService` - Compliance checking - `ConsumerPortalService` - Consumer-facing portal operations - `CorporationService` / `IndividualService` - Entity management - `DataCollectService` - Data collection pipeline - `STRService` - Suspicious Transaction Reporting - `ReportService` - Report generation **Host Projects**: - `src/iCON.Abp.FX.HttpApi.Host` - Main API host (Program.cs entry point) - `src/iCON.Abp.FX.Web.Public` - Public web portal - `src/iCON.Abp.FX.DbMigrator` - Database migration runner **Infrastructure Projects**: - `infrastructure/iCON.Core.Infrastructure.*` - Shared infrastructure utilities ### Frontend Architecture (Angular 11 + ABP) **Main Application** (`AML_Frontend/src/app/`): - `app.module.ts` - Root module with ABP configuration - Feature modules under `modules/`: - `aml-query/`, `agent/`, `configuration/`, `document/`, `form/`, `home/`, `investigate-setting/`, `llm/`, `log/`, `operator/`, `plan/`, `realtime-screening/`, `report/`, `risk-report/`, `screen-report/`, `stats/`, `str/`, `tenant-info/`, `transaction-report/`, `white-list/` **Shared Components** (`src/app/shared/`): - `shared.module.ts` - Shared module exports **Viewer Components** (`src/app/components/components-viewer/`): - `viewer-account-select/`, `viewer-account-form/`, `viewer-confirm-status/`, `viewer-customer-info/`, `viewer-print-list/`, `viewer-scan-modal/`, `viewer-upload-modal/` **External Module Dependencies**: - `@volo/abp.ng.*` - ABP Angular modules (account, identity, saas, audit-logging, language-management, etc.) - `@abp/ng.*` - ABP Angular core modules - `ng-zorro-antd` - UI component library - `primeng` - PrimeNG components - `@ngxs/store` - State management - `ngx-echarts` - Charting - `@syncfusion/ej2-angular-*` - Syncfusion components **Build Configuration**: - Angular 11 with `angular.json` defining build targets - Multiple environment configurations (environment.ts, environment.dev.ts, environment.prod.ts, environment.prod2.ts) - Uses SCSS for styling, HashLocationStrategy for routing ## Database Migrations Migrations use Entity Framework Core. To create a migration: 1. Set `EntityFrameworkCore.DbMigrations` as the startup project in Visual Studio 2. Open Package Manager Console, set default project to `src\EntityFrameworkCore.DbMigrations` 3. Run `Add-Migration ` 4. Migrations apply automatically on next run ## Notes - The backend uses ABP's modular architecture - each module (AML, AMLPortal, Basic, MediaStore) follows the same layer pattern - Frontend proxies API calls through the Angular dev server configuration - Both frontend and backend share the same solution but are in separate directories