# Graph Report - ECDICT  (2026-09-08)

## Corpus Check
- Large corpus: 41 files · ~861,142 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder.

## Summary
- 433 nodes · 702 edges · 28 communities (11 shown, 14 thin omitted)
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 29 edges (avg confidence: 0.85)
- Token cost: 44,117 input · 11,029 output

## Community Hubs (Navigation)
- MDX Library / ReadMDict
- Flask Web Application
- Admin & Design
- StarDict CSV Helper
- Export & Audit Merge
- Linguist Testing
- Dict Utils Resemble
- MDX Extraction
- StarDict CSV Dict
- Dict Utils Treasure
- PureSalsa20 Crypto
- Dict Generator Pipeline
- Lemma Database
- MySQL Dict Backend
- StarDict Core + Query
- Legacy Cleanup Scripts
- Logo & Brand Design
- Dict Encoding & Search
- Sync Checking
- Startup Entry Point
- Audit Full Merge
- Password Cleanup Script
- Auth Removal Script
- Password Reset Script
- Password Rotation Script

## God Nodes (most connected - your core abstractions)
1. `DictCsv` - 30 edges
2. `DictHelper` - 29 edges
3. `StarDict` - 26 edges
4. `DictMySQL` - 25 edges
5. `Treasure` - 22 edges
6. `Generator` - 19 edges
7. `LemmaDB` - 18 edges
8. `MDict` - 17 edges
9. `Resemble` - 15 edges
10. `MDX` - 15 edges

## Surprising Connections (you probably didn't know these)
- `Flask Backend Application` --references--> `Admin SPA Frontend`  [INFERRED]
  app.py → admin.html
- `Admin SPA Frontend` --references--> `YZH Dictionary Admin Logo`  [EXTRACTED]
  admin.html → admin-logo.png
- `Admin SPA Frontend` --semantically_similar_to--> `Visitor SPA Frontend`  [INFERRED] [semantically similar]
  admin.html → index.html
- `English Lemma Database` --semantically_similar_to--> `Word Root List`  [INFERRED] [semantically similar]
  lemma.en.txt → wordroot.txt
- `Word Discrimination Corpus` --semantically_similar_to--> `YouDao Word Discrimination Dictionary`  [INFERRED] [semantically similar]
  resemble.txt → 有道词语辨析.mdx

## Import Cycles
- None detected.

## Hyperedges (group relationships)
- **Word Disambiguation Resources** — resemble_class, resemble_txt, youdao_mdx [INFERRED 0.85]

## Communities (28 total, 14 thin omitted)

### Community 0 - "MDX Library / ReadMDict"
Cohesion: 0.07
Nodes (29): main(), Main. From readmict.py, _decrypt_regcode_by_deviceid(), _decrypt_regcode_by_email(), _fast_decrypt(), MDD, MDict, MDX (+21 more)

### Community 1 - "Flask Web Application"
Cohesion: 0.08
Nodes (43): admin_page(), admin_search(), auth_check(), check_access(), create_entry(), delete_entry(), EntryCreate, EntryUpdate (+35 more)

### Community 2 - "Admin & Design"
Cohesion: 0.11
Nodes (31): Admin Token Authentication, Admin SPA Frontend, YZH Dictionary Admin Logo, Flask Backend Application, British National Corpus (BNC), ECDICT Design Document, DictCsv class, dictutils.py (offline exporters) (+23 more)

### Community 4 - "Export & Audit Merge"
Cohesion: 0.09
Nodes (19): _do_export(), Background CSV export worker., main(), Verify every 有道 MDX entry (skipping MDX-only typos per user policy) is in…, f(), load_mdx(), main(), main() (+11 more)

### Community 5 - "Linguist Testing"
Cohesion: 0.09
Nodes (5): object, test2(), test3(), WordHelper, WordRoot

### Community 6 - "Dict Utils Resemble"
Cohesion: 0.11
Nodes (7): object, Resemble, test1(), test4(), test5(), test6(), open_local()

### Community 7 - "MDX Extraction"
Cohesion: 0.15
Nodes (10): main(), Extract 单词释义比例词典-带词性 MDX to JSON. CLI usage: python3 extract_mdx.py --input…, clean_text(), main(), parse_groups(), Extract 有道词语辨析 MDX to structured JSON. Each MDX entry typically contains 1+…, Split a single MDX entry HTML into its dis-group blocks. Each block has: <div…, clean() (+2 more)

### Community 10 - "PureSalsa20 Crypto"
Cohesion: 0.15
Nodes (11): add32(), object, Do nRounds Salsa20 rounds on a copy of input: list or tuple of 16 ints treated…, Return the bottom 32 bits of w as a Python int. This creates longs temporarily,…, Add two 32-bit words discarding carry above 32nd bit, and without creating a…, Rotate 32-bit word left by nLeft or right by -nLeft without creating a Python…, Copyright by https://github.com/zhansliu/writemdict pureSalsa20.py -- a pure…, rot32() (+3 more)

### Community 12 - "Lemma Database"
Cohesion: 0.15
Nodes (3): LemmaDB, object, test4()

### Community 15 - "Legacy Cleanup Scripts"
Cohesion: 0.24
Nodes (8): init_ecdict_sqlite(), new_inflection(), 去除ECDICT exchange字段中冗余的f:复数， b:比较级， z:最高级。如果与对应标 签内容不同，则予以保留。 Note: ecdict…, convert_dict(), open_dict(), test1(), test2(), test3()

### Community 16 - "Logo & Brand Design"
Cohesion: 0.32
Nodes (8): Index Landing Page, Admin Logo Variant, YZH Dictionary Logo, Decorative Top Emblem, ECDICT / YZH Dictionary Project, Black-on-Transparent Monochrome Design, Symmetric Bottom Flourishes, YZH DICTIONARY Wordmark

## Knowledge Gaps
- **11 isolated node(s):** `cleanup_old_password.sh script`, `remove_dict_auth.sh script`, `reset_dict_password.sh script`, `rotate_dict_password.sh script`, `start_dict.sh script` (+6 more)
  These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 132 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
- **14 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.

## Suggested Questions
_Questions this graph is uniquely positioned to answer:_

- **Why does `f()` connect `Export & Audit Merge` to `MDX Library / ReadMDict`, `Flask Web Application`, `MDX Extraction`?**
  _High betweenness centrality (0.090) - this node is a cross-community bridge._
- **Why does `DictHelper` connect `StarDict CSV Helper` to `Lemma Database`, `Legacy Cleanup Scripts`?**
  _High betweenness centrality (0.047) - this node is a cross-community bridge._
- **Why does `DictCsv` connect `StarDict CSV Dict` to `StarDict CSV Helper`, `Lemma Database`, `Legacy Cleanup Scripts`, `Dict Encoding & Search`, `Dict Serialization`, `Dict Count Methods`?**
  _High betweenness centrality (0.039) - this node is a cross-community bridge._
- **What connects `cleanup_old_password.sh script`, `remove_dict_auth.sh script`, `reset_dict_password.sh script` to the rest of the system?**
  _11 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `MDX Library / ReadMDict` be split into smaller, more focused modules?**
  _Cohesion score 0.06821480406386067 - nodes in this community are weakly interconnected._
- **Should `Flask Web Application` be split into smaller, more focused modules?**
  _Cohesion score 0.080338266384778 - nodes in this community are weakly interconnected._
- **Should `Admin & Design` be split into smaller, more focused modules?**
  _Cohesion score 0.11182795698924732 - nodes in this community are weakly interconnected._