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 new awards by creating JSON definition files
|
||||||
- Add filename to `loadAwardDefinitions()` file list in awards.service.js
|
- 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)
|
### DLD Award Implementation (COMPLETED)
|
||||||
|
|
||||||
The DLD (Deutschland Diplom) award was recently implemented:
|
The DLD (Deutschland Diplom) award was recently implemented:
|
||||||
@@ -215,15 +229,43 @@ To add a new award:
|
|||||||
### Confirmation Systems
|
### Confirmation Systems
|
||||||
|
|
||||||
- **LoTW (Logbook of The World)**: ARRL's confirmation system
|
- **LoTW (Logbook of The World)**: ARRL's confirmation system
|
||||||
|
- Service: `src/backend/services/lotw.service.js`
|
||||||
- Fields: `lotwQslRstatus`, `lotwQslRdate`
|
- Fields: `lotwQslRstatus`, `lotwQslRdate`
|
||||||
- Used for DXCC, WAS, VUCC, most awards
|
- 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
|
- **DCL (DARC Community Logbook)**: DARC's confirmation system
|
||||||
|
- Service: `src/backend/services/dcl.service.js`
|
||||||
- Fields: `dclQslRstatus`, `dclQslRdate`
|
- Fields: `dclQslRstatus`, `dclQslRdate`
|
||||||
|
- DOK fields: `darcDok` (partner's DOK), `myDarcDok` (user's DOK)
|
||||||
- Required for DLD award
|
- Required for DLD award
|
||||||
- German amateur radio specific
|
- 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
|
### 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
|
- `c982dcd`: feat: implement DLD (Deutschland Diplom) award
|
||||||
- `322ccaf`: docs: add DLD (Deutschland Diplom) award documentation
|
- `322ccaf`: docs: add DLD (Deutschland Diplom) award documentation
|
||||||
|
|||||||
Reference in New Issue
Block a user