1302 lines
30 KiB
Markdown
1302 lines
30 KiB
Markdown
# GUI Planning Document
|
|
|
|
Comprehensive mapping of all CLI commands, scripts, and their parameters to guide front-end GUI development.
|
|
|
|
## Main Workflows
|
|
|
|
### 1. Project Creation Workflow
|
|
- Ingest CORA file → Create project → Create job file → Generate content → Deploy
|
|
|
|
### 2. Site Management Workflow
|
|
- Discover/Provision sites → Sync sites → Manage domains → Deploy content
|
|
|
|
### 3. Content Generation Workflow
|
|
- Create/Edit job file → Generate batch → Verify → Deploy → Export links
|
|
|
|
### 4. Maintenance Workflow
|
|
- Update index pages → Add robots.txt → Verify deployments → Check status
|
|
|
|
---
|
|
|
|
## CLI Commands Reference
|
|
|
|
### System Commands
|
|
|
|
#### `config`
|
|
Show current configuration
|
|
|
|
**Parameters:** None
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py config
|
|
```
|
|
|
|
---
|
|
|
|
#### `health`
|
|
Check system health
|
|
|
|
**Parameters:** None
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py health
|
|
```
|
|
|
|
---
|
|
|
|
#### `models`
|
|
List available AI models
|
|
|
|
**Parameters:** None
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py models
|
|
```
|
|
|
|
---
|
|
|
|
### User Management
|
|
|
|
#### `add-user`
|
|
Create a new user (requires admin authentication)
|
|
|
|
**Parameters:**
|
|
- `--username` (required) - Username for the new user
|
|
- `--password` (required) - Password for the new user
|
|
- `--role` (required) - Role: "Admin" or "User"
|
|
- `--admin-user` (optional) - Admin username for authentication
|
|
- `--admin-password` (optional) - Admin password for authentication
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py add-user --username newuser --password pass123 --role Admin
|
|
```
|
|
|
|
---
|
|
|
|
#### `delete-user`
|
|
Delete a user by username (requires admin authentication)
|
|
|
|
**Parameters:**
|
|
- `--username` (required) - Username to delete
|
|
- `--admin-user` (optional) - Admin username for authentication
|
|
- `--admin-password` (optional) - Admin password for authentication
|
|
- `--yes` (flag) - Skip confirmation prompt
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py delete-user --username olduser --yes
|
|
```
|
|
|
|
---
|
|
|
|
#### `list-users`
|
|
List all users (requires admin authentication)
|
|
|
|
**Parameters:**
|
|
- `--admin-user` (optional) - Admin username for authentication
|
|
- `--admin-password` (optional) - Admin password for authentication
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py list-users
|
|
```
|
|
|
|
---
|
|
|
|
### Site Management
|
|
|
|
#### `provision-site`
|
|
Provision a new site with Storage Zone and Pull Zone (requires admin)
|
|
|
|
**Parameters:**
|
|
- `--name` (required) - Site name
|
|
- `--domain` (required) - Custom domain (FQDN, e.g., www.example.com)
|
|
- `--storage-name` (required) - Storage Zone name (must be globally unique)
|
|
- `--region` (required) - Storage region: "DE", "NY", "LA", "SG", "SYD"
|
|
- `--admin-user` (optional) - Admin username for authentication
|
|
- `--admin-password` (optional) - Admin password for authentication
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py provision-site --name "My Site" --domain www.example.com --storage-name mysite-storage --region NY
|
|
```
|
|
|
|
---
|
|
|
|
#### `attach-domain`
|
|
Attach a domain to an existing Storage Zone (requires admin)
|
|
|
|
**Parameters:**
|
|
- `--name` (required) - Site name
|
|
- `--domain` (required) - Custom domain (FQDN, e.g., www.example.com)
|
|
- `--storage-name` (required) - Existing Storage Zone name
|
|
- `--admin-user` (optional) - Admin username for authentication
|
|
- `--admin-password` (optional) - Admin password for authentication
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py attach-domain --name "New Site" --domain new.example.com --storage-name existing-storage
|
|
```
|
|
|
|
---
|
|
|
|
#### `list-sites`
|
|
List all site deployments (requires admin)
|
|
|
|
**Parameters:**
|
|
- `--admin-user` (optional) - Admin username for authentication
|
|
- `--admin-password` (optional) - Admin password for authentication
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py list-sites
|
|
```
|
|
|
|
---
|
|
|
|
#### `get-site`
|
|
Get detailed information about a site deployment (requires admin)
|
|
|
|
**Parameters:**
|
|
- `--domain` (required) - Custom domain to lookup
|
|
- `--admin-user` (optional) - Admin username for authentication
|
|
- `--admin-password` (optional) - Admin password for authentication
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py get-site --domain www.example.com
|
|
```
|
|
|
|
---
|
|
|
|
#### `remove-site`
|
|
Remove a site deployment record (requires admin)
|
|
|
|
**Parameters:**
|
|
- `--domain` (required) - Custom domain to remove
|
|
- `--admin-user` (optional) - Admin username for authentication
|
|
- `--admin-password` (optional) - Admin password for authentication
|
|
- `--yes` (flag) - Skip confirmation prompt
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py remove-site --domain www.example.com --yes
|
|
```
|
|
|
|
---
|
|
|
|
#### `sync-sites`
|
|
Sync existing bunny.net sites with custom domains to database (requires admin)
|
|
|
|
**Parameters:**
|
|
- `--admin-user` (optional) - Admin username for authentication
|
|
- `--admin-password` (optional) - Admin password for authentication
|
|
- `--dry-run` (flag) - Show what would be imported without making changes
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py sync-sites --dry-run
|
|
```
|
|
|
|
---
|
|
|
|
#### `discover-s3-buckets`
|
|
Discover and register AWS S3 buckets as site deployments
|
|
|
|
**Parameters:** None (runs the discovery script)
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py discover-s3-buckets
|
|
```
|
|
|
|
---
|
|
|
|
### Project Management
|
|
|
|
#### `ingest-cora`
|
|
Ingest a CORA .xlsx report and create a new project
|
|
|
|
**Parameters:**
|
|
- `--file` / `-f` (required) - Path to CORA .xlsx file
|
|
- `--name` / `-n` (required) - Project name
|
|
- `--money-site-url` / `-m` (optional) - Money site URL (e.g., https://example.com)
|
|
- `--custom-anchors` / `-a` (optional) - Comma-separated list of custom anchor text
|
|
- `--tier1-branded-ratio` (optional) - Ratio of branded anchor text for tier1 (default: 0.75). When specified, prompts for branded anchor text and configures tier1 job with explicit anchor text terms achieving the specified ratio.
|
|
- `--username` / `-u` (optional) - Username for authentication
|
|
- `--password` / `-p` (optional) - Password for authentication
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py ingest-cora --file report.xlsx --name "My Project" --money-site-url https://example.com
|
|
```
|
|
|
|
---
|
|
|
|
#### `ingest-simple`
|
|
Ingest a simple spreadsheet and create a new project
|
|
|
|
**Expected spreadsheet format:**
|
|
- First row: Headers (main_keyword, project_name, related_searches, entities)
|
|
- Second row: Data values
|
|
|
|
**Required columns:** main_keyword, project_name, related_searches, entities
|
|
|
|
**Optional columns:** word_count (default: 1500), term_frequency (default: 3)
|
|
|
|
**Parameters:**
|
|
- `--file` / `-f` (required) - Path to simple .xlsx spreadsheet file
|
|
- `--name` / `-n` (optional) - Project name (overrides project_name from spreadsheet)
|
|
- `--money-site-url` / `-m` (optional) - Money site URL (e.g., https://example.com)
|
|
- `--username` / `-u` (optional) - Username for authentication
|
|
- `--password` / `-p` (optional) - Password for authentication
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py ingest-simple --file simple.xlsx
|
|
```
|
|
|
|
---
|
|
|
|
#### `list-projects`
|
|
List all projects for the authenticated user
|
|
|
|
**Parameters:**
|
|
- `--username` / `-u` (optional) - Username for authentication
|
|
- `--password` / `-p` (optional) - Password for authentication
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py list-projects
|
|
```
|
|
|
|
---
|
|
|
|
#### `create-job`
|
|
Create a job file from an existing project ID
|
|
|
|
**Parameters:**
|
|
- `--project-id` / `-p` (required) - Project ID to create job file for
|
|
- `--deployment-targets` / `-d` (multiple, optional) - Deployment target hostnames (can specify multiple times)
|
|
- `--tier1-count` (optional, default: 10) - Number of tier1 articles
|
|
- `--tier2-count` (optional, default: 30) - Number of tier2 articles
|
|
- `--output` / `-o` (optional) - Output file path (default: jobs/{project_name}.json)
|
|
- `--username` / `-u` (optional) - Username for authentication
|
|
- `--password` / `-pwd` (optional) - Password for authentication
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py create-job --project-id 1 --tier1-count 15 --tier2-count 50 --deployment-targets www.site1.com --deployment-targets www.site2.com
|
|
```
|
|
|
|
---
|
|
|
|
### Content Generation
|
|
|
|
#### `generate-batch`
|
|
Generate content batch from job file
|
|
|
|
**Parameters:**
|
|
- `--job-file` / `-j` (required) - Path to job JSON file
|
|
- `--username` / `-u` (optional) - Username for authentication
|
|
- `--password` / `-p` (optional) - Password for authentication
|
|
- `--debug` (flag) - Save AI responses to debug_output/
|
|
- `--continue-on-error` (flag) - Continue processing if article generation fails
|
|
- `--model` / `-m` (optional, default: "gpt-4o-mini") - AI model to use (gpt-4o-mini, x-ai/grok-4-fast)
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py generate-batch --job-file jobs/my-project.json --debug --continue-on-error
|
|
```
|
|
|
|
---
|
|
|
|
### Deployment
|
|
|
|
#### `deploy-batch`
|
|
Deploy all content in a batch to cloud storage
|
|
|
|
**Parameters:**
|
|
- `--batch-id` / `-b` (required) - Project/batch ID to deploy
|
|
- `--username` / `-u` (optional) - Username for authentication
|
|
- `--password` / `-p` (optional) - Password for authentication
|
|
- `--continue-on-error` (flag, default: True) - Continue if file fails
|
|
- `--dry-run` (flag) - Preview what would be deployed
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py deploy-batch --batch-id 1 --dry-run
|
|
```
|
|
|
|
---
|
|
|
|
#### `verify-deployment`
|
|
Verify deployed URLs return 200 OK status
|
|
|
|
**Parameters:**
|
|
- `--batch-id` / `-b` (required) - Project/batch ID to verify
|
|
- `--sample` / `-s` (optional) - Number of random URLs to check (default: check all)
|
|
- `--timeout` / `-t` (optional, default: 10) - Request timeout in seconds
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py verify-deployment --batch-id 1 --sample 10 --timeout 15
|
|
```
|
|
|
|
---
|
|
|
|
### Link Export
|
|
|
|
#### `get-links`
|
|
Export article URLs with optional link details for a project and tier
|
|
|
|
**Parameters:**
|
|
- `--project-id` / `-p` (required) - Project ID to get links for
|
|
- `--tier` / `-t` (required) - Tier to filter (e.g., "1" or "2+" for tier 2 and above)
|
|
- `--with-anchor-text` (flag) - Include anchor text used for tiered links
|
|
- `--with-destination-url` (flag) - Include destination URL that the article links to
|
|
|
|
**Example:**
|
|
```bash
|
|
uv run python main.py get-links --project-id 1 --tier 1 --with-anchor-text --with-destination-url
|
|
```
|
|
|
|
---
|
|
|
|
## Scripts Reference
|
|
|
|
### Site Management Scripts
|
|
|
|
#### `discover_s3_buckets.py`
|
|
Discover and register AWS S3 buckets as site deployments
|
|
|
|
**Parameters:**
|
|
- `--auto-import-all` (flag) - Automatically import all unregistered buckets
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Interactive mode (select buckets manually)
|
|
uv run python scripts/discover_s3_buckets.py
|
|
|
|
# Auto-import mode (import all unregistered buckets)
|
|
uv run python scripts/discover_s3_buckets.py --auto-import-all
|
|
```
|
|
|
|
**Features:**
|
|
- Discovers all S3 buckets in AWS account
|
|
- Skips buckets already registered in database
|
|
- Respects exclusion list in `s3_bucket_exclusions.txt`
|
|
- Automatically detects bucket region
|
|
|
|
---
|
|
|
|
#### `list_s3_fqdn_sites.py`
|
|
List all S3 sites with custom domains (FQDNs)
|
|
|
|
**Parameters:** None
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/list_s3_fqdn_sites.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `list_sites_by_id.py`
|
|
List site deployments by specific IDs
|
|
|
|
**Parameters:** None (edit script to set target_ids)
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Edit the script to set target_ids, then:
|
|
uv run python scripts/list_sites_by_id.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `delete_sites.py`
|
|
Delete site deployments by ID
|
|
|
|
**Parameters:** None (edit script to set site_ids)
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Edit the script to set site_ids, then:
|
|
uv run python scripts/delete_sites.py
|
|
```
|
|
|
|
**Warning:** This permanently deletes site records from the database.
|
|
|
|
---
|
|
|
|
#### `check_sites.py`
|
|
Check site status
|
|
|
|
**Parameters:** None
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/check_sites.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `check_specific_sites.py`
|
|
Check specific sites
|
|
|
|
**Parameters:** None
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/check_specific_sites.py
|
|
```
|
|
|
|
---
|
|
|
|
### Deployment Scripts
|
|
|
|
#### `add_robots_txt_to_buckets.py`
|
|
Add standardized `robots.txt` files to all storage buckets (both S3 and Bunny)
|
|
|
|
**Parameters:**
|
|
- `--dry-run` (flag) - Preview what would be done without actually uploading
|
|
- `--provider` (optional) - Only process specific provider: "s3" or "bunny"
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Preview what would be done (recommended first)
|
|
uv run python scripts/add_robots_txt_to_buckets.py --dry-run
|
|
|
|
# Upload to all buckets
|
|
uv run python scripts/add_robots_txt_to_buckets.py
|
|
|
|
# Only process S3 buckets
|
|
uv run python scripts/add_robots_txt_to_buckets.py --provider s3
|
|
|
|
# Only process Bunny storage zones
|
|
uv run python scripts/add_robots_txt_to_buckets.py --provider bunny
|
|
```
|
|
|
|
**robots.txt behavior:**
|
|
- ✅ Allows: Google, Bing, Yahoo, DuckDuckGo, Baidu, Yandex
|
|
- ✅ Allows: GPTBot, Claude, Common Crawl, Perplexity, ByteDance AI
|
|
- ❌ Blocks: Ahrefs, Semrush, Moz, and other SEO tools
|
|
- ❌ Blocks: HTTrack, Wget, and other scrapers/bad bots
|
|
|
|
---
|
|
|
|
#### `update_index_pages.py`
|
|
Automatically generate or update `index.html` and `sitemap.xml` files for all storage buckets
|
|
|
|
**Parameters:**
|
|
- `--dry-run` (flag) - Preview what would be updated without actually uploading
|
|
- `--provider` (optional) - Only process specific provider: "s3" or "bunny"
|
|
- `--force` (flag) - Force update even if no changes detected
|
|
- `--limit` (optional, integer) - Limit number of sites to process (useful for testing)
|
|
- `--hostname` (optional, string) - Process only specific hostname (exact match)
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Preview what would be updated (recommended first)
|
|
uv run python scripts/update_index_pages.py --dry-run
|
|
|
|
# Update all buckets
|
|
uv run python scripts/update_index_pages.py
|
|
|
|
# Only process S3 buckets
|
|
uv run python scripts/update_index_pages.py --provider s3
|
|
|
|
# Only process Bunny storage zones
|
|
uv run python scripts/update_index_pages.py --provider bunny
|
|
|
|
# Force update even if no changes detected
|
|
uv run python scripts/update_index_pages.py --force
|
|
|
|
# Test on specific site
|
|
uv run python scripts/update_index_pages.py --hostname example.com
|
|
|
|
# Limit number of sites (useful for testing)
|
|
uv run python scripts/update_index_pages.py --limit 10
|
|
```
|
|
|
|
**Features:**
|
|
- Lists all HTML files in each bucket's root directory
|
|
- Extracts titles from `<title>` tags (or formats filenames as fallback)
|
|
- Generates article listings sorted by most recent modification date
|
|
- Creates or updates `index.html` with article links
|
|
- Generates `sitemap.xml` with industry-standard settings
|
|
- Tracks last run timestamps to avoid unnecessary updates
|
|
- Excludes boilerplate pages: `index.html`, `about.html`, `privacy.html`, `contact.html`
|
|
|
|
---
|
|
|
|
### Database Scripts
|
|
|
|
#### `init_db.py`
|
|
Initialize or reset the database
|
|
|
|
**Parameters:** None (or "reset" argument)
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Initialize database
|
|
uv run python scripts/init_db.py
|
|
|
|
# Reset database (drops all data)
|
|
uv run python scripts/init_db.py reset
|
|
```
|
|
|
|
---
|
|
|
|
#### `create_first_admin.py`
|
|
Create the first admin user in the system
|
|
|
|
**Parameters:** None (interactive)
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/create_first_admin.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `add_admin_direct.py`
|
|
Add an admin user directly to the database (bypasses authentication)
|
|
|
|
**Parameters:** None (interactive)
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/add_admin_direct.py
|
|
```
|
|
|
|
**Use case:** When you're locked out or need to create an admin without existing admin credentials.
|
|
|
|
---
|
|
|
|
#### `list_users.py`
|
|
List all users in the database (direct database access)
|
|
|
|
**Parameters:** None
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/list_users.py
|
|
```
|
|
|
|
---
|
|
|
|
#### Migration Scripts
|
|
Database schema migrations for various features
|
|
|
|
**Scripts:**
|
|
- `migrate_story_3.1_sqlite.py` - Site deployments
|
|
- `migrate_add_anchor_text.py` - Anchor text
|
|
- `migrate_add_template_fields.py` - Template fields
|
|
- `migrate_add_site_pages.py` - Site pages
|
|
- `migrate_add_deployment_fields.py` - Deployment fields
|
|
- `migrate_add_multi_cloud_storage_fields.py` - Multi-cloud storage fields
|
|
- `migrate_add_image_fields.py` - Image fields
|
|
|
|
**Parameters:** None
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/migrate_story_3.1_sqlite.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `backfill_site_pages.py`
|
|
Backfill site pages after running the site pages migration
|
|
|
|
**Parameters:** None
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/backfill_site_pages.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `check_migration.py`
|
|
Check the status of database migrations
|
|
|
|
**Parameters:** None
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/check_migration.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `add_tier_to_projects.py`
|
|
Add tier field to existing projects
|
|
|
|
**Parameters:** None
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/add_tier_to_projects.py
|
|
```
|
|
|
|
---
|
|
|
|
### Content Management Scripts
|
|
|
|
#### `check_last_gen.py`
|
|
Check the last generated content batch
|
|
|
|
**Parameters:** None
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python check_last_gen.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `check_project_url.py`
|
|
Check project URL
|
|
|
|
**Parameters:** None (edit script for project_id)
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Edit the script to set project_id, then:
|
|
uv run python scripts/check_project_url.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `check_job_last_run.py`
|
|
Check job last run
|
|
|
|
**Parameters:** None (edit script for project_id)
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Edit the script to set project_id, then:
|
|
uv run python scripts/check_job_last_run.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `fix_tier1_money_links.py`
|
|
Fix tier1 money links
|
|
|
|
**Parameters:** None (edit script for project_id)
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Edit the script to set project_id, then:
|
|
uv run python scripts/fix_tier1_money_links.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `investigate_tier1_links.py`
|
|
Investigate tier1 links
|
|
|
|
**Parameters:** None (edit script for project_id)
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Edit the script to set project_id, then:
|
|
uv run python scripts/investigate_tier1_links.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `list_t1_articles.py`
|
|
List tier1 articles
|
|
|
|
**Parameters:** None
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/list_t1_articles.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `check_orphaned_articles.py`
|
|
Check for orphaned articles
|
|
|
|
**Parameters:** None
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/check_orphaned_articles.py
|
|
```
|
|
|
|
---
|
|
|
|
#### `fix_orphaned_articles.py`
|
|
Fix orphaned articles
|
|
|
|
**Parameters:** None
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/fix_orphaned_articles.py
|
|
```
|
|
|
|
---
|
|
|
|
### Utility Scripts
|
|
|
|
#### `generate_cli_docs.py`
|
|
Regenerate the CLI command reference documentation
|
|
|
|
**Parameters:** None
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python scripts/generate_cli_docs.py
|
|
```
|
|
|
|
Generates `docs/CLI_COMMAND_REFERENCE.md` from Click command definitions.
|
|
|
|
---
|
|
|
|
#### Test Scripts
|
|
Various testing and debugging scripts
|
|
|
|
**Scripts:**
|
|
- `test_image_generation.py` - Test image generation
|
|
- `test_image_reinsertion.py` - Test image reinsertion
|
|
- `test_s3_upload.py` - Test S3 upload
|
|
- `test_s3_uploads_localtris.py` - Test S3 uploads for localtris
|
|
- `test_s3_real.py` - Test real S3 upload
|
|
- `test_story_6_3.py` - Test story 6.3
|
|
|
|
**Parameters:** Various (see individual scripts)
|
|
|
|
---
|
|
|
|
## Suggested GUI Structure
|
|
|
|
### Main Navigation
|
|
|
|
#### 1. Dashboard
|
|
- System health status
|
|
- Recent activity feed
|
|
- Quick stats:
|
|
- Total projects
|
|
- Total sites
|
|
- Total content generated
|
|
- Recent deployments
|
|
- Quick actions:
|
|
- Create new project
|
|
- Provision new site
|
|
- Generate content
|
|
|
|
---
|
|
|
|
#### 2. Projects
|
|
**List View:**
|
|
- Table of all projects
|
|
- Columns: ID, Name, Keyword, Created, Status
|
|
- Filters: By user, by date, by status
|
|
- Search: By name, keyword
|
|
- Actions: View, Edit, Delete, Create Job, Generate
|
|
|
|
**Create Project:**
|
|
- Tab 1: CORA Ingestion
|
|
- File upload (drag & drop or file picker)
|
|
- Project name input
|
|
- Money site URL input
|
|
- Custom anchors (comma-separated)
|
|
- Authentication fields
|
|
- Tab 2: Simple Ingestion
|
|
- File upload
|
|
- Project name (optional, can override spreadsheet)
|
|
- Money site URL
|
|
- Authentication fields
|
|
|
|
**Project Details:**
|
|
- Project information display
|
|
- Related content list
|
|
- Job files list
|
|
- Actions:
|
|
- Create job file
|
|
- Generate content
|
|
- Export links
|
|
- Edit project
|
|
|
|
**Create Job File:**
|
|
- Project selector (dropdown)
|
|
- Deployment targets (multi-select with search)
|
|
- Tier 1 count (number input)
|
|
- Tier 2 count (number input)
|
|
- Model selection (dropdown)
|
|
- Output path (optional, file picker)
|
|
- Authentication fields
|
|
|
|
---
|
|
|
|
#### 3. Sites
|
|
**List View:**
|
|
- Table of all sites
|
|
- Columns: ID, Site Name, Domain, Storage Zone, Region, Provider
|
|
- Filters: By provider, by region, by status
|
|
- Search: By name, domain
|
|
- Actions: View, Edit, Delete, Sync
|
|
|
|
**Provision Site:**
|
|
- Site name input
|
|
- Domain input (FQDN)
|
|
- Storage name input (with uniqueness check)
|
|
- Region selector (dropdown: DE, NY, LA, SG, SYD)
|
|
- Authentication fields
|
|
- DNS configuration instructions display
|
|
|
|
**Attach Domain:**
|
|
- Site name input
|
|
- Domain input (FQDN)
|
|
- Storage name selector (dropdown of existing)
|
|
- Authentication fields
|
|
|
|
**Discover S3 Buckets:**
|
|
- Auto-import toggle
|
|
- Bucket list display
|
|
- Status indicators (Available, Registered, Excluded)
|
|
- Bulk selection
|
|
- Import button
|
|
|
|
**Site Details:**
|
|
- Site information display
|
|
- Storage zone details
|
|
- Pull zone details
|
|
- DNS configuration
|
|
- Deployed content count
|
|
- Actions: Edit, Remove, View Content
|
|
|
|
---
|
|
|
|
#### 4. Content
|
|
**List View:**
|
|
- Table of all generated content
|
|
- Columns: ID, Title, Project, Tier, Site, Status, Created
|
|
- Filters: By project, by tier, by site, by status
|
|
- Search: By title
|
|
- Actions: View, Deploy, Delete
|
|
|
|
**Deploy Batch:**
|
|
- Batch/Project selector (dropdown)
|
|
- Continue on error (checkbox)
|
|
- Dry run (checkbox)
|
|
- Authentication fields
|
|
- Progress bar
|
|
- Results display
|
|
|
|
**Verify Deployment:**
|
|
- Batch/Project selector (dropdown)
|
|
- Sample size (number input, optional)
|
|
- Timeout (number input, default: 10)
|
|
- Results display:
|
|
- Total checked
|
|
- Successful
|
|
- Failed (with details)
|
|
|
|
**Content Details:**
|
|
- Content display (HTML preview)
|
|
- Metadata display
|
|
- Deployment status
|
|
- Actions: Edit, Redeploy, Delete
|
|
|
|
---
|
|
|
|
#### 5. Maintenance
|
|
**Update Index Pages:**
|
|
- Provider filter (dropdown: All, S3, Bunny)
|
|
- Force update (checkbox)
|
|
- Limit (number input, optional)
|
|
- Hostname filter (text input, optional)
|
|
- Dry run (checkbox)
|
|
- Progress bar
|
|
- Results display
|
|
|
|
**Add Robots.txt:**
|
|
- Provider filter (dropdown: All, S3, Bunny)
|
|
- Dry run (checkbox)
|
|
- Progress bar
|
|
- Results display
|
|
|
|
**Verify Deployment:**
|
|
- Same as Content → Verify Deployment
|
|
|
|
**Database Tools:**
|
|
- Initialize database (with confirmation)
|
|
- Reset database (with strong confirmation)
|
|
- Run migrations (list with status)
|
|
- Check migration status
|
|
|
|
---
|
|
|
|
#### 6. Settings
|
|
**User Management:**
|
|
- List users (table)
|
|
- Add user form
|
|
- Edit user form
|
|
- Delete user (with confirmation)
|
|
- Role management
|
|
|
|
**System Configuration:**
|
|
- Display current config
|
|
- API keys management (view/edit)
|
|
- Model selection
|
|
- Environment variables display
|
|
|
|
**Authentication:**
|
|
- Login/logout
|
|
- Session management
|
|
- Remember credentials option
|
|
|
|
---
|
|
|
|
## Key Forms/Components
|
|
|
|
### Project Creation Form
|
|
**Fields:**
|
|
- File upload (CORA or Simple)
|
|
- Drag & drop zone
|
|
- File picker button
|
|
- File validation (must be .xlsx)
|
|
- Project name (text input, required)
|
|
- Money site URL (text input, URL validation)
|
|
- Custom anchors (text input, comma-separated, CORA only)
|
|
- Authentication (username/password, optional if session exists)
|
|
|
|
**Validation:**
|
|
- File format check
|
|
- URL format validation
|
|
- Required field validation
|
|
|
|
---
|
|
|
|
### Job Creation Form
|
|
**Fields:**
|
|
- Project selector (dropdown, required)
|
|
- Deployment targets (multi-select with search, optional)
|
|
- Tier 1 count (number input, default: 10)
|
|
- Tier 2 count (number input, default: 30)
|
|
- Model selection (dropdown, optional)
|
|
- Output path (file picker, optional)
|
|
- Authentication (username/password, optional if session exists)
|
|
|
|
**Features:**
|
|
- Real-time validation
|
|
- Preview of job file structure
|
|
- Save as template option
|
|
|
|
---
|
|
|
|
### Generate Batch Form
|
|
**Fields:**
|
|
- Job file selector (file picker, required)
|
|
- Model override (dropdown, optional)
|
|
- Debug mode (checkbox)
|
|
- Continue on error (checkbox)
|
|
- Authentication (username/password, optional if session exists)
|
|
|
|
**Features:**
|
|
- Progress bar with percentage
|
|
- Live log streaming
|
|
- Cancel button
|
|
- Results summary
|
|
|
|
---
|
|
|
|
### Deploy Batch Form
|
|
**Fields:**
|
|
- Batch/Project selector (dropdown, required)
|
|
- Continue on error (checkbox, default: checked)
|
|
- Dry run (checkbox)
|
|
- Authentication (username/password, optional if session exists)
|
|
|
|
**Features:**
|
|
- Progress bar
|
|
- File-by-file status
|
|
- Results summary
|
|
- Error details
|
|
|
|
---
|
|
|
|
### Site Provision Form
|
|
**Fields:**
|
|
- Site name (text input, required)
|
|
- Domain (text input, FQDN validation, required)
|
|
- Storage name (text input, required, uniqueness check)
|
|
- Region selector (dropdown, required)
|
|
- Authentication (username/password, optional if session exists)
|
|
|
|
**Features:**
|
|
- Real-time domain validation
|
|
- Storage name uniqueness check
|
|
- DNS configuration instructions display
|
|
- Copy DNS settings button
|
|
|
|
---
|
|
|
|
### Maintenance Tools
|
|
|
|
#### Update Index Pages
|
|
**Fields:**
|
|
- Provider filter (dropdown: All, S3, Bunny)
|
|
- Force update (checkbox)
|
|
- Limit (number input, optional)
|
|
- Hostname filter (text input, optional)
|
|
- Dry run (checkbox)
|
|
|
|
**Features:**
|
|
- Progress bar
|
|
- Site-by-site status
|
|
- Results summary
|
|
|
|
#### Add Robots.txt
|
|
**Fields:**
|
|
- Provider filter (dropdown: All, S3, Bunny)
|
|
- Dry run (checkbox)
|
|
|
|
**Features:**
|
|
- Progress bar
|
|
- Results summary
|
|
|
|
---
|
|
|
|
## Implementation Notes
|
|
|
|
### 1. Authentication
|
|
Many commands require `--username`/`--password`. Consider:
|
|
- **Session-based authentication** in GUI
|
|
- Login page with remember option
|
|
- JWT or session tokens
|
|
- Auto-refresh tokens
|
|
- **Remember credentials** option
|
|
- Secure storage (encrypted local storage)
|
|
- Optional "remember me" checkbox
|
|
- **Admin vs User role handling**
|
|
- Role-based UI visibility
|
|
- Permission checks before actions
|
|
- Clear error messages for unauthorized actions
|
|
|
|
---
|
|
|
|
### 2. File Operations
|
|
- **File upload** for CORA/Simple ingestion
|
|
- Drag & drop interface
|
|
- File picker fallback
|
|
- Progress indicator
|
|
- File size validation
|
|
- Format validation (.xlsx only)
|
|
- **File picker** for job files
|
|
- Recent files list
|
|
- File browser
|
|
- File validation (JSON format)
|
|
- **File download** for link exports
|
|
- CSV export
|
|
- JSON export options
|
|
- Download button with progress
|
|
|
|
---
|
|
|
|
### 3. Real-time Updates
|
|
- **Progress bars** for generation/deployment
|
|
- Percentage complete
|
|
- Current item being processed
|
|
- Estimated time remaining
|
|
- Cancel button
|
|
- **Live status updates**
|
|
- WebSocket or polling for status
|
|
- Real-time log streaming
|
|
- Status badges (Pending, Processing, Complete, Failed)
|
|
- **Log streaming**
|
|
- Scrollable log viewer
|
|
- Auto-scroll to bottom
|
|
- Filter by log level
|
|
- Export logs option
|
|
|
|
---
|
|
|
|
### 4. Validation
|
|
- **File format validation** before upload
|
|
- Check file extension
|
|
- Validate file structure (for spreadsheets)
|
|
- Show clear error messages
|
|
- **URL/domain validation**
|
|
- Real-time validation as user types
|
|
- Format checking (http://, https://)
|
|
- Domain format validation
|
|
- **Job file JSON validation**
|
|
- Schema validation
|
|
- Syntax checking
|
|
- Required field checking
|
|
- Clear error messages with line numbers
|
|
|
|
---
|
|
|
|
### 5. Error Handling
|
|
- **Display error messages clearly**
|
|
- User-friendly error messages
|
|
- Technical details in expandable section
|
|
- Error codes for support
|
|
- **Retry mechanisms**
|
|
- Retry button for failed operations
|
|
- Automatic retry with exponential backoff
|
|
- Max retry limit
|
|
- **Continue-on-error options**
|
|
- Checkbox for batch operations
|
|
- Summary of successes and failures
|
|
- Detailed error log
|
|
|
|
---
|
|
|
|
### 6. Data Display
|
|
- **Tables** for projects, sites, content
|
|
- Sortable columns
|
|
- Filterable rows
|
|
- Pagination for large datasets
|
|
- Row selection (multi-select)
|
|
- Bulk actions
|
|
- **Filters and search**
|
|
- Text search with highlighting
|
|
- Advanced filters (date range, status, etc.)
|
|
- Saved filter presets
|
|
- **Pagination**
|
|
- Page size selector
|
|
- Page navigation
|
|
- Total count display
|
|
- **Export to CSV/JSON**
|
|
- Export current view (with filters applied)
|
|
- Export all data
|
|
- Custom field selection
|
|
|
|
---
|
|
|
|
### 7. User Experience Enhancements
|
|
- **Confirmation dialogs** for destructive actions
|
|
- Delete operations
|
|
- Reset database
|
|
- Remove sites
|
|
- **Loading states**
|
|
- Skeleton loaders
|
|
- Spinners for buttons
|
|
- Disable forms during submission
|
|
- **Success notifications**
|
|
- Toast notifications
|
|
- Success banners
|
|
- Confirmation messages
|
|
- **Keyboard shortcuts**
|
|
- Quick navigation
|
|
- Common actions (Ctrl+S to save, etc.)
|
|
- **Responsive design**
|
|
- Mobile-friendly layouts
|
|
- Tablet optimization
|
|
- Desktop-first with mobile fallbacks
|
|
|
|
---
|
|
|
|
### 8. Performance Considerations
|
|
- **Lazy loading** for large lists
|
|
- Virtual scrolling
|
|
- Infinite scroll option
|
|
- Load on demand
|
|
- **Caching**
|
|
- Cache project/site lists
|
|
- Cache user session
|
|
- Cache configuration
|
|
- **Optimistic updates**
|
|
- Update UI immediately
|
|
- Rollback on error
|
|
- **Debouncing** for search/filter inputs
|
|
- Reduce API calls
|
|
- Improve performance
|
|
|
|
---
|
|
|
|
### 9. Accessibility
|
|
- **Keyboard navigation**
|
|
- Tab order
|
|
- Focus management
|
|
- Keyboard shortcuts
|
|
- **Screen reader support**
|
|
- ARIA labels
|
|
- Semantic HTML
|
|
- Alt text for images
|
|
- **Color contrast**
|
|
- WCAG AA compliance
|
|
- High contrast mode
|
|
- **Error announcements**
|
|
- Screen reader announcements
|
|
- Error message association
|
|
|
|
---
|
|
|
|
## Technology Recommendations
|
|
|
|
### Frontend Framework Options
|
|
1. **React + TypeScript**
|
|
- Component library: Material-UI or Ant Design
|
|
- State management: Redux or Zustand
|
|
- Forms: React Hook Form
|
|
- HTTP client: Axios
|
|
|
|
2. **Vue.js + TypeScript**
|
|
- Component library: Vuetify or Element Plus
|
|
- State management: Pinia
|
|
- Forms: Vee-Validate
|
|
- HTTP client: Axios
|
|
|
|
3. **Next.js (React)**
|
|
- Full-stack option
|
|
- Server-side rendering
|
|
- API routes
|
|
|
|
### Backend Integration
|
|
- **REST API** (if creating new API endpoints)
|
|
- FastAPI (Python) to match existing codebase
|
|
- OpenAPI/Swagger documentation
|
|
- **Direct CLI execution** (simpler initial approach)
|
|
- Execute CLI commands from backend
|
|
- Parse output
|
|
- Return structured data
|
|
|
|
### Additional Tools
|
|
- **File upload**: react-dropzone or similar
|
|
- **Tables**: react-table or ag-grid
|
|
- **Charts**: Chart.js or Recharts
|
|
- **Notifications**: react-toastify or similar
|
|
- **Logs**: react-terminal or xterm.js
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
1. **Choose technology stack**
|
|
2. **Set up project structure**
|
|
3. **Create API layer** (if needed) or CLI wrapper
|
|
4. **Build authentication system**
|
|
5. **Implement core pages** (Dashboard, Projects, Sites)
|
|
6. **Add forms and validation**
|
|
7. **Implement real-time updates**
|
|
8. **Add error handling and notifications**
|
|
9. **Testing and refinement**
|
|
10. **Deployment**
|
|
|
|
---
|
|
|
|
## Related Documentation
|
|
|
|
- [CLI Command Reference](./CLI_COMMAND_REFERENCE.md) - Detailed CLI documentation
|
|
- [Job Schema](./job-schema.md) - Job file structure and configuration
|
|
- [Architecture](./architecture.md) - System architecture overview
|
|
- [Scripts README](../scripts/README.md) - Scripts documentation
|