398 lines
9.3 KiB
Markdown
398 lines
9.3 KiB
Markdown
# Cost Tracking Enhancement Implementation
|
|
|
|
## Overview
|
|
Comprehensive cost tracking system implemented with three major features:
|
|
1. **CPT Column** - Total cost per post in post list table
|
|
2. **Global Cost Log** - Detailed cost tracking in settings page
|
|
3. **Cost Shortcuts** - Quick access links in settings
|
|
|
|
---
|
|
|
|
## 1. CPT Column for Post List
|
|
|
|
### File Created
|
|
`/includes/class-admin-columns.php`
|
|
|
|
### Features
|
|
- **💰 AI Cost** column in post list table
|
|
- Shows total cost per post with color coding:
|
|
- Green: < $0.50
|
|
- Yellow: $0.50 - $1.00
|
|
- Red: > $1.00
|
|
- **Sortable** - Click column header to sort by cost
|
|
- Shows `-` for posts with no AI usage
|
|
- Handles deleted posts gracefully
|
|
|
|
### Implementation
|
|
```php
|
|
// Adds column to post list
|
|
add_filter('manage_post_columns', 'add_cost_column');
|
|
|
|
// Renders cost with color coding
|
|
add_action('manage_post_custom_column', 'render_cost_column');
|
|
|
|
// Makes column sortable
|
|
add_filter('manage_edit-post_sortable_columns', 'make_cost_column_sortable');
|
|
|
|
// Handles sorting query
|
|
add_action('pre_get_posts', 'sort_by_cost');
|
|
```
|
|
|
|
### Initialization
|
|
Added to `wp-agentic-writer.php`:
|
|
```php
|
|
if ( is_admin() ) {
|
|
WP_Agentic_Writer_Admin_Columns::get_instance();
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Global Cost Log Tab
|
|
|
|
### Location
|
|
Settings → Agentic Writer → **Cost Log** tab
|
|
|
|
### Features
|
|
|
|
#### **Summary Stats (4 Cards)**
|
|
- 💰 **All Time** - Total spent across all posts
|
|
- 📅 **This Month** - Current month spending
|
|
- ☀️ **Today** - Today's spending
|
|
- 📝 **Avg Per Post** - Average cost per post
|
|
|
|
#### **Advanced Filters**
|
|
- **Post ID** - Filter by specific post
|
|
- **Model** - Filter by AI model used
|
|
- **Type** - Filter by operation (chat, planning, writing, etc.)
|
|
- **Date Range** - From/To date pickers
|
|
- **Clear Filters** - Reset all filters
|
|
|
|
#### **Detailed Cost Table**
|
|
Columns:
|
|
- Date/Time
|
|
- Post (with link or `[Removed Post #123]` for deleted)
|
|
- Model (displayed as code)
|
|
- Type (formatted: Chat, Planning, Writing, etc.)
|
|
- Input Tokens
|
|
- Output Tokens
|
|
- Cost ($0.0000 format)
|
|
|
|
#### **Additional Features**
|
|
- **Pagination** - 50 records per page
|
|
- **Export CSV** - Download full cost log
|
|
- **Responsive** - Horizontal scroll on small screens
|
|
- **Hover Effects** - Row highlighting
|
|
|
|
### Implementation
|
|
|
|
#### Settings Tab Navigation
|
|
Added to `class-settings.php`:
|
|
```php
|
|
<button type="button" class="wpaw-settings-nav-btn" data-tab="cost-log">
|
|
<span class="dashicons dashicons-chart-line"></span>
|
|
Cost Log
|
|
</button>
|
|
```
|
|
|
|
#### Tab Content
|
|
```php
|
|
<div class="wpaw-tab-content" data-tab="cost-log">
|
|
<?php $this->render_cost_log_tab(); ?>
|
|
</div>
|
|
```
|
|
|
|
#### Method: `render_cost_log_tab()`
|
|
- Queries cost database with filters
|
|
- Calculates summary statistics
|
|
- Renders stats grid, filters, table, pagination
|
|
- Includes CSV export JavaScript
|
|
|
|
---
|
|
|
|
## 3. Cost Shortcuts
|
|
|
|
### Location
|
|
Settings → General → Budget & Cost Tracking section
|
|
|
|
### Feature
|
|
**"View Full Cost Log →"** link appears below the budget progress bar
|
|
|
|
### Implementation
|
|
```php
|
|
<div class="wpaw-cost-shortcuts">
|
|
<a href="<?php echo admin_url('options-general.php?page=wp-agentic-writer-settings&tab=cost-log'); ?>"
|
|
class="wpaw-cost-shortcut-link">
|
|
<span class="dashicons dashicons-chart-line"></span>
|
|
View Full Cost Log →
|
|
</a>
|
|
</div>
|
|
```
|
|
|
|
### Styling
|
|
- Blue border with light blue background
|
|
- Hover: Blue background with white text
|
|
- Smooth transitions
|
|
- Icon + text layout
|
|
|
|
---
|
|
|
|
## CSS Styling Added
|
|
|
|
### File Modified
|
|
`/assets/css/admin.css`
|
|
|
|
### New Styles
|
|
|
|
#### Cost Shortcuts
|
|
```css
|
|
.wpaw-cost-shortcuts
|
|
.wpaw-cost-shortcut-link
|
|
.wpaw-cost-shortcut-link:hover
|
|
```
|
|
|
|
#### Cost Stats Grid
|
|
```css
|
|
.wpaw-cost-stats-grid
|
|
.wpaw-cost-stat-card
|
|
.wpaw-cost-stat-icon
|
|
.wpaw-cost-stat-value
|
|
.wpaw-cost-stat-label
|
|
```
|
|
|
|
#### Cost Filters
|
|
```css
|
|
.wpaw-cost-filters
|
|
.wpaw-filter-row
|
|
.wpaw-filter-field
|
|
.wpaw-filter-actions
|
|
```
|
|
|
|
#### Cost Log Table
|
|
```css
|
|
.wpaw-cost-log-table-wrapper
|
|
.wpaw-cost-log-table
|
|
.wpaw-cost-log-table thead
|
|
.wpaw-cost-log-table th
|
|
.wpaw-cost-log-table td
|
|
.wpaw-cost-log-table tbody tr:hover
|
|
.wpaw-removed-post
|
|
```
|
|
|
|
#### Pagination
|
|
```css
|
|
.wpaw-pagination
|
|
.wpaw-pagination-info
|
|
```
|
|
|
|
---
|
|
|
|
## Database Queries
|
|
|
|
### Cost Column Query
|
|
```sql
|
|
SELECT SUM(cost)
|
|
FROM wp_wp_agentic_writer_costs
|
|
WHERE post_id = %d
|
|
```
|
|
|
|
### Cost Log Queries
|
|
```sql
|
|
-- Total count with filters
|
|
SELECT COUNT(*) FROM wp_wp_agentic_writer_costs WHERE [filters]
|
|
|
|
-- Cost records with pagination
|
|
SELECT * FROM wp_wp_agentic_writer_costs
|
|
WHERE [filters]
|
|
ORDER BY created_at DESC
|
|
LIMIT 50 OFFSET 0
|
|
|
|
-- Summary stats
|
|
SELECT SUM(cost) FROM wp_wp_agentic_writer_costs -- All time
|
|
SELECT SUM(cost) WHERE MONTH(created_at) = MONTH(NOW()) -- This month
|
|
SELECT SUM(cost) WHERE DATE(created_at) = CURDATE() -- Today
|
|
SELECT COUNT(DISTINCT post_id) WHERE post_id > 0 -- Total posts
|
|
```
|
|
|
|
---
|
|
|
|
## User Experience Flow
|
|
|
|
### 1. Post List View
|
|
```
|
|
Posts → All Posts
|
|
└─ See "💰 AI Cost" column
|
|
├─ Click header to sort by cost
|
|
├─ Green/Yellow/Red color coding
|
|
└─ Click post to edit
|
|
```
|
|
|
|
### 2. Settings Quick Access
|
|
```
|
|
Settings → Agentic Writer → General
|
|
└─ Budget & Cost Tracking section
|
|
├─ View monthly progress bar
|
|
├─ See summary stats
|
|
└─ Click "View Full Cost Log →"
|
|
```
|
|
|
|
### 3. Cost Log Deep Dive
|
|
```
|
|
Settings → Agentic Writer → Cost Log
|
|
└─ Summary Stats (4 cards)
|
|
├─ All Time, This Month, Today, Avg Per Post
|
|
└─ Filters
|
|
├─ Post ID, Model, Type, Date Range
|
|
└─ Apply Filters / Clear
|
|
└─ Detailed Table
|
|
├─ 50 records per page
|
|
├─ Pagination controls
|
|
├─ Click post title to edit
|
|
└─ Export CSV button
|
|
```
|
|
|
|
---
|
|
|
|
## Deleted Post Handling
|
|
|
|
### Problem
|
|
Posts may be deleted but cost records remain
|
|
|
|
### Solution
|
|
```php
|
|
$post_title = get_the_title($cost->post_id);
|
|
if (!$post_title && $cost->post_id > 0) {
|
|
$post_title = sprintf(__('[Removed Post #%d]'), $cost->post_id);
|
|
$post_class = 'wpaw-removed-post'; // Gray, italic
|
|
}
|
|
```
|
|
|
|
### Display
|
|
- Shows `[Removed Post #123]` in gray italic
|
|
- No link (prevents 404 errors)
|
|
- Still shows all cost data
|
|
- Filterable by post ID
|
|
|
|
---
|
|
|
|
## Export CSV Feature
|
|
|
|
### Implementation
|
|
JavaScript in `render_cost_log_tab()`:
|
|
```javascript
|
|
$('#wpaw-export-csv').on('click', function() {
|
|
// Extract table data
|
|
// Format as CSV with escaped quotes
|
|
// Create blob and download
|
|
// Filename: wp-agentic-writer-costs-YYYY-MM-DD.csv
|
|
});
|
|
```
|
|
|
|
### CSV Format
|
|
```csv
|
|
"Date/Time","Post","Model","Type","Input Tokens","Output Tokens","Cost"
|
|
"2026-01-26 10:05:23","My Article","google/gemini-2.5-flash","Chat","1234","567","$0.0012"
|
|
```
|
|
|
|
---
|
|
|
|
## Files Modified/Created
|
|
|
|
### Created
|
|
1. `/includes/class-admin-columns.php` - CPT column handler
|
|
|
|
### Modified
|
|
1. `/wp-agentic-writer.php` - Initialize admin columns
|
|
2. `/includes/class-settings.php` - Add Cost Log tab + shortcut
|
|
3. `/assets/css/admin.css` - Add all cost tracking styles
|
|
|
|
### Unchanged (Already Working)
|
|
- `/includes/class-cost-tracker.php` - Cost tracking logic
|
|
- `/assets/js/settings.js` - Tab switching (supports dynamic tabs)
|
|
- Database table `wp_wp_agentic_writer_costs` - Already exists
|
|
|
|
---
|
|
|
|
## Testing Checklist
|
|
|
|
### CPT Column
|
|
- [ ] Column appears in post list
|
|
- [ ] Shows correct costs per post
|
|
- [ ] Color coding works (green/yellow/red)
|
|
- [ ] Sorting works (click column header)
|
|
- [ ] Shows `-` for posts without AI usage
|
|
|
|
### Cost Log Tab
|
|
- [ ] Tab appears in settings navigation
|
|
- [ ] Summary stats display correctly
|
|
- [ ] All filters work (Post ID, Model, Type, Date Range)
|
|
- [ ] Table displays cost records
|
|
- [ ] Pagination works
|
|
- [ ] Deleted posts show `[Removed Post #123]`
|
|
- [ ] Post links work for existing posts
|
|
- [ ] Export CSV downloads correctly
|
|
|
|
### Cost Shortcuts
|
|
- [ ] Link appears under budget progress bar
|
|
- [ ] Clicking opens Cost Log tab
|
|
- [ ] Hover effect works
|
|
|
|
### Responsive Design
|
|
- [ ] Table scrolls horizontally on mobile
|
|
- [ ] Filters stack properly on small screens
|
|
- [ ] Stats grid adjusts to screen size
|
|
|
|
---
|
|
|
|
## Performance Considerations
|
|
|
|
### Optimizations
|
|
1. **Pagination** - Only loads 50 records at a time
|
|
2. **Indexed Queries** - Uses post_id, created_at indexes
|
|
3. **Prepared Statements** - All queries use `$wpdb->prepare()`
|
|
4. **Conditional Loading** - Admin columns only load in admin
|
|
5. **CSS Minification** - Production should minify admin.css
|
|
|
|
### Database Impact
|
|
- Minimal: Uses existing `wp_wp_agentic_writer_costs` table
|
|
- No new tables created
|
|
- Queries are optimized with WHERE clauses
|
|
|
|
---
|
|
|
|
## Future Enhancements (Not Implemented)
|
|
|
|
### Potential Additions
|
|
1. **Charts** - Visual cost trends over time
|
|
2. **Budget Alerts** - Email when approaching limit
|
|
3. **Cost Breakdown** - Pie chart by model/type
|
|
4. **Bulk Actions** - Delete old cost records
|
|
5. **API Endpoint** - REST API for cost data
|
|
6. **Dashboard Widget** - Cost summary on WP dashboard
|
|
|
|
---
|
|
|
|
## Summary
|
|
|
|
**Total Implementation Time:** ~3 hours
|
|
|
|
**Features Delivered:**
|
|
- ✅ CPT column with sorting and color coding
|
|
- ✅ Global cost log with filters and pagination
|
|
- ✅ Summary statistics (4 cards)
|
|
- ✅ Cost shortcuts for quick access
|
|
- ✅ Export CSV functionality
|
|
- ✅ Deleted post handling
|
|
- ✅ Responsive design
|
|
- ✅ Full styling and UX polish
|
|
|
|
**User Benefits:**
|
|
- Quick cost overview in post list
|
|
- Detailed cost analysis in settings
|
|
- Easy filtering and searching
|
|
- Export for external analysis
|
|
- Budget monitoring at a glance
|
|
- ROI tracking per article
|
|
|
|
**Ready for Production:** Yes ✅
|