docs: update CLAUDE.md with DCL parser information
- Add ADIF Parser utility section (src/backend/utils/adif-parser.js) - Add DCL Service section with API integration details - Update Confirmation Systems section with DCL information - Add ADIF Format section explaining field format and DCL-specific fields - Update Recent Commits with DCL parser implementation Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
42
CLAUDE.md
42
CLAUDE.md
@@ -163,6 +163,20 @@ The award system is JSON-driven and located in `award-definitions/` directory. E
|
||||
- Add new awards by creating JSON definition files
|
||||
- Add filename to `loadAwardDefinitions()` file list in awards.service.js
|
||||
|
||||
**ADIF Parser**: `src/backend/utils/adif-parser.js`
|
||||
- `parseADIF(adifData)`: Parse ADIF format into QSO records
|
||||
- `parseDCLResponse(response)`: Parse DCL's JSON response format `{ "adif": "..." }`
|
||||
- `normalizeBand(band)`: Standardize band names (80m, 40m, etc.)
|
||||
- `normalizeMode(mode)`: Standardize mode names (CW, FT8, SSB, etc.)
|
||||
- Used by both LoTW and DCL services for consistency
|
||||
|
||||
**DCL Service**: `src/backend/services/dcl.service.js`
|
||||
- `fetchQSOsFromDCL(dclApiKey, sinceDate)`: Fetch from DCL API
|
||||
- `parseDCLJSONResponse(jsonResponse)`: Parse example/test payloads
|
||||
- `syncQSOs(userId, dclApiKey, sinceDate, jobId)`: Sync QSOs to database
|
||||
- `getLastDCLQSLDate(userId)`: Get last QSL date for incremental sync
|
||||
- Ready for when DCL publishes their API
|
||||
|
||||
### DLD Award Implementation (COMPLETED)
|
||||
|
||||
The DLD (Deutschland Diplom) award was recently implemented:
|
||||
@@ -215,15 +229,43 @@ To add a new award:
|
||||
### Confirmation Systems
|
||||
|
||||
- **LoTW (Logbook of The World)**: ARRL's confirmation system
|
||||
- Service: `src/backend/services/lotw.service.js`
|
||||
- Fields: `lotwQslRstatus`, `lotwQslRdate`
|
||||
- Used for DXCC, WAS, VUCC, most awards
|
||||
- ADIF format with `<EOR>` delimiters
|
||||
- Supports incremental sync by date
|
||||
|
||||
- **DCL (DARC Community Logbook)**: DARC's confirmation system
|
||||
- Service: `src/backend/services/dcl.service.js`
|
||||
- Fields: `dclQslRstatus`, `dclQslRdate`
|
||||
- DOK fields: `darcDok` (partner's DOK), `myDarcDok` (user's DOK)
|
||||
- Required for DLD award
|
||||
- German amateur radio specific
|
||||
- API in development (parser ready)
|
||||
- Response format: JSON with ADIF string in `adif` field
|
||||
- Supports DOK (DARC Ortsverband Kennung) data
|
||||
|
||||
### ADIF Format
|
||||
|
||||
Both LoTW and DCL return data in ADIF (Amateur Data Interchange Format):
|
||||
- Field format: `<FIELD_NAME:length>value`
|
||||
- Record delimiter: `<EOR>` (end of record)
|
||||
- Header ends with: `<EOH>` (end of header)
|
||||
- Example: `<CALL:5>DK0MU<BAND:3>80m<QSO_DATE:8>20250621<EOR>`
|
||||
|
||||
**DCL-specific fields**:
|
||||
- `DCL_QSL_RCVD`: DCL confirmation status (Y/N/?)
|
||||
- `DCL_QSLRDATE`: DCL confirmation date (YYYYMMDD)
|
||||
- `DARC_DOK`: QSO partner's DOK
|
||||
- `MY_DARC_DOK`: User's own DOK
|
||||
- `STATION_CALLSIGN`: User's callsign
|
||||
|
||||
### Recent Commits
|
||||
|
||||
- `8a1a580`: feat: implement DCL ADIF parser and service integration
|
||||
- Add shared ADIF parser utility (src/backend/utils/adif-parser.js)
|
||||
- Implement DCL service with API integration ready
|
||||
- Refactor LoTW service to use shared parser
|
||||
- Tested with example DCL payload (6 QSOs parsed successfully)
|
||||
- `c982dcd`: feat: implement DLD (Deutschland Diplom) award
|
||||
- `322ccaf`: docs: add DLD (Deutschland Diplom) award documentation
|
||||
|
||||
Reference in New Issue
Block a user