Release 2025-05-19
This commit is contained in:
@@ -1,149 +0,0 @@
|
||||
# KYC Not Worker
|
||||
|
||||
A Python worker for processing and analyzing data for the KYC Not project.
|
||||
|
||||
## Features
|
||||
|
||||
- TOS (Terms of Service) text retrieval and analysis
|
||||
- User sentiment analysis from comments
|
||||
- Comment moderation
|
||||
- Service score recalculation
|
||||
- Database trigger maintenance
|
||||
- Scheduled task execution
|
||||
- Database operations for services and comments
|
||||
|
||||
## Installation
|
||||
|
||||
1. Clone the repository
|
||||
2. Sync dependencies with [uv](https://docs.astral.sh/uv/):
|
||||
|
||||
```bash
|
||||
uv sync
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Copy `.env.example` to `.env` and fill in the required values:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
Required environment variables:
|
||||
|
||||
- `DATABASE_URL`: PostgreSQL connection string
|
||||
- `OPENAI_API_KEY`: OpenAI API key for AI tasks
|
||||
- `CRON_TOSREVIEW_TASK`: Cron expression for TOS review task
|
||||
- `CRON_SENTIMENT_TASK`: Cron expression for user sentiment analysis task
|
||||
- `CRON_MODERATION_TASK`: Cron expression for comment moderation task
|
||||
- `CRON_FORCE_TRIGGERS_TASK`: Cron expression for force triggers task
|
||||
- `CRON_SERVICE_SCORE_RECALC_TASK`: Cron expression for service score recalculation task
|
||||
|
||||
## Usage
|
||||
|
||||
### Command Line Interface
|
||||
|
||||
Run tasks directly:
|
||||
|
||||
```bash
|
||||
# Run TOS review task
|
||||
uv run -m pyworker tos [--service-id ID]
|
||||
|
||||
# Run user sentiment analysis task
|
||||
uv run -m pyworker sentiment [--service-id ID]
|
||||
|
||||
# Run comment moderation task
|
||||
uv run -m pyworker moderation [--service-id ID]
|
||||
|
||||
# Run force triggers task
|
||||
uv run -m pyworker force-triggers
|
||||
|
||||
# Run service score recalculation task
|
||||
uv run -m pyworker service-score-recalc [--service-id ID]
|
||||
```
|
||||
|
||||
### Worker Mode
|
||||
|
||||
Run in worker mode to execute tasks on a schedule:
|
||||
|
||||
```bash
|
||||
uv run -m pyworker --worker
|
||||
```
|
||||
|
||||
Tasks will run according to their configured cron schedules.
|
||||
|
||||
## Tasks
|
||||
|
||||
### TOS Review Task
|
||||
|
||||
- Retrieves and analyzes Terms of Service documents
|
||||
- Updates service records with TOS information
|
||||
- Scheduled via `CRON_TOSREVIEW_TASK`
|
||||
|
||||
### User Sentiment Task
|
||||
|
||||
- Analyzes user comments to determine overall sentiment
|
||||
- Updates service records with sentiment analysis
|
||||
- Scheduled via `CRON_SENTIMENT_TASK`
|
||||
|
||||
### Comment Moderation Task
|
||||
|
||||
- Makes a basic first moderation of comments
|
||||
- Flags comments as needed
|
||||
- Adds content if needed
|
||||
- Scheduled via `CRON_MODERATION_TASK`
|
||||
|
||||
### Force Triggers Task
|
||||
|
||||
- Maintains database triggers by forcing them to run under certain conditions
|
||||
- Currently handles updating the "isRecentlyListed" flag for services after 15 days
|
||||
- Scheduled via `CRON_FORCE-TRIGGERS_TASK`
|
||||
|
||||
### Service Score Recalculation Task
|
||||
|
||||
- Recalculates service scores based on attribute changes
|
||||
- Processes jobs from the ServiceScoreRecalculationJob table
|
||||
- Calculates privacy, trust, and overall scores
|
||||
- Scheduled via `CRON_SERVICE-SCORE-RECALC_TASK`
|
||||
|
||||
## Development
|
||||
|
||||
### Project Structure
|
||||
|
||||
```text
|
||||
pyworker/
|
||||
├── pyworker/
|
||||
│ ├── __init__.py
|
||||
│ ├── __main__.py
|
||||
│ ├── cli.py
|
||||
│ ├── config.py
|
||||
│ ├── database.py
|
||||
│ ├── scheduler.py
|
||||
│ ├── tasks/
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── base.py
|
||||
│ │ ├── comment_moderation.py
|
||||
│ │ ├── force_triggers.py
|
||||
│ │ ├── service_score_recalc.py
|
||||
│ │ ├── tos_review.py
|
||||
│ │ └── user_sentiment.py
|
||||
│ └── utils/
|
||||
│ ├── __init__.py
|
||||
│ ├── ai.py
|
||||
│ └── logging.py
|
||||
├── tests/
|
||||
├── setup.py
|
||||
├── requirements.txt
|
||||
└── README.md
|
||||
```
|
||||
|
||||
### Adding New Tasks
|
||||
|
||||
1. Create a new task class in `pyworker/tasks/`
|
||||
2. Implement the `run` method
|
||||
3. Add the task to `pyworker/tasks/__init__.py`
|
||||
4. Update the CLI and scheduler to handle the new task
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user