E-POWER · System & Integrationsប្រព័ន្ធ និងការតភ្ជាប់
System & Integrationsប្រព័ន្ធ និងការតភ្ជាប់
Startup, database migrations, the release pipeline, security, configuration, localization and the accounting bridge. ការចាប់ផ្តើម Migration ការចេញផ្សាយកំណែ សុវត្ថិភាព ការកំណត់ ភាសា និងស្ពានគណនេយ្យ។
1. Application startupការចាប់ផ្តើមកម្មវិធី
- Environment & connectionបរិយាកាស និងការតភ្ជាប់ Systemប្រព័ន្ធ
Skin, Khmer font, culture from the saved language; the encrypted connection profile is decrypted and service URLs resolved. រូបរាង ពុម្ពអក្សរខ្មែរ ភាសាដែលរក្សាទុក; ការតភ្ជាប់អ៊ិនគ្រីបត្រូវឌិគ្រីប និង URL សេវាកំណត់។ - Windows servicesសេវា Windows
MSDTC (distributed transactions) auto-starts, elevating to admin if needed. MSDTC ចាប់ផ្តើមស្វ័យប្រវត្តិ ដោយស្នើសិទ្ធិ Admin បើចាំបាច់។ - DB migrationsMigration មូលដ្ឋានទិន្នន័យ
The version chain runs one by one; each compares itself to the DB VERSION, applies its SQL in one transaction, then stamps the new version. ខ្សែកំណែដំណើរការម្តងមួយ; នីមួយៗប្រៀបធៀបនឹង VERSION ក្នុង DB អនុវត្ត SQL ក្នុងប្រតិបត្តិការមួយ រួចកត់កំណែថ្មី។ - Auto-update check → loginពិនិត្យបច្ចុប្បន្នភាព → ចូលប្រើ
See the release flow below; an unreachable update service is skipped so offline sites keep working. Then the login dialog opens. មើលដំណើរការចេញផ្សាយខាងក្រោម; បើសេវាមិនអាចទាក់ទងបាន ត្រូវរំលង ដើម្បីឲ្យទីតាំងគ្មានអ៊ីនធឺណិតដំណើរការបាន។ បន្ទាប់មកផ្ទាំងចូលប្រើបើក។
2. Release & auto-updateការចេញផ្សាយ និងបច្ចុប្បន្នភាពស្វ័យប្រវត្តិ
- Build & versionBuild និងកំណែ Developerអ្នកអភិវឌ្ឍ
The newest migration class defines the app's version identity; registered in the updater chain, project file and AssemblyInfo. Class Migration ថ្មីបំផុត កំណត់អត្តសញ្ញាណកំណែកម្មវិធី; ចុះក្នុងខ្សែ Updater ឯកសារគម្រោង និង AssemblyInfo។ - Package the zipវេចខ្ចប់ Zip
v7.x.y.z.zipwith the changed binaries at the zip root (password 123):EPower.exe,EPower.Base.dll, plus config/reports when changed.v7.x.y.z.zipដាក់ Binary ដែលផ្លាស់ប្តូរនៅ Root (ពាក្យសម្ងាត់ 123)៖EPower.exe,EPower.Base.dllនិង config/report បើផ្លាស់ប្តូរ។ - Publish to the updater serviceផ្សាយទៅសេវា Updater
Upload the zip, create the version, point the licensee ceiling (NA = all condo sites) at it. Upload Zip បង្កើតកំណែ រួចចង្អុលពិដាន Licensee (NA = គ្រប់ទីតាំងខុនដូ) ទៅវា។ - Clients update at startupកម្មវិធីអតិថិជនធ្វើបច្ចុប្បន្នភាពពេលបើក Every siteគ្រប់ទីតាំង
Newer versions force the update (declining exits); all intermediate zips download and apply oldest→newest, the app relaunches, and the new exe runs its DB migrations. កំណែថ្មីបង្ខំធ្វើបច្ចុប្បន្នភាព (បដិសេធ = បិទកម្មវិធី); Zip កណ្តាលទាំងអស់ទាញ និងអនុវត្តតាមលំដាប់ កម្មវិធីបើកឡើងវិញ ហើយ EXE ថ្មីដំណើរការ Migration។
Conditionsលក្ខខណ្ឌ
- Per-site gating uses a unique licensee matching the site's AREA_CODE; never overwrite a non-blank AREA_CODE on a prepaid site (it's burned into the smart-cards). ការកំណត់តាមទីតាំង ប្រើ Licensee ត្រូវនឹង AREA_CODE; កុំសរសេរជាន់ AREA_CODE នៅទីតាំងបង់មុន (វានៅក្នុងកាត)។
- If the exe version is older than the DB version, the app locks until updated. បើកំណែ EXE ចាស់ជាង DB កម្មវិធីជាប់សោរហូតដល់ធ្វើបច្ចុប្បន្នភាព។
3. Security & sessionsសុវត្ថិភាព
| Concernចំណុច | Mechanismយន្តការ |
|---|---|
| User login & permissionsចូលប្រើ និងសិទ្ធិ | SoftTech security — role/permission checks on every sensitive buttonSoftTech Security — ពិនិត្យសិទ្ធិលើប៊ូតុងសំខាន់ៗទាំងអស់ |
| Cashier shiftវេនអ្នកគិតលុយ | Money actions require an open cash drawerប្រតិបត្តិការប្រាក់ត្រូវការកេះដាក់ប្រាក់បើករួច |
| Backend API authសុវត្ថិភាព API | Keycloak service-account token, auto-refreshedToken Keycloak បន្តជាថ្មីស្វ័យប្រវត្តិ |
| Secretsព័ត៌មានសម្ងាត់ | Service URLs/credentials AES-encrypted in the utility table; SQL connection encrypted in user settingsURL/គណនី អ៊ិនគ្រីប AES ក្នុងតារាងកំណត់; ការតភ្ជាប់ SQL អ៊ិនគ្រីបក្នុងការកំណត់អ្នកប្រើ |
4. Configuration layersស្រទាប់ការកំណត់
| Layerស្រទាប់ | Storeកន្លែងរក្សា | Examplesឧទាហរណ៍ |
|---|---|---|
| System utilitiesការកំណត់ប្រព័ន្ធ | TBL_UTILITY | Feature flags, service URLs, cut-off amount/days, DB VERSIONមុខងារ URL សេវា ចំនួន/ថ្ងៃផ្តាច់ចរន្ត VERSION |
| Per-user settingsតាមអ្នកប្រើ | Settings.settings | Language, printers, report template, encrypted connectionsភាសា ម៉ាស៊ីនបោះពុម្ព គំរូរបាយការណ៍ ការតភ្ជាប់អ៊ិនគ្រីប |
| Per-customer settingsតាមអតិថិជន | TBL_CUSTOMER_SETTING | Print bill, digital bill participationបោះពុម្ពវិក្កយបត្រ វិក្កយបត្រឌីជីថល |
| Grid layoutsប្លង់តារាង | TLKP_FILTER_OPTION | Saved report templatesគំរូរបាយការណ៍រក្សាទុក |
5. Localizationភាសា
Khmer is the default; English lives in the en-GB resources — new strings are added to both. Embedded pages re-translate at runtime; Crystal Reports resolve from a language-suffixed folder. ខ្មែរជាលំនាំដើម; អង់គ្លេសនៅក្នុងធនធាន en-GB — អក្សរថ្មីត្រូវបន្ថែមទាំងពីរ។ ទំព័របកប្រែឡើងវិញពេលដំណើរការ; Crystal Reports ផ្ទុកពីថតតាមភាសា។
6. Accounting push (Pointer ERP)ការបញ្ជូនគណនេយ្យ (Pointer ERP)
- Triggerចាប់ផ្តើម Backgroundផ្ទៃខាងក្រោយ
After bill runs and from the main pages, posting runs when Pointer is connected. ក្រោយចេញវិក្កយបត្រ និងពីទំព័រមេ ការបញ្ជូនដំណើរការពេល Pointer ភ្ជាប់។ - Guarded windowចន្លោះការពារ
Posting clamps to dates after the last opening balance so closed periods are never re-posted. បញ្ជូនតែក្រោយសមតុល្យបើកចុងក្រោយ ដើម្បីកុំបញ្ជូនរយៈពេលបិទរួចម្តងទៀត។ - Push in orderបញ្ជូនតាមលំដាប់
Invoices → Payments → Deposits → Prepayments → Adjustments → Bills, each building journal entries mapped to Pointer accounts per currency. វិក្កយបត្រ → ការបង់ប្រាក់ → តម្កល់ → បង់មុន → កែសម្រួល → វិក្កយបត្រទិញ ដោយបង្កើតបញ្ជីគណនេយ្យតាមគណនី Pointer និងរូបិយប័ណ្ណ។ - Review in the Accounting moduleពិនិត្យក្នុងម៉ូឌុលគណនេយ្យ
Chart of accounts, journal review, fixed assets and account-mapping screens. គណនី បញ្ជីគណនេយ្យ ទ្រព្យសកម្ម និងផ្ទាំងផ្គូផ្គងគណនី។
7. Data-integrity safeguardsការការពារភាពត្រឹមត្រូវទិន្នន័យ
Invariants enforced at the databaseគោលការណ៍អនុវត្តនៅ Database
- The invoice trigger (INSERT + UPDATE) guarantees a 0-amount invoice can never appear "paid" without a real settlement — even from the encrypted vendor bill-run procs. Legitimate settlement sweeps are exempted via their 0-amount receipt link or the group's real payment in the month. Trigger វិក្កយបត្រ (INSERT + UPDATE) ធានាថាវិក្កយបត្រ 0 មិនអាចបង្ហាញ "បង់ហើយ" ដោយគ្មានការទូទាត់ពិត — សូម្បីតែពី Proc ដើមអ៊ិនគ្រីប។ ការបិទស្របច្បាប់ លើកលែងតាមតំណបង្កាន់ដៃ 0 ឬការបង់ប្រាក់ពិតរបស់ក្រុមក្នុងខែ។
- All multi-table money flows run inside distributed transactions (MSDTC). រាល់លំហូរប្រាក់ច្រើនតារាង ដំណើរការក្នុងប្រតិបត្តិការចែកចាយ (MSDTC)។
- History is corrected by compensating entries (reversals, adjustments, status journals) — never by deletion. ប្រវត្តិកែដោយបញ្ចូលទូទាត់បដិសេធ (បដិសេធ កែសម្រួល កំណត់ត្រាស្ថានភាព) — មិនដែលលុបចោលឡើយ។
8. Integration endpointsចំណុចតភ្ជាប់
| Serviceសេវា | Used forប្រើសម្រាប់ |
|---|---|
| CoreAPI | Bill run, receive payment, meter/modem/relay, change meterចេញវិក្កយបត្រ ទទួលប្រាក់ កុងទ័រ/Modem/Relay ប្តូរកុងទ័រ |
| epower-updater | Version releases per licenseeការចេញផ្សាយកំណែតាម Licensee |
| Bill24 / DigitalBill | Digital bills + KHQRវិក្កយបត្រឌីជីថល + KHQR |
| ACLEDA | Bank payment export/importទូទាត់តាមធនាគារ |
| AMR / EDMI | Smart meter reads & relayអានកុងទ័រ និង Relay |
| EAC App | Regulator reportingរបាយការណ៍និយតករ |
| Mailអ៊ីមែល | Scheduled email reportsរបាយការណ៍តាមកាលវិភាគ |