Files
vault-para/README.md
windyboy f99056a099 feat(tagging-system): Add comprehensive tagging system implementation
- Add tagging system Python package with modular architecture (config, core, impl)
- Create core interfaces for file discovery, content analysis, and tag generation
- Implement content analyzer with language detection and topic extraction
- Implement file discovery engine with directory scanning and filtering
- Implement tag generator with hierarchical tag creation and consolidation
- Add configuration management with example config and validation
- Create comprehensive design and requirements documentation in .kiro/specs
- Add pytest test suite with unit tests for models, interfaces, and config
- Add setup.py, requirements.txt, and pytest.ini for package management
- Add README.md with project overview and usage instructions
- Update workspace.json with new project structure
- Add Excalidraw diagram for system architecture visualization
- Establish foundation for automated vault tagging and metadata management
2025-12-31 08:37:16 +08:00

103 lines
3.0 KiB
Markdown

# Comprehensive Tagging System
A Python-based comprehensive tagging system for Obsidian vaults that analyzes files, generates appropriate tags based on directory structure and content analysis, and updates frontmatter while preserving existing data.
## Features
- **Directory-based tagging**: Automatically generates tags based on vault directory structure
- **Content analysis**: Analyzes file content to extract topics, technologies, and entities
- **Hierarchical tag structures**: Creates organized tag hierarchies using forward slash notation
- **Language detection**: Identifies content language (English, Chinese, mixed, unknown)
- **Frontmatter management**: Updates YAML frontmatter while preserving existing data
- **Batch processing**: Processes entire vaults efficiently with progress tracking
- **Sensitive content detection**: Identifies and appropriately tags sensitive information
- **Obsidian compatibility**: Ensures tags work with Obsidian's features and plugins
## Installation
```bash
pip install -e .
```
## Development Setup
```bash
# Install development dependencies
pip install -e ".[dev,test]"
# Run tests
pytest
# Run tests with coverage
pytest --cov=tagging_system
# Format code
black tagging_system tests
# Lint code
flake8 tagging_system tests
# Type checking
mypy tagging_system
```
## Project Structure
```
tagging_system/
├── __init__.py
├── core/
│ ├── __init__.py
│ ├── models.py # Core data models
│ └── interfaces.py # Abstract interfaces and protocols
├── config/
│ ├── __init__.py
│ └── config.py # Configuration system
└── implementations/ # Concrete implementations (to be added)
tests/
├── __init__.py
├── conftest.py # Pytest configuration and fixtures
├── test_models.py # Tests for core models
├── test_config.py # Tests for configuration system
└── test_interfaces.py # Tests for interfaces and protocols
```
## Configuration
The system uses a flexible configuration system that supports both YAML and JSON formats. Configuration includes:
- Directory mappings for tag generation
- Tag hierarchies and structures
- Sensitive content detection patterns
- File processing settings
- Language detection parameters
## Testing
The project uses pytest with hypothesis for property-based testing:
- **Unit tests**: Test specific functionality and edge cases
- **Property-based tests**: Test universal properties across randomized inputs
- **Integration tests**: Test component interactions
Run tests with:
```bash
pytest # Run all tests
pytest -m unit # Run only unit tests
pytest -m property # Run only property-based tests
pytest -v # Verbose output
```
## Requirements
This implementation addresses the following requirements:
- 1.1, 1.2, 1.3: Standardized frontmatter structure
- Directory-based tag mapping
- Content analysis and classification
- Tag consistency and validation
- Batch processing capabilities
## License
MIT License