3.7 KiB
SQLite Generated Cards Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Replace the MySQL-backed card source with a local SQLite-backed mock data generator, fixed traffic values, and Excel export.
Architecture: The service will use SQLite as the runtime persistence layer and keep the existing in-memory Store shape for OneLink handlers. The admin sync action becomes card generation: it appends generated rows to SQLite and refreshes memory. Excel export maps stored card rows to the inbound workbook column format.
Tech Stack: Go net/http, database/sql, SQLite driver, Vue 3, Vite, simple XLSX generation via Go standard library zip/XML.
Task 1: Lock Generated Card Rules With Tests
Files:
-
Test:
internal/app/generator_test.go -
Create:
internal/app/generator.go -
Write tests that generated cards use timestamp-related unique identifiers, fixed monthly traffic
18432 KB, APNCMIOT, and export metadata matching the confirmed sample. -
Run
go test ./internal/app -run TestGenerated -count=1and verify it fails because the generator does not exist. -
Implement the minimal generator API and constants.
-
Run the focused test and verify it passes.
Task 2: Replace MySQL Backend With SQLite Backend
Files:
-
Modify:
go.mod -
Modify:
internal/app/store_file.go -
Create/modify:
internal/app/store_sqlite.go -
Modify:
internal/app/store.go -
Test:
internal/app/store_test.go -
Add tests that
NewStoreManagerno longer requiresBAFFLE_DB_DSN, loads from SQLite, and appends generated cards without deleting existing rows. -
Run focused tests and verify failure.
-
Implement SQLite schema creation, load, save, delete, and append generation behavior.
-
Remove runtime database reload from
Snapshot()so normal reads do not hit external DB logic. -
Run focused tests and verify pass.
Task 3: Admin API And Excel Export
Files:
-
Modify:
internal/app/admin.go -
Create:
internal/app/export_xlsx.go -
Test:
internal/app/admin_test.goor existing app tests -
Add tests for
POST /api/generatewithcount, andGET /api/cards/exportreturning XLSX bytes with the confirmed headers. -
Run focused tests and verify failure.
-
Implement generate and export handlers.
-
Run focused tests and verify pass.
Task 4: Remove Traffic Growth From Runtime
Files:
-
Modify:
internal/app/store.go -
Modify:
internal/app/model.go -
Modify:
internal/app/admin.go -
Test:
internal/app/store_test.go -
Add or update tests to prove snapshot does not increment traffic over time.
-
Remove
applyGrowthLocked()calls and UI-facing settings behavior. -
Keep fixed traffic values in generated card records.
-
Run focused tests and verify pass.
Task 5: Frontend Update
Files:
-
Modify:
frontend/src/main.js -
Modify:
frontend/src/style.css -
Replace "一键同步" with "一键生成".
-
Add generation count input.
-
Call
POST /api/generate. -
Add export button linking/downloading from
/api/cards/export. -
Remove traffic growth controls and growth column.
-
Run
npm run buildinfrontend.
Task 6: Documentation And Verification
Files:
-
Modify:
README.md -
Modify:
docker-compose.yaml -
Modify:
docker-compose.yamlif needed -
Update docs to describe SQLite, generation, export, and fixed traffic.
-
Remove MySQL DSN instructions.
-
Run
go test ./...with a writableGOCACHE. -
Run frontend build.
-
Check
git difffor unintended changes.