Diff & Review
Compare versions of pseudo-artifacts, diagrams, and generated code.
Recent Changes
Comparing: v0.8.2 vs v0.9.0
+14 -2 linesBase (v0.8.2)
1 name: Authentication
2 id: auth
3 description: Handles user login and sessions.
4 -dependencies: []
5 interfaces:
6 - login(username, password)
7 - logout()
Head (v0.9.0)
1 name: Authentication
2 id: auth
3 description: Handles user login and sessions.
4 +dependencies:
5 + - database
6 + - config
7 interfaces:
8 - login(username, password)
9 - logout()
10+ - check_session()
This change was suggested by AI to improve traceability.
AI CopilotBeta
Hello! I'm your AI modernization copilot. I have context on your legacy CRM codebase. How can I help you today?
Explain the billing flow and identify the 3 riskiest assumptions.
The billing flow in your legacy PHP app is primarily centered around `src/billing/invoice_gen.php`.
**Flow Overview:**
1. A cron job triggers the billing run.
2. It fetches all active subscriptions using a large raw SQL join.
3. For each customer, it calculates the usage and generates a PDF using a legacy library.
4. It calls the Stripe API (v2015-04-07) to process payments.
**Riskiest Assumptions:**
- **Database Consistency:** The SQL query assumes that all records in `subscriptions` have a matching `customer_id` in the `users` table, but there are no foreign keys in the legacy schema.
- **API Availability:** The Stripe API call is synchronous and lacks a retry mechanism. If Stripe is down, the billing run fails mid-way without recording progress.
- **Concurrency:** The billing run is not idempotent. Running it twice on the same day will double-charge customers.
#repo#analysis#pseudo