Move UML/ directory and Architecture.md from Docs/ to docs/. Rename Architecture.md to UML_ARCHITECTURE.md to avoid collision with existing docs/ARCHITECTURE.md (docs organization file). Update all references in README.md, CONTRIBUTING.md, CLAUDE.md, and the architecture file itself. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
529 lines
11 KiB
HTML
529 lines
11 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>ChangeDetector</title>
|
|
<link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,300italic,400italic,700italic|Source+Code+Pro:300,400,700' rel='stylesheet' type='text/css'>
|
|
<link rel="stylesheet" href="../assets/css/bootstrap.css">
|
|
<link rel="stylesheet" href="../assets/css/jquery.bonsai.css">
|
|
<link rel="stylesheet" href="../assets/css/main.css">
|
|
<link rel="stylesheet" href="../assets/icon-font/icons.css">
|
|
<script type="text/javascript" src="../assets/js/jquery-2.1.0.min.js"></script>
|
|
<script type="text/javascript" src="../assets/js/bootstrap.js"></script>
|
|
<script type="text/javascript" src="../assets/js/jquery.bonsai.js"></script>
|
|
<script type="text/javascript" src="../assets/js/imageMapResizer.min.js"></script>
|
|
|
|
</head>
|
|
<body>
|
|
<div>
|
|
|
|
<!-- Name Title -->
|
|
|
|
<h1>ChangeDetector</h1>
|
|
|
|
<!-- Type and Stereotype -->
|
|
|
|
<section style="margin-top: .5em;">
|
|
<span class="alert alert-info">
|
|
<span class="node-icon staruml-icon icon-UMLClass"></span>
|
|
UMLClass
|
|
</span>
|
|
|
|
</section>
|
|
|
|
<!-- Path -->
|
|
|
|
<section style="margin-top: 10px">
|
|
|
|
|
|
|
|
|
|
<span class="label label-info"><a href='cf9c8b720f3815adeccaf3ef6e48c6c4.html'><span class='node-icon staruml-icon icon-Project'></span>Skill Seekers</a></span>
|
|
|
|
<span>::</span>
|
|
<span class="label label-info"><a href='6a4361334e8b649314ed681b9e6798c3.html'><span class='node-icon staruml-icon icon-UMLModel'></span>skill_seekers</a></span>
|
|
|
|
<span>::</span>
|
|
<span class="label label-info"><a href='8d93060f6d7a7c6803e67fc2ec0f4522.html'><span class='node-icon staruml-icon icon-UMLPackage'></span>Sync</a></span>
|
|
|
|
<span>::</span>
|
|
<span class="label label-info"><a href='ea087b89af05225e59d0a4f985ac8a71.html'><span class='node-icon staruml-icon icon-UMLClass'></span>ChangeDetector</a></span>
|
|
|
|
</section>
|
|
|
|
<!-- Diagram -->
|
|
|
|
|
|
|
|
<!-- Description -->
|
|
|
|
|
|
<section>
|
|
<h3>Description</h3>
|
|
<div>
|
|
|
|
<p>Detects changes in documentation pages. Uses multiple strategies: content hashing (SHA-256), Last-Modified headers, ETag headers, and content diffing.</p>
|
|
|
|
</div>
|
|
</section>
|
|
|
|
|
|
<!-- Specification -->
|
|
|
|
|
|
|
|
<!-- Directed Relationship -->
|
|
|
|
|
|
|
|
<!-- Undirected Relationship -->
|
|
|
|
|
|
|
|
<!-- Classifier -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Interface -->
|
|
|
|
|
|
|
|
<!-- Component -->
|
|
|
|
|
|
|
|
<!-- Node -->
|
|
|
|
|
|
|
|
<!-- Actor -->
|
|
|
|
|
|
|
|
<!-- Use Case -->
|
|
|
|
|
|
|
|
<!-- Template Parameters -->
|
|
|
|
|
|
|
|
<!-- Literals -->
|
|
|
|
|
|
|
|
<!-- Attributes -->
|
|
|
|
|
|
<section>
|
|
<h3>Attributes</h3>
|
|
<table class="table table-striped table-bordered">
|
|
<tr>
|
|
<th>Visibility</th>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>public</td>
|
|
<td><a href="b99e7554ec614098ff9e08f70a26e1ec.html">timeout</a></td>
|
|
<td><span class='label label-info'>none</span> </td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>private</td>
|
|
<td><a href="479340e4434c2b7860404acfd6203ecb.html">test_attr</a></td>
|
|
<td>int </td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>public</td>
|
|
<td><a href="5da945fc607e3afee89bcc9824273db6.html">timeout</a></td>
|
|
<td>int </td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
</table>
|
|
</section>
|
|
|
|
|
|
<!-- Operations -->
|
|
|
|
|
|
<section>
|
|
<h3>Operations</h3>
|
|
<table class="table table-striped table-bordered">
|
|
<tr>
|
|
<th>Visibility</th>
|
|
<th>Name</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>public</td>
|
|
<td><a href="08c6a1e6dfd23011c9f97fc41749fcbf.html">compute_hash()</a></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>public</td>
|
|
<td><a href="872107c655b64222a5fcbbe78191fdab.html">fetch_page()</a></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>public</td>
|
|
<td><a href="6d9b563d0a2ceccbebde91c2d6976d9f.html">check_pages()</a></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>public</td>
|
|
<td><a href="c5a9ab76d63b366866ceeedb57edb125.html">compute_hash(content: str): str()</a></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>public</td>
|
|
<td><a href="652d2134d4b4a3161786510e5274ea98.html">fetch_page(url: str): tuple[str, dict]()</a></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>public</td>
|
|
<td><a href="137ad1783cc7f455239915618dcfbbfb.html">check_page(url: str, old_hash: str, generate_diff: bool, old_content: str): PageChange()</a></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>public</td>
|
|
<td><a href="8d1837a81cf65833c01333219ee1e01e.html">check_pages(urls: list[str], previous_hashes: dict, generate_diffs: bool): ChangeReport()</a></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>public</td>
|
|
<td><a href="e92a84ba4f083924de5481b970693c8f.html">generate_diff(old_content: str, new_content: str): str()</a></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>public</td>
|
|
<td><a href="998c1c3018b16e96777b62320a15130a.html">generate_summary_diff(old_content: str, new_content: str): str()</a></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>public</td>
|
|
<td><a href="7debdfb42a195fb83f2ffd92b85231b1.html">check_header_changes(url: str, old_modified: str, old_etag: str): bool()</a></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>public</td>
|
|
<td><a href="728ba0c9856a59b22a40f8391ecea617.html">batch_check_headers(urls: list[str], previous_metadata: dict): list[str]()</a></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
</table>
|
|
</section>
|
|
|
|
|
|
<!-- Receptions -->
|
|
|
|
|
|
|
|
<!-- Extension Points -->
|
|
|
|
|
|
|
|
<!-- Parameters -->
|
|
|
|
|
|
|
|
<!-- Diagrams -->
|
|
|
|
|
|
|
|
|
|
<!-- Behavior -->
|
|
|
|
|
|
|
|
<!-- Action -->
|
|
|
|
|
|
|
|
<!-- Interaction -->
|
|
|
|
|
|
|
|
<!-- CombinedFragment -->
|
|
|
|
|
|
|
|
<!-- Activity -->
|
|
|
|
|
|
|
|
<!-- State Machine -->
|
|
|
|
|
|
|
|
<!-- State Machine -->
|
|
|
|
|
|
|
|
<!-- State -->
|
|
|
|
|
|
|
|
<!-- Vertex -->
|
|
|
|
|
|
|
|
<!-- Transition -->
|
|
|
|
|
|
|
|
<!-- Data Model (ERD) -->
|
|
|
|
|
|
|
|
<!-- Columns (ERD) -->
|
|
|
|
|
|
|
|
<!-- Related Entities (ERD) -->
|
|
|
|
|
|
|
|
<!-- Data Flows (DFD) -->
|
|
|
|
|
|
|
|
<!-- Flows (Flowchart) -->
|
|
|
|
|
|
|
|
<!-- Properties -->
|
|
|
|
<section>
|
|
<h3>Properties</h3>
|
|
|
|
<table class="table table-striped table-bordered">
|
|
<tr>
|
|
<th width="50%">Name</th>
|
|
<th width="50%">Value</th>
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
<td>name</td>
|
|
<td>ChangeDetector</td>
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
<td>stereotype</td>
|
|
<td><span class='label label-info'>null</span></td>
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
<td>visibility</td>
|
|
<td>public</td>
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
<td>isAbstract</td>
|
|
<td><span class='label label-info'>false</span></td>
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
<td>isFinalSpecialization</td>
|
|
<td><span class='label label-info'>false</span></td>
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
<td>isLeaf</td>
|
|
<td><span class='label label-info'>false</span></td>
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
<tr>
|
|
<td>isActive</td>
|
|
<td><span class='label label-info'>false</span></td>
|
|
</tr>
|
|
|
|
|
|
|
|
</table>
|
|
|
|
</section>
|
|
|
|
<!-- Tags -->
|
|
|
|
|
|
|
|
<!-- Constraints, Dependencies, Dependants -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<section class="element-list">
|
|
<h3>Dependencies</h3>
|
|
<ul class="nav nav-list">
|
|
|
|
<li><a href='33bbdec27a17b8bd242093abf45232c9.html'><span class='node-icon staruml-icon icon-UMLDataType'></span>PageChange</a></li>
|
|
|
|
<li><a href='bd9ab2cd7440ceed6d93de7efc261d6c.html'><span class='node-icon staruml-icon icon-UMLDataType'></span>ChangeReport</a></li>
|
|
|
|
</ul>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
|
|
<section class="element-list">
|
|
<h3>Dependants</h3>
|
|
<ul class="nav nav-list">
|
|
|
|
<li><a href='b981ba669c0e879541c2cf16c5fc41b1.html'><span class='node-icon staruml-icon icon-UMLClass'></span>SyncMonitor</a></li>
|
|
|
|
</ul>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<!-- Relationships -->
|
|
|
|
|
|
|
|
<section class="element-list">
|
|
<h3>Relationships</h3>
|
|
<ul class="nav nav-list">
|
|
|
|
<li><a href='9d83d1b61b8db7d48a9ea552102409af.html'><span class='node-icon staruml-icon icon-UMLDependency'></span>(SyncMonitor→ChangeDetector)</a></li>
|
|
|
|
<li><a href='252337c625b14499b0123e98a2b0f71b.html'><span class='node-icon staruml-icon icon-UMLDependency'></span>(ChangeDetector→PageChange)</a></li>
|
|
|
|
<li><a href='57109a4eea39512ca642b319d20103dd.html'><span class='node-icon staruml-icon icon-UMLDependency'></span>(ChangeDetector→ChangeReport)</a></li>
|
|
|
|
</ul>
|
|
</section>
|
|
|
|
|
|
|
|
<!-- Owned Elements -->
|
|
|
|
|
|
|
|
<section class="element-list">
|
|
<h3>Owned Elements</h3>
|
|
<ul class="nav nav-list">
|
|
|
|
<li><a href='252337c625b14499b0123e98a2b0f71b.html'><span class='node-icon staruml-icon icon-UMLDependency'></span>(ChangeDetector→PageChange)</a></li>
|
|
|
|
<li><a href='57109a4eea39512ca642b319d20103dd.html'><span class='node-icon staruml-icon icon-UMLDependency'></span>(ChangeDetector→ChangeReport)</a></li>
|
|
|
|
</ul>
|
|
</section>
|
|
|
|
|
|
|
|
<!-- Diagrams -->
|
|
|
|
|
|
|
|
<section class="element-list">
|
|
<h3>Diagrams</h3>
|
|
<ul class="nav nav-list">
|
|
|
|
<li><a href='9c77d89de8418c23e57114f6d0c155a3.html'><span class='node-icon staruml-icon icon-UMLClassDiagram'></span>Sync</a></li>
|
|
|
|
</ul>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<!-- Image Map Resizer (https://github.com/davidjbradshaw/image-map-resizer) -->
|
|
<script>
|
|
imageMapResize();
|
|
</script>
|
|
</div>
|
|
</body>
|
|
</html>
|