diff options
| author | Aldrik Ramaekers <aldrik@mailbox.org> | 2026-01-09 11:45:12 +0100 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik@mailbox.org> | 2026-01-09 11:45:12 +0100 |
| commit | a65e876f3277a7d7fca6e5129ac3e200dae2d0dc (patch) | |
| tree | 3d777dca9e07bf1fbd4a8641e1a4719094ac7789 /include | |
| parent | 8bdab613289e2626173de8bff31e7078dd03a16e (diff) | |
save all ai service configs
Diffstat (limited to 'include')
| -rw-r--r-- | include/administration.hpp | 18 | ||||
| -rw-r--r-- | include/file_templates.hpp | 16 |
2 files changed, 24 insertions, 10 deletions
diff --git a/include/administration.hpp b/include/administration.hpp index 5c39d59..2179301 100644 --- a/include/administration.hpp +++ b/include/administration.hpp @@ -44,6 +44,8 @@ #define MAX_LEN_PROJECT_REPORT_COSTCENTERS 50 #define MAX_BILLING_ITEMS 50 +#define MAX_AI_SERVICES AI_PROVIDER_END + #define ACTIVITY_MAX_PARAMS 3 #define ACTIVITY_USER "user" #define ACTIVITY_SYSTEM "system" @@ -394,7 +396,8 @@ typedef void (*project_changed_event)(project* project); typedef enum { AI_PROVIDER_OPENAI = 0, - //AI_PROVIDER_DEEPSEEK = 1, + AI_PROVIDER_GEMINI = 1, + AI_PROVIDER_PERPLEXITY = 2, AI_PROVIDER_END, } ai_provider; @@ -403,7 +406,7 @@ typedef struct { ai_provider provider; char model_name[MAX_LEN_SHORT_DESC]; - char api_key_public[MAX_LEN_API_KEY]; + char api_key_public[MAX_LEN_API_KEY]; // @TODO rename to api_key } ai_service; typedef enum @@ -449,7 +452,10 @@ typedef struct list_t invoices; // Service providers. - ai_service ai_service; + u32 ai_service_count; + ai_service all_ai_services[MAX_AI_SERVICES]; + ai_service ai_service; // @TODO rename to active_ai_service + email_service email_service; } ledger; @@ -518,12 +524,14 @@ namespace administration { char* get_currency_symbol_for_currency(char* code); char* get_default_currency(); time_t get_default_invoice_expire_duration(); - ai_service get_ai_service(); + ai_service get_active_ai_service(); + ai_service get_ai_service(ai_provider provider); email_service get_email_service(); void set_file_path(char* path); void set_next_id(s32 nr); void set_next_sequence_number(s32 nr); - void set_ai_service(ai_service provider); + void set_active_ai_service(ai_service provider); + void import_ai_service(ai_service provider); void set_email_service(email_service provider); void create_income_statement(income_statement* statement); bool company_info_is_valid(); diff --git a/include/file_templates.hpp b/include/file_templates.hpp index ec78cb7..b79b5bf 100644 --- a/include/file_templates.hpp +++ b/include/file_templates.hpp @@ -61,16 +61,22 @@ namespace file_template { " </Address>\n" "</Contact>"; + static const char* ai_service_template = + " <AIService>\n" + " <Provider>{{AI_SERVICE_PROVIDER}}</Provider>\n" + " <PublicKey>{{AI_SERVICE_KEY}}</PublicKey>\n" + " <Model>{{AI_SERVICE_MODEL}}</Model>\n" + " </AIService>\n"; + static const char* administration_save_template = "<Administration>\n" " <NextId>{{NEXT_ID}}</NextId>\n" " <NextSequenceNumber>{{NEXT_SEQUENCE_NUMBER}}</NextSequenceNumber>\n" " <ProgramVersion>{{PROGRAM_VERSION}}</ProgramVersion>\n" - " <AIService>\n" - " <Provider>{{AI_SERVICE_PROVIDER}}</Provider>\n" - " <PublicKey>{{AI_SERVICE_PUBLIC_KEY}}</PublicKey>\n" - " <Model>{{AI_SERVICE_MODEL}}</Model>\n" - " </AIService>\n" + " <AIServices>\n" + " <Provider>{{ACTIVE_AI_SERVICE_PROVIDER}}</Provider>\n" + " {{AI_SERVICE_LIST}}\n" + " </AIServices>\n" " <EmailService>\n" " <Provider>{{EMAIL_SERVICE_PROVIDER}}</Provider>\n" " <PublicKey>{{EMAIL_SERVICE_KEY}}</PublicKey>\n" |
