Initial import into Gitea
This commit is contained in:
91
Registration/README.md
Normal file
91
Registration/README.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# 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 |
|
||||
Reference in New Issue
Block a user