92 lines
3.0 KiB
Markdown
92 lines
3.0 KiB
Markdown
# Registration Function
|
|
|
|
Azure Function (isolated worker, .NET 8) for managing prospect registration in AdPlatform.
|
|
|
|
## Architecture
|
|
|
|
```
|
|
Prospect → Registration Function → dbRegistration (future)
|
|
Admin Panel → Management API → Registration Function (proxy)
|
|
→ spClientManagement (approve → dbAdPlatform)
|
|
```
|
|
|
|
Management validates admin sessions, then proxies registration calls to this Function.
|
|
The Function never touches `dbAdPlatform`. Management never touches `dbRegistration`.
|
|
|
|
## Endpoints
|
|
|
|
| Method | Route | Auth | Description |
|
|
|--------|-------|------|-------------|
|
|
| GET | `/api/registration/pending` | Function Key | List pending applicants |
|
|
| GET | `/api/registration/{id}` | Function Key | Get single applicant |
|
|
| POST | `/api/registration/register` | Function Key | New prospect signup |
|
|
| POST | `/api/registration/{id}/reject` | Function Key | Reject applicant |
|
|
| POST | `/api/registration/{id}/complete` | Function Key | Mark approved (called after platform client created) |
|
|
| GET | `/api/registration/health` | Anonymous | Health check |
|
|
|
|
## Mock Mode (Current)
|
|
|
|
Starts with 4 realistic test applicants in memory. State persists within a Function host
|
|
lifecycle and resets on cold start. No database required.
|
|
|
|
To switch to mock mode, in `Program.cs`:
|
|
```csharp
|
|
services.AddSingleton<IRegistrationDataService, MockDataService>();
|
|
```
|
|
|
|
## Database Mode (Future)
|
|
|
|
When `dbRegistration` is ready:
|
|
|
|
1. Create the database and run the `spRegistration` stored proc migration
|
|
2. Set `ConnectionStrings:Sql` to the registration database connection string
|
|
3. In `Program.cs`, swap DI registration:
|
|
```csharp
|
|
services.AddSingleton<SqlService>();
|
|
services.AddSingleton<IRegistrationDataService, SqlDataService>();
|
|
```
|
|
|
|
The `SqlDataService` calls `dbo.spRegistration` with the standard `@action/@rqst/@resp OUTPUT`
|
|
pattern used across all AdPlatform services.
|
|
|
|
## Local Development
|
|
|
|
```bash
|
|
# Requires Azure Functions Core Tools
|
|
func start
|
|
```
|
|
|
|
Test with:
|
|
```bash
|
|
curl http://localhost:7071/api/registration/health
|
|
curl http://localhost:7071/api/registration/pending
|
|
```
|
|
|
|
## Deployment
|
|
|
|
Deploy as an Azure Function App (Consumption or Flex Consumption plan).
|
|
|
|
After deployment:
|
|
1. Copy the Function Key from Azure Portal → Function App → App Keys
|
|
2. Set in Management API config:
|
|
- `Registration:BaseUrl` = `https://your-function-app.azurewebsites.net/api`
|
|
- `Registration:FunctionKey` = `<key from portal>`
|
|
|
|
These can be set as Azure Container App environment variables:
|
|
```
|
|
Registration__BaseUrl=https://your-function-app.azurewebsites.net/api
|
|
Registration__FunctionKey=<key>
|
|
```
|
|
|
|
## Mock Applicants
|
|
|
|
The mock data includes 4 test applicants representing the target market
|
|
(small businesses with low ad spend thresholds):
|
|
|
|
| Business | Category | Payment Verified | Days Waiting |
|
|
|----------|----------|-----------------|-------------|
|
|
| Bella's Boutique | Retail | Yes | 3 |
|
|
| Pacific Coast Plumbing | Home Services | Yes | 1 |
|
|
| Sunrise Dental Group | Healthcare | No | ~0.25 |
|
|
| FreshBite Meal Prep | Food & Beverage | Yes | ~0.08 |
|